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.
414 lines
11 KiB
TypeScript
414 lines
11 KiB
TypeScript
import { Component, OnInit } from '@angular/core';
|
|
import { Platform, Events, MenuController } from '@ionic/angular';
|
|
import { CommonService } from 'src/app/hmg-common/services/common/common.service';
|
|
import { TranslatorService } from 'src/app/hmg-common/services/translator/translator.service';
|
|
import { AuthenticationService } from 'src/app/hmg-common/services/authentication/authentication.service';
|
|
import { AuthenticatedUser } from 'src/app/hmg-common/services/authentication/models/authenticated-user';
|
|
import { SharedDataService } from 'src/app/hmg-common/services/shared-data-service/shared-data.service';
|
|
import { MowadhafiService } from '../mowadhafi.service';
|
|
import { Location } from '@angular/common';
|
|
import { MenuResponse } from 'src/app/hmg-common/services/menu/models/menu-response';
|
|
import { LoginModel } from 'src/app/authentication/models/LoginModel';
|
|
import { SendActivationByType } from 'src/app/authentication/models/sendActivationByType';
|
|
import { FileUploader } from 'ng2-file-upload';
|
|
@Component({
|
|
selector: 'app-hr-request-form',
|
|
templateUrl: './hr-request-form.component.html',
|
|
styleUrls: ['./hr-request-form.component.scss'],
|
|
})
|
|
export class HrRequestFormComponent implements OnInit {
|
|
public EmpName: string;
|
|
public EmpNum: string;
|
|
public EmpGroup: string;
|
|
public EmpMobile: string;
|
|
public EmpJob: string;
|
|
public EmpOrgName: string;
|
|
public EmpPayrol: string;
|
|
public EmpPosition: string;
|
|
public EmpEmail: string;
|
|
public EmpCatMeaning: string;
|
|
public EmpGRADENAME: string;
|
|
public EmpLocation: string;
|
|
public EmpImg: string;
|
|
public userImage: any = '../assets/imgs/profile.png';
|
|
public loginData = new LoginModel();
|
|
public searchKeySelect = 'Complaints';
|
|
myColor: string = 'secondary';
|
|
public showRequestDetails = false;
|
|
public proID = "CS"
|
|
public inquiry: string;
|
|
public HR: string;
|
|
public complaints: string;
|
|
public Projectresult: any;
|
|
public EmpRelations: any;
|
|
public Hr: any;
|
|
public Payroll: any;
|
|
public GovRelation: any;
|
|
public projName: any;
|
|
public topicName: any;
|
|
public departTypeList: any;
|
|
public topicTypeList: any;
|
|
public sectionTypeList: any;
|
|
public projectDetial: any;
|
|
public projectDep: any;
|
|
public sectionDep: any;
|
|
public projectCode;
|
|
public SelectedServiceType: any;
|
|
public depType: any ="";
|
|
public secType: any = "";
|
|
public topicType: any="";
|
|
indexLastObj: any;
|
|
addAttachRequest: any = [];
|
|
TransactionID: any;
|
|
public teckitDetial: any;
|
|
public teckitInfo: any;
|
|
public Description: any;
|
|
public selectedFile: any;
|
|
filterAllowedType: any = [
|
|
"application/pdf",
|
|
"image/jpeg",
|
|
"image/png",
|
|
"text/plain",
|
|
"image/jpg",
|
|
"application/vnd.ms-excel",
|
|
"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
|
|
];
|
|
projctid:any;
|
|
employeeNumber:any;
|
|
ticketType: any =[];
|
|
public direction: string;
|
|
HRServices = '';
|
|
Complaints='';
|
|
Inquiry='';
|
|
input = document.getElementById ("firstLabel");
|
|
|
|
|
|
|
|
constructor(
|
|
public ts: TranslatorService,
|
|
public cs: CommonService,
|
|
public authService: AuthenticationService,
|
|
public sharedData: SharedDataService,
|
|
public events: Events,
|
|
public MowadhafiService: MowadhafiService,
|
|
private location: Location,
|
|
private menu: MenuController,
|
|
|
|
|
|
) {
|
|
this.direction = TranslatorService.getCurrentLanguageName();
|
|
}
|
|
|
|
ngOnInit() {
|
|
this.projectCode = this.cs.sharedService.getSharedData("projcet-code",false);
|
|
this.getTicketTypes();
|
|
this.getProject();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
onSelectChange(event, type) {
|
|
const value = event.target.value;
|
|
this.depType = value;
|
|
console.log(value);
|
|
// this.topicTypeList =[];
|
|
// this.sectionTypeList =[];
|
|
if(type==1){
|
|
this.getDepartmentSections(value);
|
|
this.sectionTypeList =[];
|
|
this.topicTypeList =[];
|
|
|
|
}else if(type==2){
|
|
this.getSectionTopics(value);
|
|
this.topicTypeList =[];
|
|
|
|
}else if(type==3){
|
|
|
|
}else{}
|
|
|
|
}
|
|
|
|
onFileSelectedclick(event){
|
|
event.target.value = '';
|
|
}
|
|
|
|
|
|
|
|
goback() {
|
|
this.location.back();
|
|
|
|
}
|
|
|
|
showSelectedField() { }
|
|
|
|
getTicketTypes() {
|
|
const request = {
|
|
EmployeeNumber: "",
|
|
|
|
};
|
|
this.MowadhafiService.getTicketTypes(request, () => { }, this.ts.trPK('general', 'retry')).subscribe((result) => {
|
|
this.handlegetTicketTypesResult(result);
|
|
|
|
})
|
|
}
|
|
handlegetTicketTypesResult(result) {
|
|
this.ticketType =result.Mohemm_Itg_TicketTypesList;
|
|
|
|
}
|
|
|
|
/////////////////////////////////////////////////
|
|
|
|
getProject() {
|
|
const request = {
|
|
EmployeeNumber: "",
|
|
ItgProjectCode: this.projectCode
|
|
|
|
};
|
|
this.MowadhafiService.getProject(request, () => { }, this.ts.trPK('general', 'retry')).subscribe((result) => {
|
|
this.handlegetProjectResult(result);
|
|
|
|
})
|
|
}
|
|
handlegetProjectResult(result) {
|
|
this.Projectresult = result.Mohemm_Itg_ProjectsList;
|
|
this.projctid=this.Projectresult[0].projectId
|
|
this.getProjectDepartments();
|
|
}
|
|
|
|
////////////////////////////////////////////////////
|
|
getProjectDepartments() {
|
|
const request = {
|
|
EmployeeNumber: "",
|
|
ItgProjectId: this.Projectresult[0].projectId,
|
|
|
|
|
|
};
|
|
this.MowadhafiService.getProjectDepartments(request, () => { }, this.ts.trPK('general', 'retry')).subscribe((result) => {
|
|
this.handlegetProjectDepartmentsResult(result);
|
|
|
|
})
|
|
}
|
|
handlegetProjectDepartmentsResult(result) {
|
|
this.departTypeList = result.Mohemm_ITG_ProjectDepartmentsList;
|
|
// this.getDepartmentSections();
|
|
|
|
}
|
|
//////////////////////////////////////////////////////
|
|
|
|
getDepartmentSections(value=null) {
|
|
const request = {
|
|
EmployeeNumber: "",
|
|
ItgProjectDepartmentId: value ?value : this.departTypeList.projectDepartmentId,
|
|
|
|
|
|
};
|
|
this.MowadhafiService.getDepartmentSections(request, () => { }, this.ts.trPK('general', 'retry')).subscribe((result) => {
|
|
this.handlegetDepartmentSectionsResult(result);
|
|
|
|
})
|
|
}
|
|
handlegetDepartmentSectionsResult(result) {
|
|
this.sectionTypeList = result.Mohemm_ITG_DepartmentSectionsList;
|
|
|
|
// this.getSectionTopics();
|
|
}
|
|
|
|
getSectionTopics(value=null) {
|
|
const request = {
|
|
EmployeeNumber: "",
|
|
// ItgDepartmentSectionId: this.sectionTypeList.departmentSectionId,
|
|
ItgDepartmentSectionId: value ?value : this.sectionTypeList.departmentSectionId,
|
|
|
|
};
|
|
this.MowadhafiService.getSectionTopics(request, () => { }, this.ts.trPK('general', 'retry')).subscribe((result) => {
|
|
this.handlegetSectionTopicsResult(result);
|
|
|
|
})
|
|
}
|
|
handlegetSectionTopicsResult(result) {
|
|
// this.topicName=result.Mohemm_ITG_SectionTopicsList[0].topicName
|
|
this.topicTypeList = result.Mohemm_ITG_SectionTopicsList;
|
|
|
|
|
|
}
|
|
|
|
|
|
/*******************Create Ticket Function*************/
|
|
|
|
CreateTicket() {
|
|
|
|
var authUser =this.authService.getAuthenticatedRequest();
|
|
this.cs.startLoading();
|
|
var request = new FormData();
|
|
request.append('ticketTypeId', this.SelectedServiceType);
|
|
request.append('projectId', this.projctid);
|
|
request.append('departmentId', this.depType);
|
|
request.append('sectionId', this.secType);
|
|
request.append('sectionTopicId', this.topicType);
|
|
request.append('description', this.Description);
|
|
request.append('fileColl', this.selectedFile[0], this.selectedFile[0].name);
|
|
request.append('employeeNumber', authUser.P_USER_NAME);
|
|
request.append('ticketStatus', 'new');
|
|
request.append('channelId', '3');
|
|
request.append('Channel', authUser.Channel.toString());
|
|
request.append('LogInToken', authUser.LogInTokenID);
|
|
request.append('Token', authUser.TokenID);
|
|
request.append('EmployeeNumber', authUser.P_USER_NAME);
|
|
request.append('MobileNo', authUser.MobileNumber);
|
|
|
|
|
|
this.MowadhafiService.getCreateTicket(request, () => { }, this.ts.trPK('general', 'retry')).subscribe((result) => {
|
|
this.cs.stopLoading();
|
|
this.handlegetCreateTicketResult(result);
|
|
this.checkERM('After Service Submission');
|
|
//hear you have to redirect page
|
|
|
|
this.cs.openMyRequestPage();
|
|
})
|
|
}
|
|
handlegetCreateTicketResult(result) {
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public cancelRequest() {
|
|
this.cs.openMyRequestPage();
|
|
// this.menu.toggle();
|
|
}
|
|
|
|
|
|
/*******************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()
|
|
});
|
|
});
|
|
}
|
|
});
|
|
|
|
|
|
|
|
|
|
onFileSelected(input) {
|
|
if (!(this.filterAllowedType.indexOf(input.target.files[0].type) > -1)) {
|
|
let msg: string = "";
|
|
msg = this.ts.trPK("general", "noFileSelect");
|
|
this.cs.presentAlert(msg);
|
|
return;
|
|
} // todo: show alert that you tried uploading wrong files
|
|
else {
|
|
const file = input.target.files[0];
|
|
this.selectedFile = input.target.files;
|
|
|
|
|
|
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) {
|
|
|
|
this.indexLastObj++;
|
|
try {
|
|
let array = name.split(".");
|
|
let attachType: string = array[array.length - 1];
|
|
|
|
this.addAttachRequest.push({
|
|
AttachmentID: this.indexLastObj,
|
|
P_FILE_CONTENT_TYPE: attachType, //type.split('/')[1],
|
|
P_FILE_DATA: fileData.split(",")[1],
|
|
P_FILE_NAME: name, //.split('.')[0],
|
|
P_TRANSACTION_ID: this.TransactionID
|
|
});
|
|
} catch (e) { }
|
|
}
|
|
|
|
removeFile(objectitem) {
|
|
let objIndex1 = this.uploader.queue.findIndex(item => item == objectitem);
|
|
this.uploader.queue.splice(objIndex1, 1);
|
|
let objIndex = this.addAttachRequest.findIndex(
|
|
item => item.AttachmentID == objectitem.AttachmentID
|
|
);
|
|
this.addAttachRequest.splice(objIndex, 1);
|
|
}
|
|
|
|
|
|
submitRequest() {
|
|
|
|
}
|
|
|
|
|
|
checkERM(status) {
|
|
|
|
this.authService.checkAds({
|
|
EmployeeNumber: '',
|
|
ItgEnableAt: status, //After Service Submission
|
|
ItgServiceName: "Ticket"
|
|
}, () => { }, this.ts.trPK('general', 'ok')).subscribe(res => {
|
|
|
|
var result = JSON.parse(res.Mohemm_ITG_ResponseItem).result.data;
|
|
|
|
this.cs.sharedService.setSharedData(
|
|
result,
|
|
AuthenticationService.SERVEY_DATA
|
|
)
|
|
if (!CommonService.SKIP && result) {
|
|
if (result.notificationType == 'Survey') {
|
|
this.cs.navigateForward('/erm-channel/survey');
|
|
} else {
|
|
this.authService.adsDetails({
|
|
"ItgNotificationMasterId": result['notificationMasterId']
|
|
},
|
|
() => { }, this.ts.trPK('general', 'ok')
|
|
).subscribe((result) => {
|
|
var data = result.Mohemm_ITG_ResponseItem;
|
|
if (data) {
|
|
this.cs.sharedService.setSharedData(
|
|
JSON.parse(data),
|
|
AuthenticationService.ADS_DATA
|
|
);
|
|
this.cs.navigateForward('/erm-channel/home');
|
|
}
|
|
|
|
})
|
|
}
|
|
}
|
|
})
|
|
|
|
}
|
|
|
|
}
|