'use strict'

angular.module('EXAM').controller('ExamUpload', ['$scope', '$http', '$sce', 'data', 'filetype', '$mdDialog', 'EXAMSERVICES', function($scope, $http, $sce, data, filetype, $mdDialog, EXAMSERVICES){
  //$scope.img = PassingPicture
  $scope.uploadobj = {
    img: '',
    audio: {
      isaudio: false,
      path: 'UPLOAD/AUDIO/',
      name: '',
      getPath: function(){
        return this.path+this.name
      }
    },
    video: {
      previewstatus: false, //true for show
      inputvideo: '',
      videolink: '',
    }
  }
  $scope.returnobj = {
    filename: '',
    status: false
  }
  $scope.waitloding = false
  $scope.pathfile = pathfile

  if (filetype === 'picture'){
    $scope.uploadobj.img = data
    $scope.returnobj.filename = data
    if (data != 'defaultperson.jpg'){
      $scope.returnobj.status = true
    }
  } else if (filetype === 'audio'){
    if (data !== ''){
      $scope.uploadobj.audio.name = data
      $scope.uploadobj.audio.isaudio = true
      $scope.returnobj.filename = data
      $scope.returnobj.status = true
    }
  } else if (filetype === 'video'){
    if (data != ''){
      $scope.uploadobj.video.inputvideo = data
      $scope.uploadobj.video.videolink = $sce.trustAsResourceUrl(data)
      $scope.uploadobj.video.previewstatus = true
      $scope.returnobj.filename = data
      $scope.returnobj.status = true
    }
  }

  $scope.openUploadPicture = function(){
    $('input[name="uppic"]').click()
    let i = 0

    $('input[name="uppic"]').change(function(){
      if (i === 0){
        $scope.waitloding = true
        let objfile = $(this)[0].files[0]
        let filename = objfile.name.substring(0, objfile.name.indexOf('.'))
        let filetype = objfile.name.substring(objfile.name.indexOf('.')+1, objfile.name.length)
        let ranfile = ''
        for (let i=0; i<filename.length; i++){
          ranfile += filename.charAt(Math.floor(Math.random() * filename.length))
        }

        let fd = new FileReader()
        fd.onload = function(){
          let dataurl = fd.result
          $('.tmppicture').attr('src', dataurl)
          dataurl = dataurl.substring(dataurl.indexOf(',')+1, dataurl.length)
          let objfile = {
            filedata: dataurl,
            despath: pathfile.images,
            filename: ranfile,
            filetype: filetype
          }

          EXAMSERVICES.UploadFileExam.save(objfile).$promise.then(function(result){
            $scope.waitloding = false
            $scope.uploadobj.img = ranfile+'.'+filetype
            $scope.returnobj.filename = ranfile+'.'+filetype
            $scope.returnobj.status = true
          }, function(){
            $mdDialog.cancel()
          })
        }
        fd.readAsDataURL(objfile)
        i++
      }
    })
  }

  $scope.deletePicture = function(){
    $scope.uploadobj.img = 'defaultperson.jpg'
    $scope.returnobj.filename = $scope.uploadobj.img
    $scope.returnobj.status = false

    $('.tmppicture').attr('src', 'UPLOAD/PICTURE/defaultperson.jpg')
  }

  $scope.openUploadAudio = function(){
    $('input[name="upaudio"]').click()
    let i = 0

    $('input[name="upaudio"]').change(function(){
      if (i === 0){
        $scope.waitloding = true
        let fd = new FileReader()
        let objfile = $(this)[0].files[0]
        let filename = objfile.name.replace(/ /g, '')
        let filetype = objfile.name.substring(objfile.name.indexOf('.')+1, objfile.name.length)
        let ranfile = ''

        filename = filename.substring(0, filename.indexOf('.'))
        for (let i=0; i<filename.length; i++){
          ranfile += filename.charAt(Math.floor(Math.random() * filename.length))
        }


        fd.onload = function(){
          let dataurl = fd.result
          dataurl = dataurl.substring(dataurl.indexOf(',')+1, dataurl.length)
          let objfile = {
            filedata: dataurl,
            despath: pathfile.audio,
            filename: ranfile,
            filetype: filetype
          }

          EXAMSERVICES.UploadFileExam.save(objfile).$promise.then(function(result){
            $scope.waitloding = false
            $('source').attr('src', $scope.uploadobj.audio.path+ranfile+'.'+filetype)
            $('.myaudio').load()
            $scope.uploadobj.audio.isaudio = true
            $scope.uploadobj.audio.name = ranfile+'.'+filetype
            $scope.returnobj.filename = ranfile+'.'+filetype
            $scope.returnobj.status = true
          }, function(){
            $mdDialog.cancel()
          })
        }
        fd.readAsDataURL(objfile)
        i++
      }
    })
  }

  $scope.deleteAudio = function(){
    $scope.uploadobj.audio.name = ''
    $scope.uploadobj.audio.isaudio = false
    $scope.returnobj.status = false
    $scope.returnobj.filename = ''
  }

  $scope.previewVideo = function(){
    if ($scope.uploadobj.video.inputvideo != ''){
      let linkname = $scope.uploadobj.video.inputvideo

      if (linkname.includes('embed')){
        if (linkname.includes('src=')){
          linkname = linkname.substring(linkname.indexOf('src=')+4, linkname.length)
          linkname = linkname.substring(linkname.indexOf('"')+1, linkname.indexOf('"', 2))
        }
      } else if (linkname.includes('/watch?v=')){
        linkname = 'https://www.youtube.com/embed/'+linkname.substring(linkname.lastIndexOf('v=')+2, linkname.length)
      } else {
        if (linkname.lastIndexOf('/') > 0){
          linkname = 'https://www.youtube.com/embed/'+linkname.substring(linkname.lastIndexOf('/')+1, linkname.length)
        }
      }
      $scope.uploadobj.video.videolink =  $sce.trustAsResourceUrl(linkname)
      $scope.uploadobj.video.previewstatus = true
      $scope.returnobj.filename = linkname
      $scope.returnobj.status = true
    } else {
      $scope.uploadobj.video.previewstatus = false
      $scope.uploadobj.video.videolink = ''
      $scope.returnobj.filename = ''
      $scope.returnob.status = false
    }
  }

  $scope.close = function(){
    $mdDialog.hide($scope.returnobj)
  }

  $('.templateTest').load(function(){
    console.log('loading now')
  })
}])