/** * Created by PPMaj on 11/24/2016. */ 'use strict' angular.module('RECRUIT').controller('Appointment', function ($scope, $mdDialog, RecService, $filter, SwapLang) { $scope.addMonth = function () { $scope.filterMonth.setMonth($scope.filterMonth.getMonth() + 1) } $scope.subMonth = function () { $scope.filterMonth.setMonth($scope.filterMonth.getMonth() - 1) } $scope.lang = getLang(); $scope.initAppointment = function () { RecService.RestMappointment.getQuery().$promise.then(function (data) { $scope.appointments = data.result console.log(data.result) }) } $scope.getJobDesc = function (jobid) { let result = '' let job = $filter('filter')($scope.jobs, {jobid: jobid}, true) if (job.length > 0) { result = job[0][`jobdesc_${$scope.lang}`] } return result } $scope.getPrefix = function (prefixid) { let result = '' let prefix = $filter('filter')($scope.prefixs, {mprefixid: prefixid}, true) if (prefix.length > 0) { result = prefix[0][`prefix_${$scope.lang}`] } return result } $scope.dateGroupStatus = function (dateString) { let date = new Date(dateString).setHours(0, 0, 0, 0) let today = new Date().setHours(0, 0, 0, 0) return { 'appointment-dateGroup-past': date < today, 'appointment-dateGroup-present': date === today, 'appointment-dateGroup-future': date > today } } $scope.collapseStatus = function (dateString) { let date = new Date(dateString).setHours(0, 0, 0, 0) let today = new Date().setHours(0, 0, 0, 0) return { 'collapse': date !== today, 'collapse in': date === today } } let indexDate = []; $scope.appointmentsToFilter = function () { indexDate = []; return $scope.appointments; } $scope.removeObject = (p_appointment) => { $scope.appointments.splice($scope.appointments.indexOf(p_appointment), 1) } $scope.delete = ($appointment) => { SwapLang.getConfirm(1).then(function () { let model = { appointmentid: $appointment.appointmentid, candidateid: $appointment.candidateid, requestid: $appointment.requestid } RecService.RestMappointment.delete(model).$promise.then(() => { SwapLang.getAlert(18).then(function () { $scope.removeObject($appointment) }) }, (error) => { SwapLang.getAlert(17, error.data.result) }) }) } $scope.filterAppointmentDate = function (appointment) { let dateIsNew = indexDate.indexOf(appointment.detail.date) === -1; let appointmentDate = new Date(appointment.detail.date) let filterYearMonth = new Date(appointmentDate.getYear(), appointmentDate.getMonth(), 1).setHours(0, 0, 0, 0) let appointmentYearMonth = new Date($scope.filterMonth.getYear(), $scope.filterMonth.getMonth(), 1).setHours(0, 0, 0, 0) let isMatch = filterYearMonth === appointmentYearMonth if (dateIsNew) { indexDate.push(appointment.detail.date); } return dateIsNew && isMatch; } $scope.appointmentApplicant = function (event, candidate) { $mdDialog.show({ controller: $scope.DialogController, templateUrl: 'DIALOGTEMPLATE/APPOINTMENT.TMPL.html', parent: angular.element(document.body), targetEvent: event, clickOutsideToClose: true, locals: { emailTemplates: $scope.emailTemplates, candidate: candidate, prefixs: $scope.prefixs } }).then(function () { $scope.initAppointment() }) }; $scope.DialogController = function ($scope, $mdDialog, emailTemplates, candidate, prefixs) { $scope.committees = [] $scope.appointment = { appointmentid: '0', candidateid: candidate.candidateid, requestid: '', detail: { type: '', date: '', time: { start: '', end: '' }, address: '', remark: '', sendMail: { status: '0', candidate: [], referee: [] } } } $scope.swaplang = new swaplang(); $scope.tabNames = { all: $scope.swaplang.swap2String('SW008544'), candi: $scope.swaplang.swap2String('SW000139'), commi: $scope.swaplang.swap2String('SW004819') } $scope.prefixs = prefixs $scope.lang = getLang(); $scope.candidateEmailLang = getLang() $scope.refereeEmailLang = getLang() $scope.candidate = candidate $scope.emailTemplates = emailTemplates $scope.appointmentType = [ { id: '1', desc: { tha: 'สอบสัมภาษณ์', eng: 'Interview' } }, { id: '2', desc: { tha: 'สอบข้อเขียน', eng: 'Examination' } } ] RecService.ManageRequestForm.getOpeningMrequest({jobid: candidate.jobid}).$promise.then((data) => { $scope.appointment.requestid = data.requestid RecService.RestMrequest.query({funcname: 'getCommittee', params: data.requestid}).$promise.then(function (data) { $scope.committees = data.committee console.log($scope.committees ) }) }) $scope.getAllRefereeEmail = function () { let email = '' $scope.committees.forEach((ref) => { email += `${ref.email},` }) return email.substring(0, email.length - 1) } $scope.hide = function () { $mdDialog.hide(); }; $scope.cancel = function () { $mdDialog.cancel(); }; $scope.save = function () { if ($scope.formAppointment.$invalid) { return alert(MyCode[0]) } let objSendMail = $scope.appointment.detail.sendMail objSendMail.allMail = objSendMail.candidate.concat(objSendMail.referee) objSendMail.allMail.forEach((mail) => { mail.content = `<pre>${mail.content}</pre>` }) RecService.RestMappointment.save($scope.appointment).$promise.then(function () { SwapLang.getAlert(18) }) }; $scope.bindEmailVar = function (mailContent, lang, index) { let newMailContent = mailContent function getCommiPrefix() { let result = '' if (index === -1) { let allPrefix = '' $scope.committees.forEach((com) => { allPrefix += `${findObjWithAttr($scope.prefixs, 'mprefixid', com.prefixid)[`prefix_${lang}`]}, ` }) result = allPrefix.substring(0, allPrefix.length - 2) } else { result = findObjWithAttr($scope.prefixs, 'mprefixid', $scope.committees[index].prefixid)[`prefix_${lang}`] } return result } function getCommiFname() { let result = '' if (index === -1) { let allFname = '' $scope.committees.forEach((com) => { allFname += `${com.fname[lang]}, ` }) result = allFname.substring(0, allFname.length - 2) } else { result = $scope.committees[index].fname[lang] } return result } function getCommiLname() { let result = '' if (index === -1) { let allLname = '' $scope.committees.forEach((com) => { allLname += `${com.lname[lang]}, ` }) result = allLname.substring(0, allLname.length - 2) } else { result = $scope.committees[index].lname[lang] } return result } function getCommiFullname(pre, fname, lname) { let result = '' let arrPre = pre.split(', ') let arrFname = fname.split(', ') let arrLname = lname.split(', ') if (index === -1) { let allFullname = '' arrPre.forEach((com, index) => { allFullname += `${arrPre[index]}${arrFname[index]} ${arrLname[index]}, ` }) result = allFullname.substring(0, allFullname.length - 2) } else { result = `${arrPre[index]}${arrFname[index]} ${arrLname[index]}` } return result } function getCommiPreFname(pre, fname) { let result = '' let arrPre = pre.split(', ') let arrFname = fname.split(', ') if (index === -1) { let allString = '' arrPre.forEach((com, index) => { allString += `${arrPre[index]} ${arrFname[index]}, ` }) result = allString.substring(0, allString.length - 2) } else { result = `${arrPre[index]} ${arrFname[index]}` } return result } function getCommiPreLname(pre, lname) { let result = '' let arrPre = pre.split(', ') let arrLname = lname.split(', ') if (index === -1) { let allString = '' arrPre.forEach((com, index) => { allString += `${arrPre[index]} ${arrLname[index]}, ` }) result = allString.substring(0, allString.length - 2) } else { result = `${arrPre[index]} ${arrLname[index]}` } return result } function getCommiFnameLname(fname, lname) { let result = '' let arrFname = fname.split(', ') let arrLname = lname.split(', ') if (index === -1) { let allFullname = '' arrFname.forEach((com, index) => { allFullname += `${arrFname[index]} ${arrLname[index]}, ` }) result = allFullname.substring(0, allFullname.length - 2) } else { result = `${arrFname[index]} ${arrLname[index]}` } return result } let candi = { prefix: findObjWithAttr($scope.prefixs, 'mprefixid', $scope.candidate.personal.prefixid)[`prefix_${lang}`], fname: $scope.candidate.personal.fname[lang], lname: $scope.candidate.personal.lname[lang], } let commi = { prefix: getCommiPrefix(), fname: getCommiFname(), lname: getCommiLname(), } let key = { candi: { id: '${CID}', prefix: '${CPREFIX}', fname: '${CFNAME}', lname: '${CLNAME}', preFname: '${CPREFIX+CFNAME}', preLname: '${CPREFIX+CLNAME}', fnameLname: '${CFNAME+CLNAME}', fullname: '${CFULLNAME}', }, commi: { prefix: '${CMPREFIX}', fname: '${CMFNAME}', lname: '${CMLNAME}', preFname: '${CMPREFIX+CMFNAME}', preLname: '${CMPREFIX+CMLNAME}', fnameLname: '${CMFNAME+CMLNAME}', fullname: '${CMFULLNAME}' } } let valCandi = { id: $scope.candidate.applicantid, prefix: candi.prefix, fname: candi.fname, lname: candi.lname, preFname: `${candi.prefix} ${candi.fname}`, preLname: `${candi.prefix} ${candi.lname}`, FnameLname: `${candi.fname} ${candi.lname}`, fullname: `${candi.prefix}${candi.fname} ${candi.lname}` } let valCommi = { prefix: commi.prefix, fname: commi.fname, lname: commi.lname, preFname: getCommiPreFname(commi.prefix, commi.fname), preLname: getCommiPreLname(commi.prefix, commi.lname), FnameLname: getCommiFnameLname(commi.fname, commi.lname), fullname: getCommiFullname(commi.prefix, commi.fname, commi.lname) } let keyArr = [] let cutOpen = mailContent.split('${') for (let i = 0; i < cutOpen.length; i++) { let cutEnd = cutOpen[i].split('}') keyArr.push(cutEnd[0]) } keyArr.forEach((strKey) => { let variable = '${' + strKey + '}' switch (variable) { case key.candi.id : newMailContent = newMailContent.replace(key.candi.id, valCandi.id) break case key.candi.prefix : newMailContent = newMailContent.replace(key.candi.prefix, valCandi.prefix) break case key.candi.fname : newMailContent = newMailContent.replace(key.candi.fname, valCandi.fname) break case key.candi.lname : newMailContent = newMailContent.replace(key.candi.lname, valCandi.lname) break case key.candi.preFname : newMailContent = newMailContent.replace(key.candi.preFname, valCandi.preFname) break case key.candi.preLname : newMailContent = newMailContent.replace(key.candi.preLname, valCandi.preLname) break case key.candi.fnameLname : newMailContent = newMailContent.replace(key.candi.fnameLname, valCandi.FnameLname) break case key.candi.fullname : newMailContent = newMailContent.replace(key.candi.fullname, valCandi.fullname) break case key.commi.prefix : newMailContent = newMailContent.replace(key.commi.prefix, valCommi.prefix) break case key.commi.fname : newMailContent = newMailContent.replace(key.commi.fname, valCommi.fname) break case key.commi.lname : newMailContent = newMailContent.replace(key.commi.lname, valCommi.lname) break case key.commi.preFname : newMailContent = newMailContent.replace(key.commi.preFname, valCommi.preFname) break case key.commi.preLname : newMailContent = newMailContent.replace(key.commi.preLname, valCommi.preLname) break case key.commi.fnameLname : newMailContent = newMailContent.replace(key.commi.fnameLname, valCommi.FnameLname) break case key.commi.fullname : newMailContent = newMailContent.replace(key.commi.fullname, valCommi.fullname) break } }) return newMailContent } $scope.isChooseTemplate = { candidate: [], referee: [] } $scope.chooseTemplate = function (who, index) { switch (who.toUpperCase()) { case 'CANDIDATE' : $scope.isChooseTemplate.candidate[index] = !$scope.isChooseTemplate.candidate[index] break; case 'REFEREE' : $scope.isChooseTemplate.referee[index] = !$scope.isChooseTemplate.referee[index] break; } } $scope.hours = function () { let hours = [] for (let i = 0; i < 24; i++) { let hour = i.toString().paddingLeft("00") for (let j = 0; j < 60; j += 10) { hours.push(hour + '.' + j.toString().paddingLeft("00")) } } return hours } $scope.endHours = function () { let endHours = [] let splitTime = $scope.appointment.detail.time.start.split('.') let startHour = parseInt(splitTime[0]) let startmin = parseInt(splitTime[1]) for (let i = startHour; i < 24; i++) { let hour = i.toString().paddingLeft("00") if (i == startHour) { let j for (j = startmin += 10; j < 60; j += 10) { endHours.push(hour + '.' + j.toString().paddingLeft("00")) } } else { for (let j = 0; j < 60; j += 10) { endHours.push(hour + '.' + j.toString().paddingLeft("00")) } } } return endHours } String.prototype.paddingLeft = function (paddingValue) { return String(paddingValue + this).slice(-paddingValue.length); }; } // End function zone $scope.appointmentType = [ { id: '1', desc: { tha: 'สอบสัมภาษณ์', eng: 'Interview' } }, { id: '2', desc: { tha: 'สอบข้อเขียน', eng: 'Examination' } } ] $scope.filterMonth = new Date() $scope.prefixs = [] $scope.jobs = [] $scope.appointments = [] $scope.initAppointment() $scope.candidates = [] RecService.RestMcandidate.getQuery().$promise.then(function (data) { $scope.candidates = data.result }) RecService.ManageConfig.query({cname: 'EMAIL'}).$promise.then(function (data) { $scope.emailTemplates = data.result.object.email }) RecService.PrefixController.query().$promise.then(function (data) { $scope.prefixs = data.prefix }) RecService.JobController.query({jobid: '0'}).$promise.then(function (data) { $scope.jobs = data.job }) $('body').on('focus', '.datepicker', function () { let datepickerOptions = { yearRange: "c:c+15", dateFormat: "yy-mm-dd", changeMonth: true, changeYear: true, showAnim: 'clip', required: true, minDate: 0 }; $(this).datepicker(datepickerOptions) .on('keydown', function (e) { e.preventDefault(); }); }); })