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.
465 lines
14 KiB
TypeScript
465 lines
14 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';
|
|
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
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|