(function () { "use strict"; angular .module('codeAPLEBOX.client.user.employee.customer.depositmanagement.detaildepositmanagement') .controller('detaildepositmanagementController', detaildepositmanagementController); /* @ngInject */ function detaildepositmanagementController($state, $stateParams, appConfig, $log, $cookies, WEB_API_EMPLOYEE, moment) { var vm = this; // ======================================================================= // 초기데이터 // ======================================================================= vm.employeeInfo = $cookies.getObject("employeeInfo"); if($stateParams.selectedCustomerDepositInfo != null){ $cookies.putObject('selectedCustomerDepositInfo', $stateParams.selectedCustomerDepositInfo) } vm.selectedCustomerDepositInfo = $cookies.getObject('selectedCustomerDepositInfo'); iniData(); // ======================================================================= // Angularjs Function // ======================================================================= vm.downLoadAttachmentFile = function (originalFileName, fileName) { downLoadAttachmentFile(originalFileName, fileName); }; vm.setCreateOrModifyDeposit = function(index){ // 0: 생성, 1: 수정, 2: 종료, 3: 취소 vm.checkCreateOrModifyDeposit = index; if(index == 0){ // 계약상태 var contractStatus = 1; var today = moment(new Date()).format("YYYY-MM-DD"); var startDateTime = moment(new Date(vm.newOrModifyDepositInfo.startDateTime)).format("YYYY-MM-DD"); var endDateTime = moment(new Date(vm.newOrModifyDepositInfo.endDateTime)).format("YYYY-MM-DD"); if(startDateTime > today){ // 대기 contractStatus = 1; }else if(endDateTime < today){ // 계약 종료 contractStatus = 3; }else if(startDateTime <= today && endDateTime >= today){// 계약중 contractStatus = 2; } vm.newOrModifyDepositInfo.contractStatus = contractStatus; vm.newOrModifyDepositInfo.remainingDeposit = vm.newOrModifyDepositInfo.contractDeposit; vm.selectedDepositInfo = _.cloneDeep(vm.newOrModifyDepositInfo); vm.selectedDepositInfo.EmployeeId = vm.employeeInfo.id; vm.selectedDepositInfo.CustomerId = vm.selectedCustomerDepositInfo.customerId; setDepositInfo(); }else{ if(vm.checkCreateOrModifyDeposit == 1){ // 보증금 차액 var currentDeposit = 0;// 보증금 차액 currentDeposit = vm.compareDepositInfo.contractDeposit - vm.newOrModifyDepositInfo.contractDeposit; vm.newOrModifyDepositInfo.remainingDeposit = vm.compareDepositInfo.remainingDeposit - currentDeposit; // 계약상태 var contractStatus = 1; var today = moment(new Date()).format("YYYY-MM-DD"); var startDateTime = moment(new Date(vm.newOrModifyDepositInfo.startDateTime)).format("YYYY-MM-DD"); var endDateTime = moment(new Date(vm.newOrModifyDepositInfo.endDateTime)).format("YYYY-MM-DD"); if(startDateTime > today){ // 대기 contractStatus = 1; }else if(endDateTime < today){ // 계약 종료 contractStatus = 3; }else if(startDateTime <= today && endDateTime >= today){// 계약중 contractStatus = 2; } vm.newOrModifyDepositInfo.contractStatus = contractStatus; vm.selectedDepositInfo = _.cloneDeep(vm.newOrModifyDepositInfo); vm.selectedDepositInfo.EmployeeId = vm.employeeInfo.id; vm.selectedDepositInfo.CustomerId = vm.selectedCustomerDepositInfo.customerId; } setDepositInfo(); } } /* start dialog */ vm.clickOpenDialogDepositCancel = function(depositInfo){ vm.selectedDepositInfo = depositInfo; vm.checkDialogDepositCancel = true; // 보증금 계약 취소 } vm.clickOpenDialogDepositExit = function(depositInfo){ vm.selectedDepositInfo = depositInfo; vm.checkDialogDepositExit = true; // 보증금 계약 종료 } vm.clickOpenDialogDepositRenewal = function(){ vm.warrantyPeriod = vm.yearList[0]; $("#startDateTimeCreate").datepicker({ dateFormat: "yy-mm-dd" }); $("#startDateTimeCreate").datepicker('setDate', new Date()); var startDateTime = moment(new Date()).format("YYYY-MM-DD").toString(); var endDateTime = moment(startDateTime).add(1, 'years').format("YYYY-MM-DD").toString(); vm.newOrModifyDepositInfo = { contractStatus: 1, contractDeposit: 0, remainingDeposit: 0, warrantyPeriod: 1, startDateTime: startDateTime, endDateTime: endDateTime, fileName: null, originalFileName: null, CustomerId: vm.selectedCustomerDepositInfo.customerId, EmployeeId: vm.employeeInfo.id }; vm.checkDialogDepositRenewal = true; // 보증금 갱신 } vm.clickOpenDialogDepositRenewalSubmit = function(){ vm.checkDialogDepositRenewalSubmit = true; // 보증금 갱신 --> 등록 } vm.clickOpenDialogDepositModify = function(depositInfo){ vm.newOrModifyDepositInfo = _.cloneDeep(depositInfo); vm.compareDepositInfo = _.cloneDeep(depositInfo); vm.newOrModifyDepositInfo.startDateTime = moment(vm.newOrModifyDepositInfo.startDateTime).format("YYYY-MM-DD"); vm.newOrModifyDepositInfo.endDateTime = moment(vm.newOrModifyDepositInfo.endDateTime).format("YYYY-MM-DD"); $("#startDateTimeModify").datepicker({ dateFormat: "yy-mm-dd" }); $("#startDateTimeModify").datepicker('setDate', vm.newOrModifyDepositInfo.startDateTime); for(var i = 0; i < vm.yearList.length; i++){ if(vm.newOrModifyDepositInfo.warrantyPeriod == vm.yearList[i].name){ vm.warrantyPeriod = vm.yearList[i]; break; } } vm.checkDialogDepositModify = true; // 보증금 수정 } /*vm.selectFilesFunc = function (files) { vm.fileName = null; vm.selectFiles = null; if (files.length > 0) { vm.fileName = files[0].name; vm.selectFiles = files[0]; } }*/ vm.selectFileFunc = function(file){ vm.fileName = null; vm.selectFile = null; vm.selectFileType = null; if(file != null){ if(file.type.includes('image/') || file.type.includes('/pdf')){ vm.fileName = file.name; vm.selectFile = file; vm.selectFileType = file.type; vm.newOrModifyDepositInfo.fileName = vm.fileName; }else{ alert("pdf, 이미지 파일만 업로드 가능합니다.") vm.fileName = null; vm.selectFile = null; vm.selectFileType = null; file = null return; } } }; vm.removeFile = function () { vm.newOrModifyDepositInfo.fileName = null; vm.newOrModifyDepositInfo.originalFileName = null; } vm.removeFile_fileSelected = function () { vm.fileName = null; vm.selectFile = null; vm.selectFileType = null; } vm.setWarrantyYear = function(){ vm.newOrModifyDepositInfo.warrantyPeriod = vm.warrantyPeriod.name; vm.calcEndDate(); } vm.calcEndDate = function(){ var startDateTime = vm.newOrModifyDepositInfo.startDateTime; var warrantyPeriod = vm.newOrModifyDepositInfo.warrantyPeriod; vm.newOrModifyDepositInfo.endDateTime = moment(new Date(startDateTime)).add(warrantyPeriod, 'years').format("YYYY-MM-DD").toString(); } vm.changWarrantyPeriod = function(){ vm.newOrModifyDepositInfo.warrantyPeriod = vm.warrantyPeriod.name; } vm.clickOpenDialogDepositModifiedSubmit = function(){ if(vm.newOrModifyDepositInfo.contractDeposit < vm.newOrModifyDepositInfo.useDeposit){ alert("사용보증금액보다 적은 금액으로 수정할 수 없습니다."); return; } vm.checkDialogDepositModifiedSubmit = true; // 보증금 수정 --> 수정 등록 } vm.closeDialog = function(){ vm.checkDialogDepositCancel = false; // 보증금 계약 취소 vm.checkDialogDepositExit = false; // 보증금 계약 종료 vm.checkDialogDepositRenewal = false; // 보증금 갱신 vm.checkDialogDepositRenewalSubmit = false; // 보증금 갱신 --> 등록 vm.checkDialogDepositModify = false; // 보증금 수정 vm.checkDialogDepositModifiedSubmit = false; // 보증금 수정 --> 수정 등록 vm.checkCreateOrModifyDeposit = 0; // 0: 생성, 1: 수정, 2: 종료, 3: 취소 vm.selectedDepositInfo = null; vm.selectedCustomerInfo = null; vm.newOrModifyDepositInfo = null; vm.fileInfos = null; vm.selectFile = null; vm.selectFileType = null; } vm.closeDialogDepositRenewalSubmit = function(){ vm.checkDialogDepositRenewalSubmit = false; // 보증금 갱신 --> 등록 } vm.closeDialogDepositDepositModifiedSubmit = function(){ vm.checkDialogDepositModifiedSubmit = false; // 보증금 수정 --> 수정 등록 } /* end dialog */ vm.resetBoard = function () { vm.fileInfos = null; vm.selectFile = null; vm.selectFileType = null; // board 초기화 vm.flag = true; vm.curPage = 1; // 현재 페이지 vm.startRange = 1; // 시작 페이지 번호 vm.endRange = 1; // 마지막 페이지 번호 vm.searchInfo = { searchDepositStatus: null } vm.searchDepositStatus = null; vm.orderInfo = null; getPersonalDepositList(); } vm.iniBoard = function(){ vm.fileInfos = null; vm.selectFile = null; vm.selectFileType = null; vm.flag = true; vm.curPage = 1; // 현재 페이지 vm.startRange = 1; // 시작 페이지 번호 vm.endRange = 1; // 마지막 페이지 번호 } vm.searchForBoard = function(){ vm.searchInfo = { searchDepositStatus: vm.searchDepositStatus } vm.iniBoard(); getPersonalDepositList(); } vm.searchForDepositStatus = function(check){ // check 0:비활성, 1: 활성 if(check == null){ vm.searchDepositStatus = null; }else{ vm.searchDepositStatus = check; } vm.searchForBoard(); } vm.selectBoardCnt = function(number){ vm.boardCnt = number; vm.iniBoard(); getPersonalDepositList(); } // ======================================================================= // Common API // ======================================================================= function iniData(){ vm.selectedCustomerInfo = null; vm.newOrModifyDepositInfo = null; vm.selectedDepositInfo = null; vm.checkCreateOrModifyDeposit = 0; // 0: 생성, 1: 수정, 2: 종료, 3: 취소 vm.fileName = null; vm.selectFile = null; vm.selectFileType = null; vm.yearList = []; for(var i = 0; i < 30; i++){ var inputYear = { code: (i + 1) + "년", name: (i + 1) } vm.yearList.push(inputYear); } vm.warrantyPeriod = vm.yearList[0]; /* start dialog */ vm.checkDialogDepositCancel = false; // 보증금 계약 취소 vm.checkDialogDepositExit = false; // 보증금 계약 종료 vm.checkDialogDepositRenewal = false; // 보증금 갱신 vm.checkDialogDepositRenewalSubmit = false; // 보증금 갱신 --> 등록 vm.checkDialogDepositModify = false; // 보증금 수정 vm.checkDialogDepositModifiedSubmit = false; // 보증금 수정 --> 수정 등록 /* end dialog */ // board 초기화 vm.flag = true; vm.curPage = 1; // 현재 페이지 vm.boardCnt = 15; // 한페이지에 보여지는 콘텐츠 개수 vm.arrowPageCnt = 5; vm.maxShownPageCnt = 5; // 보여지는 최대 페이지 개수 vm.startRange = 1; // 시작 페이지 번호 vm.endRange = 1; // 마지막 페이지 번호 vm.searchInfo = { searchDepositStatus: null } vm.searchDepositStatus = null; getPersonalDepositList(); } /*start: getPersonalDepositList*/ function getPersonalDepositList() { WEB_API_EMPLOYEE.getPersonalDepositList({ customerId: vm.selectedCustomerDepositInfo.customerId, curPage: vm.curPage, boardCnt: vm.boardCnt, searchInfo: vm.searchInfo, orderInfo: vm.orderInfo, }).then(function (result) { vm.getPersonalDepositList = result.data.rows; vm.totalBoardLen = result.data.count; vm.pageCnt = Math.ceil(vm.totalBoardLen / vm.boardCnt); if (vm.flag) { if (vm.pageCnt <= vm.maxShownPageCnt) { vm.endRange = vm.pageCnt; } else { vm.endRange = vm.maxShownPageCnt; } } vm.flag = false; }).catch(function (err) { $log.error(err); }); } // ======================================================================= // 페이지 범위 계산 // ======================================================================= vm.pageRange = function (min, max) { var input = []; for (var i = min; i <= max; i += 1) { input.push(i); } return input; }; // ======================================================================= // 버튼클릭 이벤트 // ======================================================================= // clickFirstArrow 클릭 vm.clickFirstArrow = function () { vm.curPage = 1; vm.startRange = 1; if (vm.pageCnt <= vm.maxShownPageCnt) { vm.endRange = vm.pageCnt; } else { vm.endRange = vm.maxShownPageCnt; } getPersonalDepositList(); }; // clickLastArrow 클릭 vm.clickLastArrow = function () { vm.curPage = vm.pageCnt; vm.endRange = vm.pageCnt; if (vm.pageCnt <= vm.maxShownPageCnt) { vm.startRange = 1; } else { var remainderValue = vm.pageCnt % vm.maxShownPageCnt; var value = vm.maxShownPageCnt - remainderValue; if (remainderValue != 0) { vm.startRange = vm.pageCnt - remainderValue + 1; } else { vm.startRange = vm.endRange; } } getPersonalDepositList(); }; // leftArrow 클릭 vm.clickLeftArrow = function () { if (vm.curPage > 1) { vm.curPage -= vm.arrowPageCnt; } if (vm.curPage < vm.startRange) { if ((vm.endRange % vm.maxShownPageCnt) != 0) { vm.endRange += (vm.maxShownPageCnt - (vm.endRange % vm.maxShownPageCnt)); } vm.startRange -= vm.arrowPageCnt; vm.endRange = vm.startRange + (vm.arrowPageCnt - 1); } vm.curPage = vm.endRange; getPersonalDepositList(); }; // rightArrow 클릭 vm.clickRightArrow = function () { if (vm.curPage < vm.pageCnt) { vm.curPage += vm.arrowPageCnt; } if (vm.curPage > vm.endRange) { vm.startRange += vm.arrowPageCnt; vm.endRange += vm.arrowPageCnt; if (vm.endRange >= vm.pageCnt) { vm.endRange = vm.pageCnt; } } vm.curPage = vm.startRange; getPersonalDepositList(); }; // 페이지 직접 클릭 vm.clickPage = function (index) { vm.curPage = index; getPersonalDepositList(); }; /* end: getPersonalDepositList*/ /* start: setDepositInfo*/ function setDepositInfo() { WEB_API_EMPLOYEE.setDepositInfo({ file: vm.selectFile, selectFileType: vm.selectFileType, checkCreateOrModifyDeposit: vm.checkCreateOrModifyDeposit, selectedDepositInfo: vm.selectedDepositInfo }).then(function (result) { WEB_API_EMPLOYEE.getPersonalDeposit({ customerId: vm.selectedDepositInfo.CustomerId }).then(function (result) { vm.selectedCustomerDepositInfo = result.data.personalDeposit; $cookies.putObject('selectedCustomerDepositInfo', vm.selectedCustomerDepositInfo); vm.closeDialog(); getPersonalDepositList(); }).catch(function (err) { $log.error(err); }); }).catch(function (err) { $log.error(err); }); } /* end: setDepositInfo*/ function downLoadAttachmentFile(originalFileName, fileName) { WEB_API_EMPLOYEE.downLoadAttachmentFile({ originalFileName: originalFileName }).then(function (result) { let byteArray = _base64ToArrayBuffer(result.data); let blob = new Blob([byteArray], {type: undefined}); saveAs(blob, fileName); }).catch(function (err) { $log.error(err); }); } function _base64ToArrayBuffer(base64) { let binary_string = window.atob(base64); let len = binary_string.length; let bytes = new Uint8Array(len); for (let i = 0; i < len; i++) { bytes[i] = binary_string.charCodeAt(i); } return bytes.buffer; } } })();