import { Component, OnInit } from '@angular/core'; import { CommonService } from 'src/app/hmg-common/services/common/common.service'; import { TranslatorService } from 'src/app/hmg-common/services/translator/translator.service'; import { ApproversList } from '../models/approvers'; import { MenuResponse } from 'src/app/hmg-common/services/menu/models/menu-response'; import { WorkListButtonRequest } from 'src/app/eit/models/NotificationButtonReq'; import { ModalController } from '@ionic/angular'; import { NotificationGetAttachResponse } from 'src/app/eit/models/NotificationGetAttachRes'; import { AbsenceResponse } from '../models/absence.response'; import { SubmitAbConfirmService } from '../service/submit-absence-confirm.service'; import { WorklistAttachService } from '../service/work-list-attach.service'; import { ConfirmAddEitService } from '../service/confirm-add-eit-service'; import { AbsenceNotificatonBodyResponse } from '../models/AbsenceNotificationBodyRes'; import { AbsenceAttachmentComponent } from '../absence-attachment/absence-attachment.component'; import { WorkListAttachViewComponent } from 'src/app/notification/work-list-attach-view/work-list-attach-view.component'; import { FileUploader } from 'ng2-file-upload'; import { SubmitAbsenceModalComponent } from '../submit-absence-modal/submit-absence-modal.component'; import { HomeComponent } from "src/app/notification/home/home.component"; @Component({ selector: 'app-absence-confirm', templateUrl: './absence-confirm.component.html', styleUrls: ['./absence-confirm.component.scss'] }) export class AbsenceConfirmComponent implements OnInit { direction: string; P_TransactionID: number; approversList = []; selEmp: any = ''; respID: number; absComments: string = ''; selMenu: MenuResponse; attachItems: any; attachListDisplay: any; isTrue: any = 0; getPassNotificationDetails: any; menuType: string = ''; attachmentRes: any; objIndex1: any; attachListOver: any = []; index: any = 0; attachReqObj: WorkListButtonRequest = new WorkListButtonRequest(); private isResubmitAbs: boolean = false; private isSubmitBtnClicked: boolean; filterAllowedType: any = ['application/pdf', 'image/jpeg', 'image/png', 'text/plain', 'image/jpg', 'application/vnd.ms-excel', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet']; constructor( public common: CommonService, public ts: TranslatorService, public modalCtrl: ModalController, public ConfirmAddEitService: ConfirmAddEitService, public submitConService: SubmitAbConfirmService, public WorklistAttachService: WorklistAttachService ) { this.isSubmitBtnClicked = false; this.direction = TranslatorService.getCurrentLanguageName() // this.isResubmitAbs = this.navParams.get("isResubmit"); if (this.isResubmitAbs) { this.P_TransactionID = this.common.sharedService.getSharedData( AbsenceResponse.SHARED_DATA ); this.getPassNotificationDetails = this.common.sharedService.getSharedData( AbsenceNotificatonBodyResponse.NOT_WORKLIST, true ); this.selEmp = this.getPassNotificationDetails.SELECTED_EMPLOYEE_NUMBER; this.menuType = 'E'; this.respID = -999; // this.getApproversList(); // console.log("this.getPassNotificationDetails.P_NOTIFICATION_ID :"+this.getPassNotificationDetails.NOTIFICATION_ID); this.getAttachment(this.getPassNotificationDetails.NOTIFICATION_ID); } else { this.selMenu = this.common.sharedService.getSharedData( MenuResponse.SHARED_DATA, true ); this.selEmp = this.common.sharedService.getSharedData( MenuResponse.SHARED_SEL_EMP, true ); this.respID = this.common.sharedService.getSharedData( MenuResponse.SHARED_SEL_RESP_ID, true ); this.P_TransactionID = this.common.sharedService.getSharedData( AbsenceResponse.SHARED_DATA ); this.menuType = this.selMenu.List_Menu.MENU_TYPE; } this.getApproversList(); } ngOnInit() { } startAbApproval() { if (this.attachListOver) { //first call add attach inside success call submit let request = { AddAttachmentList: this.attachListOver }; this.ConfirmAddEitService.addAttachment(request).subscribe( (result: any) => { this.handleAddAttachmentResults(result); } ); } else { this.startAbsApprovalProcess(); } } //end handleAddAttachmentResults(result) { if (this.common.validResponse(result)) { //this.isUpload=true; this.isTrue = 0; for (let i = 0; i < result.AddAttSuccessList.length; i++) { if (!result.AddAttSuccessList[i].AddSuccess) { this.attachListOver[i].isSuccess = false; // if false display cancel button with waring icon or design } // end if else { // if true remove cancel and set isSuccess = true this.attachListOver[i].isSuccess = true; this.isTrue = this.isTrue + 1; //count flag of attach status } // end else } // end for if (this.isTrue == result.AddAttSuccessList.length) { this.startAbsApprovalProcess(); } else { //stope let filtered = this.attachListOver.filter(function (el) { return el.isSuccess == true; }); this.attachListOver = filtered; let msg: string = ''; // msg = this.translate.translate("addAttach.errorMsg"); //this.common.showAlert(msg); } } } startAbsApprovalProcess() { let request: any = {}; request.P_SELECTED_EMPLOYEE_NUMBER = this.selEmp; request.P_MENU_TYPE = this.menuType; request.P_SELECTED_RESP_ID = this.respID; request.P_TRANSACTION_ID = this.P_TransactionID; request.P_COMMENTS = this.absComments; this.submitConService .startAbApprovalProcess(request) .subscribe((result: any) => { this.handleResults(result); }); } cancelAbProcess() { let body: any = { P_TRANSACTION_ID: this.P_TransactionID }; this.submitConService.cancelHRTransaction(body).subscribe((result: any) => { this.handleCancelResults(result); }); } handleCancelResults(result) { if (this.common.validResponse(result)) { this.isSubmitBtnClicked = false; // this.navCtrl.popToRoot(); } } handleResults(result) { if (this.common.validResponse(result)) { this.isSubmitBtnClicked = true; //if(this.isResubmitAbs==false){ // let msg: string = this.ts.trPK('general', 'messageSuccess'); // this.common.presentAlert(msg); this.common.greenToastPK("eit", "approval-message-success") // } // this.navCtrl.popToRoot(); this.common.sharedService.setSharedData(true, HomeComponent.COUNT_CHANGED); this.common.openNotificationPage(); } } getApproversList() { let body: any = { P_TRANSACTION_ID: this.P_TransactionID, P_AME_TRANSACTION_TYPE: 'SSHRMS', P_PAGE_NUM: 1, P_PAGE_LIMIT: 1000 }; this.submitConService.getApproversList(body).subscribe((result: any) => { this.handleApproversResult(result); }); } handleApproversResult(result) { if (this.common.validResponse(result)) { this.approversList = result.GetApprovesList; } } async addAttachment(str: boolean, attachItems: any) { let attachDocID = attachItems.ATTACHED_DOCUMENT_ID; // var modalPage = this.modalCtrl.create("AddAttachPage", { // indexLastObj: this.attachListOver.length, // TransactionID: this.P_TransactionID, // enableBackdropDismiss: false // }); const modal = await this.modalCtrl.create({ component: AbsenceAttachmentComponent, componentProps: { indexLastObj: this.attachListOver.length, TransactionID: this.P_TransactionID }, keyboardClose: true, animated: false }); modal.onDidDismiss() .then((data) => { if (data == 'cancel' || data == 'undefined') { return; } else { if (!str) { this.updateFile(data, attachDocID); } else { this.attachListDisplay = data.data; this.attachItems = this.attachListDisplay.map(function (el) { var o = Object.assign({}, el); o.isSuccess = false; return o; }); this.attachListOver = this.attachListOver ? this.attachListOver.concat(this.attachItems) : this.attachItems; } } }); return await modal.present(); } /*****submit modal********/ async openSubmitModal() { this.common.sharedService.setSharedData(this.attachListOver, 'submitAbsAttachmentList'); this.common.sharedService.setSharedData(this.absComments, 'absComments'); const modal = await this.modalCtrl.create({ component: SubmitAbsenceModalComponent, backdropDismiss: false, }); modal.cssClass = 'note-modal'; modal.onDidDismiss() .then((data) => { console.log(data.data); if (data.data == 'cancel' || data.data == undefined) { return; } else { this.startAbApproval(); } }); return await modal.present(); } removeFile(objectitem) { if (this.attachListOver) { let index2 = this.attachListOver.findIndex(item => item == objectitem); if (index2 > -1) { this.attachListOver.splice(index2, 1); } } if (this.attachmentRes) { let index3 = this.attachmentRes.findIndex(item => item == objectitem); if (index3 > -1) { this.attachmentRes.splice(index3, 1); } } } getAttachment(NotificationID) { this.attachReqObj.P_NOTIFICATION_ID = NotificationID; this.WorklistAttachService.getAttach(this.attachReqObj).subscribe( (result: NotificationGetAttachResponse) => { this.handleWorkListAttachResult(result); } ); } handleWorkListAttachResult(result) { if (this.common.validResponse(result)) { // this.sharedData.setSharedData(result, WorKListResponse.SHARED_DATA); if (result.GetAttachementList != null) { this.attachmentRes = result.GetAttachementList; } // if result == null } // valid it } async OpenAttachFiles(value, Type) { this.common.sharedService.setSharedData({ displayData: value, TypeData: Type }, 'WorkListAttachViewPage'); const modal = await this.modalCtrl.create({ component: WorkListAttachViewComponent }); modal.onDidDismiss() .then((data) => { }); return await modal.present(); } updateFile(attachList, attachDocID) { let req = { P_ATTACHED_DOCUMENT_ID: attachDocID, P_FILE_DATA: attachList[0].P_FILE_DATA, P_FILE_NAME: attachList[0].P_FILE_NAME, P_FILE_CONTENT_TYPE: attachList[0].P_FILE_CONTENT_TYPE }; this.submitConService.updateAttach(req).subscribe((result: any) => { if (this.common.validResponse(result)) { if (result.MessageStatus == 1) { let msg: string = ''; // msg = this.translate.translate("addAttach.attachUpdate"); // this.common.showAlert(msg); this.getAttachment(this.getPassNotificationDetails.NOTIFICATION_ID); } } // val }); } delelteFile(attach) { // let alert = this.common.showConfirmMsg( // this.translate.translate("general.deletePerm") // ); // alert.onDidDismiss(data => { // if (data == true) { // this.continueDelete(attach); // } // }); } continueDelete(attach) { let req = { P_ATTACHED_DOCUMENT_ID: attach.ATTACHED_DOCUMENT_ID }; this.submitConService.delteAttach(req).subscribe((result: any) => { if (this.common.validResponse(result)) { if (result.DeleteAttachmentList.P_RETURN_STATUS === 'S') { this.getAttachment(this.getPassNotificationDetails.NOTIFICATION_ID); // let msg: string = ""; // msg = this.translate.translate("addAttach.deleteAttach"); // this.common.showAlert(msg); } } }); } ionViewWillLeave() { if (this.P_TransactionID && this.isSubmitBtnClicked == false) this.cancelAbProcess(); } /*******************Add attchement Functions*************/ public uploader: FileUploader = new FileUploader({ allowedMimeType: ['application/pdf', 'image/jpeg', 'image/png', 'text/plain', 'image/jpg', 'application/vnd.ms-excel', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'], maxFileSize: 10 * 1024 * 1024, formatDataFunctionIsAsync: true, formatDataFunction: async (item) => { return new Promise((resolve, reject) => { resolve({ name: item._file.name, length: item._file.size, contentType: item._file.type, date: new Date() }); }); } }); onFileSelectedclick(event) { event.target.value = ''; } onFileSelected(input) { // this.uploader.onWhenAddingFileFailed = function (item: any, filter: any, options: any){ if (!(this.filterAllowedType.indexOf(input.target.files[0].type) > -1)) { let msg: string = ""; msg = this.ts.trPK("general", "notSupport"); this.common.presentAlert(msg); return } // todo: show alert that you tried uploading wrong files else { const file = input.target.files[0]; // console.log(file); //var encoded = Base64.encode(file); this.getBase64(file).then( data => this.pushObject(data, file.name, file.type) ); // } // }; } } getBase64(file) { return new Promise((resolve, reject) => { const reader = new FileReader(); reader.readAsDataURL(file); reader.onload = () => resolve(reader.result); reader.onerror = error => reject(error); }); } pushObject(fileData, name, type) { console.log('before push: ' + this.index); //this.attachListOver.length++; try { let array = name.split('.'); let attachType: string = array[array.length - 1]; this.attachListOver.push( { AttachmentID: this.attachListOver.length, P_FILE_CONTENT_TYPE: attachType,//type.split('/')[1], P_FILE_DATA: fileData.split(',')[1], P_FILE_NAME: name,//.split('.')[0], P_TRANSACTION_ID: this.P_TransactionID }) } catch (e) { } //console.log("after push: "+ this.index); // return this.addAttachRequest } }