You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
mohemm_moe/Mohem/src/app/absence/absence-confirm/absence-confirm.component.ts

328 lines
11 KiB
TypeScript

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';
@Component({
selector: "app-absence-confirm",
templateUrl: "./absence-confirm.component.html",
styleUrls: ["./absence-confirm.component.scss"]
})
export class AbsenceConfirmComponent implements OnInit {
P_TransactionID: number;
approversList: ApproversList;
selEmp: string = "";
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;
constructor(
public common: CommonService,
public ts: TranslatorService,
public modalCtrl: ModalController,
public ConfirmAddEitService: ConfirmAddEitService,
public submitConService: SubmitAbConfirmService,
public WorklistAttachService: WorklistAttachService
) {
this.isSubmitBtnClicked = false;
// 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.navCtrl.popToRoot();
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();
}
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();
}
}