'use strict'

angular.module('APS_INTERVIEW').controller('APS_FORM_INTERVIEW_DHAS_RESULT', ['$scope', '$http', '$sce', 'InterviewcandidateCtrl', 'RecService', function($scope, $http, $sce, InterviewcandidateCtrl, RecService){
  $scope.candidateid = $('input[name="candidateid"]').val()
  $scope.committeeid = $('input[name="committeeid"]').val()
  $scope.jobid = $('input[name="jobid"]').val()
  $scope.judge = $('input[name="judge"]').val()
  $scope.notedit = ($('input[name="notedit"]').val() == 'true')
  $scope.lang = $('input[name="lang"]').val()
  $scope.contextPath = ''
  $scope.listJudge = []
  $scope.jobDetail = {}
  $scope.candidate = {}
  $scope.headdata = {
    fullname: '',
    job: '',
    status: 0,
    committee_fullname: '',
    apsdate: '',
    jobrouter: ''
  }
  $scope.formdata = {
    form: '',
    comment: '',
    job_other: '',
    appropriate: '',
    apsdate: '',
    status: 0,
  }
  $scope.previous = []
  let question = new Question()
  $scope.examdata = {}
  $scope.score2 = ''
  $scope.score3 = ''
  $scope.score4 = ''
  $scope.isReady = false

  let DocumentContainer
  let WindowObject

  $scope.comment = [{
    comment:'',
    appropriate:0
  }]
  $scope.apsform = [{
    percentFromHr: '',
    percentFromDept: '',
    jobName: '',
    jobCode: '',
    basicallyScore: '',
    managementScore: '',
    sumScore: '',
    estimatePercentJob: '',
    resultFromDept: '',
    hire: '',
    remarkFromDept: '',
    incentives: [{
      name: 'ค่าเดินทาง / ค่าน้ำมันรถจักรยานยนต์',
      cost: '',
      startDate: ''
    },{
      name: 'ค่าเบี้ยเลี้ยง',
      cost: '',
      startDate: ''
    },{
      name: '',
      cost: '',
      startDate: ''
    },{
      name: '',
      cost: '',
      startDate: ''
    }],
    hr: {
      score: '',
      multiple: '',
      incomeWithBonus: '',
      incomeWithoutBonus: '',
      basicSalary: '',
      qpi: '',
      m1pi: '',
      m3pi: ''
    },
    ex: {
      result: '',
      other: '',
      estimateIncome : '',
      otherEstimateIncome: ''
    },
    seniorEx: {
      remark: '',
    },
    sign: {
      manager: '',
      hr: '',
      ex: '',
      seniorEx: ''
    },
    appropriate: '',
    job_other: ''
  }]

  $scope.myparam = {
    candidateid: $scope.candidateid,
    committeeid: $scope.committeeid,
    judge: $scope.judge
  };
  InterviewcandidateCtrl.manageInterviewForm.getListJudge( $scope.myparam).$promise.then(function(data){
    $scope.listJudge = data.result
  })

  RecService.RestMjobcode.getQuery({id: $scope.jobid}).$promise.then(function(data){
    $scope.jobDetail = data.result

  })

  InterviewcandidateCtrl.manageInterviewForm.query($scope.myparam).$promise.then(function(data){

    $scope.headdata = data.header
    $scope.formdata = data.apsform
    $scope.previous = data.previous
    setFormAPS()
    $scope.isReady = true
  })

  RecService.RestMcandidate.getQuery({id: $scope.candidateid}).$promise.then(function (data){
    $scope.candidate = data.result;
    setExamData1()
    setExamScore2()
    setExamScore3()
    setExamScore4()
    setExamScore5()
  })



  // $scope.$watch('formdata.form', function (data) {
  //   let listActor = ['manager', 'hr', 'ex', 'seniorEx']
  //   if (data[0]) {
  //     $scope.formdata.form[0].sign[listActor[parseInt('4')-1]] = $scope.headdata.committee_fullname
  //   }
  // })

  let  setExamData1 = () => {
    let data = $scope.candidate.jobrouter
    let router = {}
    let isReady = false

    for(let x=0;x<data.length;x++){
      if(data[x].examdata != null){
        if(data[x].examdata.topic.tha.includes("Personality") ||
            data[x].examdata.topic.eng.includes("Personality")){
          router = data[x]
          isReady = true
        }
      }
    }
    if(isReady){
      $scope.examdata = question.getDHASPIT(router)
    }
  }
  let setExamScore2 = () => {
    let data = $scope.candidate.jobrouter
    let router = {}
    let isReady = false

    for(let x=0;x<data.length;x++){
      if(data[x].examdata != null){
        if(data[x].examdata.topic.tha.includes("ความพร้อมหัวหน้างาน") ||
            data[x].examdata.topic.eng.includes("ความพร้อมหัวหน้างาน")){
          router = data[x]
          isReady = true
        }
      }
    }
    if(isReady){
      $scope.score2 = question.getRealScore(router.question)
    }
  }

  let setExamScore3 = () => {
    let data = $scope.candidate.jobrouter
    let router = {}
    let isReady = false

    for(let x=0;x<data.length;x++){
      if(data[x].examdata != null){
        if(data[x].examdata.topic.tha.includes("ความถนัดเชิงเหตุผลนามธรรม") ||
            data[x].examdata.topic.eng.includes("ความถนัดเชิงเหตุผลนามธรรม")){
          router = data[x]
          isReady = true
        }
      }
    }
    if(isReady){
      $scope.score3 = question.getRealScore(router.question)
    }
  }

  let setExamScore4 = () => {
    let data = $scope.candidate.jobrouter
    let router = {}
    let isReady = false

    for(let x=0;x<data.length;x++){
      if(data[x].examdata != null){
        if(data[x].examdata.topic.tha.includes("ADVANCE ENGLISH") ||
            data[x].examdata.topic.eng.includes("ADVANCE ENGLISH")){
          router = data[x]
          isReady = true
        }
      }
    }
    if(isReady){
      $scope.score4 = question.getRealScore(router.question)
    }
  }

  let setExamScore5 = () => {
    let data = $scope.candidate.jobrouter
    let router = {}
    let isReady = false

    for(let x=0;x<data.length;x++){
      if(data[x].examdata != null){
        if(data[x].examdata.topic.tha.includes("คณิตศาสตร์") ||
            data[x].examdata.topic.eng.includes("คณิตศาสตร์")){
          router = data[x]
          isReady = true
        }
      }
    }
    if(isReady){
      $scope.score5 = question.getRealScore(router.question)
    }
  }

  $scope.getSumWorkCost = () => {
    return parseInt($scope.jobDetail.workcost1) + parseInt($scope.jobDetail.workcost2)
  }

  $scope.getResultHr = () => {
    let result = 0
    let findHr = $scope.previous.find(($item) => {
      return $item.header.dept.toUpperCase() === "HR"
    })
    if(findHr){
      for(var i = 0; i < findHr.apsform.form.length; i++){
        let form = findHr.apsform.form[i];
        result += parseInt(form.score)
      }
    }
    return (result / 50) * 100;
  }

  $scope.getResultDept = () => {
    let result = 0
    let findHr = $scope.previous.find(($item) => {
      return $item.header.dept.toUpperCase() === "DEPT" && $item.header.committeeid === $scope.committeeid
    })
    if(findHr){
      for(var i = 0; i < findHr.apsform.form.length; i++){
        let form = findHr.apsform.form[i];
        result += parseInt(form.score)
      }
    }
    return (result / 50) * 100;
  }



  let setFormAPS = () => {
    if($scope.formdata.form == ''){
      $scope.formdata.form = $scope.apsform
    }else {
      $scope.formdata.form = jQuery.parseJSON($scope.formdata.form)
    }
    if($scope.formdata.comment == ''){
      $scope.formdata.comment = $scope.comment
    }else {
      $scope.formdata.comment = jQuery.parseJSON($scope.formdata.comment)
    }
  }

  $scope.getSumScore = () => {
    let result = 0
    if($scope.formdata.form != undefined){
      for(var i = 0; i <$scope.formdata.form.length; i++){
        let form = $scope.formdata.form[i];
        result += parseInt(form.score)
      }
    }
    return result;
  }

  $scope.getSumScoreByForm = ($form) => {
    let result = 0
    if($form != undefined){
      for(var i = 0; i < $form.length; i++){
        let sform = $form[i];
        result += parseInt(sform.score)
      }
    }
    return (result / 50).toFixed(2);
  }

  $scope.getSumScoreByScoreForm = ($form, score) => {
    let result = 0
    if($form != undefined){
      for(var i = 0; i < $form.length; i++){
        let sform = $form[i];
        if(sform.score == score){
          result += parseInt(sform.score)
        }
      }
    }
    return (result / 50).toFixed(2);
  }

  $scope.getSumScoreByScore = (score) => {
    let result = 0
    if($scope.formdata.form != undefined){
      for(var i = 0; i <$scope.formdata.form.length; i++){
        let form = $scope.formdata.form[i];
        if(form.score == score){
          result += parseInt(form.score)
        }
      }
    }
    return result;
  }

  $scope.addComment = () => {
    let data = {
      comment : ''
    }
    $scope.formdata.comment.push(data)
  }
  $scope.delComment = () => {
    $scope.formdata.comment.pop()
  }

  $scope.saveDraff = () => {
    if (confirm(MyCode[1])){
      $scope.sendparam = $scope.sendparam = setParam('0')
      InterviewcandidateCtrl.manageInterviewForm.save(JSON.stringify($scope.sendparam))
          .$promise.then(function(){
        alert(MyCode[18]);
        window.opener.location.reload();
      });
    }
  }

  $scope.save = () => {
    if(true){
      if (confirm(MyCode[1])){
        $scope.sendparam = setParam('1')
        InterviewcandidateCtrl.manageInterviewForm.save(JSON.stringify($scope.sendparam))
            .$promise.then(function(){
          alert(MyCode[18]);
          window.opener.location.reload();
        });
      }
    }else{
      alert('กรุณากรอกข้อมูลให้ครบถ้วน')
    }
  }

  let setParam = (type) => {
    let param = {
      headdata: $scope.headdata
      ,apsform: $scope.formdata
      ,savetype: type
    }
    return param
  }

  let chkData = () => {
    let result = true
    let objlist = $scope.formdata.form.filter((form) => form.score == 0)
    if (objlist.length>0){
      result = false
    }
    let objlist2 = $scope.formdata.comment.filter((comment) => comment.comment == 0)
    if (objlist2.length>0){
      result = false
    }
    let objlist3 = $scope.formdata.comment.filter((appropriate) => appropriate.appropriate == 0)
    if (objlist3.length>0){
      result = false
    }

    return result
  }

  $scope.goprint = function(){
    hidelement();
    promisePrint().then((obj) => {
      WindowObject.focus();
      console.log(WindowObject);
      // window.close();
      WindowObject.print();
    })
  }

  function promisePrint(){
    return new Promise((resolve, reject) => {
      DocumentContainer = document.getElementById('target_warpper');
      WindowObject = window.open('', 'PrintWindow', 'width=1200,height=666,top=10,right=10,toolbars=no,scrollbars=no,status=no,resizable=yes,scale=98%');
      WindowObject.document.writeln('<!DOCTYPE html>');
      WindowObject.document.writeln('<html><head><title></title>');
      WindowObject.document.writeln(`<link rel="stylesheet" type="text/css" href="${$scope.contextPath}/EMPVIEW/css/APP_UP/style_apsup.css">`);
      WindowObject.document.writeln(`<link rel="stylesheet" type="text/css" href="${$scope.contextPath}/EMPVIEW/css/APS_Interview/style_printInterview.css">`);
      WindowObject.document.writeln(`<link rel="stylesheet" type="text/css" href="${$scope.contextPath}/CSS/Bootstrap/css/bootstrap.css">`);
      WindowObject.document.writeln(`<link rel="stylesheet" type="text/css" href="${$scope.contextPath}/CSS/EMPVIEW_LAYOUT.min.css">`);
      WindowObject.document.writeln(`<link rel="stylesheet" type="text/css" href="${$scope.contextPath}/CSS/font-awesome.css">`);
      WindowObject.document.writeln('</head><body>');
      WindowObject.document.writeln(DocumentContainer.innerHTML);
      WindowObject.document.writeln('</body></html>');
      WindowObject.document.close();
      setTimeout(() => resolve(WindowObject), 1000)
    })
  }

  function hidelement(){
    let txt = ''
    let chk = false

    $(".score1").each(function(){
      if($(this).hasClass("ng-hide")){
        $(this).hide()
      }
    });

    $(".score2").each(function(){
      chk = $(this).prop('checked');
      if(chk){
        $(this).parents("td").append("<i class='fa fa-check-square-o right dis-block'></i>");
      }
      else{
        $(this).parents("td").append("<i class='fa fa-square-o right dis-block'></i>");
      }
      $(this).hide();
    });

    $(".score3").each(function(){
      chk = $(this).prop('checked');
      if(chk){
        $(this).parents(".chk").append("<i class='fa fa-check-square-o right dis-block'></i>");
      }
      else{
        $(this).parents(".chk").append("<i class='fa fa-square-o right dis-block'></i>");
      }
      $(this).hide();
    });


    $("textarea").each(function(){
      txt = $(this).val()
      if(txt ==''){
        $(this).parents(".showtxt").find("label").removeClass('hide')
        $(this).parents(".showtxt").find("label").clone().appendTo($(this).parents(".showtxt"))
      }else{
        $(this).parents(".showtxt").find("label").removeClass('txt-underline hide')
        $(this).parents(".showtxt").find("label").addClass('txt-underline2')
        $(this).parents(".showtxt").find("label").text(txt)
      }
      $(this).hide()
    });

    $('.btn').hide()
    $('.icon-btn').hide()

  }

}]);