/**
 * Created by Jady on 22/11/2017.
 */
'use strict'

angular.module('RECRUIT').controller('CommitteeSetup', function ($scope, $mdDialog, RecService, SwapLang, $filter) {
  $scope.clsFormApplicant = new FormApplicant()
  $scope.dbName = ''
  $scope.lang = getLang()
  $scope.del_olddata = "1"
  $scope.swaplang = new swaplang();
  let cscForm = document.cscform
  $scope.job = {}
  let referrelist = [] // for get employee to search
  $scope.committee =[]
  $scope.seqlist = []
  $scope.isgetreferre = false
  $scope.hascommittee = false
  $scope.status_desc = [{
    status: 'N',
    desc:{
      tha: 'ยังไม่มีใบประเมิน',
      eng: 'Document Not Created'
    }
  },{
    status: '0',
    desc:{
      tha: 'ยังไม่ได้ประเมิน',
      eng: 'Not Evaluated'
    }
  },{
    status: '1',
    desc:{
      tha: 'บันทึกร่าง',
      eng: 'Save Draff'
    }
  },{
    status: '2',
    desc:{
      tha: 'ประเมินแล้ว',
      eng: 'Success'
    }
  }]

  let initSeqCommit = () =>{
    $scope.seqlist = []
    for(let i=1; i<=$scope.committee.length; i++){
      let data = {
        value : i
      }
      $scope.seqlist.push(data)
    }
  }

  let getMasterData = () =>{
    // Get Job
    RecService.JobController.query({jobid: "'"+$scope.clsFormApplicant.formApplicant.jobid+"'"}).$promise.then(function (data) {
      $scope.job = data.job[0][`jobdesc_${$scope.lang}`]
    })
    // Get Referre
    RecService.GetMreferee.get().$promise.then(function (data) {
      referrelist = data.referee
      $scope.isgetreferre = true
    })
  }

  $scope.queryCandidate = (canid) => {
    RecService.RestMcandidate.getQuery({id: canid}).$promise.then(function (data) {
      angular.merge($scope.clsFormApplicant.formApplicant, data.result)
      // console.log(data.result)
      getMasterData()
      queryCommittee($scope.clsFormApplicant.formApplicant.applicantid, canid);
    })
  }
  
  $scope.queryApplicant = (appid) => {  // canid = > appid
    RecService.RestMapplicant.getQuery({appid: appid}).$promise.then(function (data) {
      angular.merge($scope.clsFormApplicant.formApplicant, data.result)
      // console.log(data.result)
      getMasterData()
      queryCommittee(appid, 0);
    })
  }

  let queryCommittee = (appid,canid) => {
    let param = {
      'canid' : canid,
      'appid' : appid
    }
    
    RecService.ManageCommittee.query(param).$promise.then(function (data) {
      angular.merge($scope.committee, data.committee)
      //console.log(data);
      initSeqCommit()
      $scope.hascommittee = data.hascommittee
    })
  }

  $scope.addCommittee = () =>{
    let data ={
      employeeid: '',
      fullname: '',
      bu1: '',
      bu2: '',
      bu3: '',
      bu4: '',
      bu5: '',
      position: '',
      job: '',
      seq: '1',
      apsstatus: 'N'
    }
    $scope.committee.push(data)
    initSeqCommit()
  }

  $scope.delCommittee = (index) =>{
    $scope.committee.splice(index,1);
    initSeqCommit()
  }

  // Call MD-Dialog
  $scope.SearchCommittee = function(ev, index) {
    $mdDialog.show({
      controller: $scope.searchCommitteeCtrl,
      templateUrl: 'DIALOGTEMPLATE/SearchCommittee.html',
      parent: angular.element(document.body),
      targetEvent: ev,
      clickOutsideToClose:true,
    }).then(function(empID = null) {
      if(empID != null){
        setEmptoCOmmitee(empID, index, ev)
      }
    })
  };

  // MD-Dialog Controller
  $scope.searchCommitteeCtrl = ($scope, $mdDialog, RecService) => {
    $scope.referrelist = referrelist

    $scope.hide = () => {
      $mdDialog.hide()
    };

    $scope.setEmpItem = (empID) =>{
      $mdDialog.hide(empID)
    }

    $scope.callDataTable = () => {
      $('#datareferre').DataTable()
    }
  }

  let setEmptoCOmmitee = (empID, index, ev) => {
    let empItem = $filter('filter')(referrelist, {employeeid:empID}, true)

    if(chkDuplicateCommittee(empID)){
      angular.merge($scope.committee[index], empItem[0] )
    }else{
      showAlert(ev)
    }
    // console.log($scope.committee);
  }

  let chkDuplicateCommittee = (empID) => {
    let result = true
    let finDuplicate = $filter('filter')($scope.committee, {employeeid:empID}, true)
    if(finDuplicate.length > 0){
      result = false
    }
    return result
  }

  // Call MD-Dialog alert
  let showAlert = function(ev) {
    $mdDialog.show(
      $mdDialog.alert()
        .parent(angular.element(document.querySelector('#popupContainer')))
        .clickOutsideToClose(true)
        //.title('alert Dialog')
        .textContent('มีกรรมการท่านนี้แล้ว กรุณาเลือกกรรมการใหม่')
        //.ariaLabel('Alert Dialog')
        .ok('ตกลง')
        .targetEvent(ev)
    );
  };

  $scope.save = function(save_type){
    if(chkdata()){
      if (confirm(MyCode[1])){
        $scope.sendparam = setParamToSave(save_type)
        RecService.ManageCommittee.save(JSON.stringify($scope.sendparam)).$promise.then(function(){
          alert(MyCode[18]);
          $scope.hascommittee = true
        });
      }
    }else{
      alert('กรุณาเลือกกรรมการ')
    }
  }

  let chkdata = () => {
    let result = false
    for(let i=0;i<$scope.committee.length;i++){
      if($scope.committee[i].employeeid != ''){
        result = true
      }else{
        result = false
      }
    }
    return result
  }

  let setParamToSave = (save_type) => {
    let arr_committeelist = []

    for(let i=0;i<$scope.committee.length;i++){
      let data = {
        committeeid : $scope.committee[i].employeeid,
        seq : $scope.committee[i].seq
      }
      arr_committeelist.push(data)
    }

    let obj_param = {
      candidateid : chkUndefind($scope.clsFormApplicant.formApplicant.candidateid),
      applicantid : chkUndefind($scope.clsFormApplicant.formApplicant.applicantid),
      committeelist : JSON.stringify(arr_committeelist),
      savetype : save_type,
      del_olddata : $scope.del_olddata
    }
    console.log(obj_param);
    return obj_param
  }

  let chkUndefind = (data) =>{
    if(data == undefined){
      return '0'
    }else{
      return data
    }
  }

  $scope.viewApsForm = (committeeid) =>{
    let pageName = ''
    let jobid = $scope.clsFormApplicant.formApplicant.jobid


    $('input[name="committeeid"]').val(committeeid);
    $('input[name="jobid"]').val(jobid);

    $('form[name="cscform"]').attr('target','myform');

    if ($scope.dbName.toUpperCase() === ("STD_NEW")) {
      pageName = "../APS_FORM_INTERVIEW_DHAS.jsp";
    } else if ($scope.dbName.toUpperCase() === ("DHAS")) {
      pageName = "../APS_FORM_INTERVIEW_DHAS.jsp";
    } else if ($scope.dbName.toUpperCase() === ("ITE")) {
      pageName = "../APS_FORM_INTERVIEW_ITE.jsp";
    } else if ($scope.dbName.toUpperCase() === ("KOKOTEL")) {
      pageName = "../APS_FORM_INTERVIEW_KOKOTEL.jsp";
    } else if ($scope.dbName.toUpperCase() === ("NHSO")) {
      if (jobid.toUpperCase() === ("S") || jobid.toUpperCase() === ("E") || jobid.toUpperCase() === ("O")) {
        pageName = "../APS_FORM_INTERVIEW_NHSO.jsp";
      } else {
        pageName = "../APS_FORM_INTERVIEW_NHSO_MT.jsp";
      }
    } else {
      pageName = "../APS_FORM_INTERVIEW_DHAS.jsp";
    }


    $('form[name="cscform"]').attr('action', pageName);

    var winopen = window.open('','myform','left=150,top=150,width=2000,height=2000,toolbar=no,status=yes,scrollbars=yes,resizable=yes');
    if (winopen){
      $('form[name="cscform"]').submit();
      winopen.focus();
    }
  }

  $scope.getApsStatus = (index) =>{
    let result = ''
    let arr = []
      if($scope.committee.length > 0){
        arr =  $filter('filter')($scope.status_desc, {status:$scope.committee[index].apsstatus}, true)
        result = arr[0].desc[$scope.lang]
      }
    return result
  }

  $scope.showConfirm = function(ev) {
    var confirm = $mdDialog.confirm()
      .title('ต้องการประมวลผลโดยลบข้อมูลเก่าหรือไม่')
      .textContent('ข้อมูลใบประเมินเก่าจะถูกลบและสร้างใหม่')
      .ariaLabel('Process Confirm')
      .targetEvent(ev)
      .ok('ลบ')
      .cancel('ไม่ลบ');

    $mdDialog.show(confirm).then(function() {
      $scope.del_olddata = '1'; // ok
      $scope.save('1')
    }, function() {
      $scope.del_olddata = '0';  // cancel
      $scope.save('1')
    });
  };

  $scope.chkPage = () =>{
    let page = $("input[name='parentPage']").val()
    let result = false 

    if(page == 'applicant'){
      result = true
    }
    return result
  }

  // Jquery Zone

  // End Jquery
})