@ -1,9 +1,18 @@
import { Component , OnInit } from '@angular/core' ;
import { createVacationRequest } from './../model/createVacation.Request' ;
import { ReplacementServiceRequest } from './../model/replacement-Service.request' ;
import { notificationTypeRequest } from './../model/notification.Request' ;
import { vacationTypeResponse } from './../model/vacationType.Respond' ;
import { vacationRuleResponse } from './../model/vacationRule.Respond' ;
import { Component , OnInit , ElementRef } from '@angular/core' ;
import * as moment from 'moment' ;
import { VacationRuleServiceService } from '../service/vacation-rule-service.service' ;
import { TranslatorService } from 'src/app/hmg-common/services/translator/translator.service' ;
import { CommonService } from 'src/app/hmg-common/services/common/common.service' ;
import { LoginRequest } from 'src/app/hmg-common/services/authentication/models/login.request' ;
import { NavController , ModalController } from '@ionic/angular' ;
import { notificationTypeResponse } from '../model/notification.Respond' ;
import { Router , ActivatedRoute } from '@angular/router' ;
import { ReplacementListComponent } from '../replacement-list/replacement-list.component' ;
@Component ( {
selector : 'app-create-vacation-rule' ,
@ -30,7 +39,7 @@ export class CreateVacationRuleComponent implements OnInit {
itemType : any ;
notificationType : any ;
RespondAttributeList : any ;
// vacationRuleRequest: createVacationRequest;
vacationRuleRequest : createVacationRequest ;
REASSIGN_val : any ;
schemaNotific : any ;
notifTypeSel : any ;
@ -42,14 +51,346 @@ export class CreateVacationRuleComponent implements OnInit {
hideForwordEmployee : any ;
exampleJsonObject : any ;
constructor ( public vacationRuleService : VacationRuleServiceService , public ts : TranslatorService , public cs : CommonService ) {
constructor ( public vacationRuleService : VacationRuleServiceService , public ts : TranslatorService , public cs : CommonService ,
private elementRef : ElementRef , public navCtrl : NavController , public router : Router , public modalController : ModalController ,
private route : ActivatedRoute ) {
this . Sdate = moment ( ) . format ( 'YYYY-MM-DDTHH:mm:ssZ' ) ;
this . isUpdate = this . cs . sharedService . getSharedData ( 'isUpdate' ) ;
if ( this . isUpdate ) {
this . updateData = this . cs . sharedService . getSharedData ( vacationRuleResponse . SHARED_DATA , true ) ;
this . SelAction = this . updateData . ACTION ;
if ( this . updateData . ACTION == "RESPOND" && this . updateData . FYI_FLAG == "Y" ) {
this . SelAction = "Close"
}
this . notificationType = {
NOTIFICATION_NAME : this.updateData.NOTIFICATION_NAME ,
NOTIFICATION_DISPLAY_NAME : this.updateData.NOTIFICATION_SUBJECT ,
NOTIFICATION_SUBJECT : this.updateData.NOTIFICATION_SUBJECT ,
FYI_FLAG : this.updateData.FYI_FLAG
}
/*************** */
this . P_ITEM_TYPE_TITLE = this . updateData . ITEM_TYPE_DISPLAY_NAME ;
this . selEmployeeID = this . updateData . REPLACEMENT_USER_NAME ;
if ( this . selEmployeeID ) {
this . selEmployeeName = this . updateData . RULE_NAME ;
this . employeeSel = this . updateData . RULE_NAME ;
}
/************ */
this . msgVal = this . updateData . MESSAGE ;
this . notifTypeSel = this . updateData . ACTION ;
this . itemType = this . updateData ;
this . notificationType = this . updateData ;
//this.Sdate = this.updateData.BEGIN_DATE;
//this.Edate = this.updateData.END_DATE;
let _Sdate = this . updateData . BEGIN_DATE ? this . updateData . BEGIN_DATE : "" ;
let _Edate = this . updateData . END_DATE ? this . updateData . END_DATE : "" ;
//let tzoffset = moment().utcOffset(); //offset in milliseconds
if ( _Sdate ) {
this . Sdate = moment ( _Sdate ) . format ( 'YYYY-MM-DDTHH:mm:ssZ' ) ;
//this.Sdate = (new Date(myStartTime - tzoffset)).toISOString().slice(0, -1);
//this.startTime = this.Sdate;
}
if ( _Edate ) {
this . Edate = moment ( _Edate ) . format ( 'YYYY-MM-DDTHH:mm:ssZ' ) ;
//this.Edate = (new Date(myEndTime - tzoffset)).toISOString().slice(0, -1);
// this.endTime = this.Edate;
}
//this.schemaNotific =this.updateData.RespondAttributeList;
//this.notifTypeSel=this.REASSIGN_val[0].RADIO_BUTTON_LABEL;
//console.log(this.notifTypeSel);
// this.getNotificationReassign();
} else {
this . isUpdate = false ;
this . SelAction = "" ;
this . itemType = this . cs . sharedService . getSharedData ( vacationTypeResponse . SHARED_DATA , true ) ;
this . notificationType = this . cs . sharedService . getSharedData ( notificationTypeResponse . SHARED_DATA , true ) ;
}
this . Notification_Title = this . notificationType . NOTIFICATION_DISPLAY_NAME ;
this . P_ITEM_TYPE_TITLE = this . itemType . ITEM_TYPE_DISPLAY_NAME ;
if ( this . notificationType . FYI_FLAG == 'Y' ) {
this . showForType_Y = true ;
} else {
this . showForType_Y = false ;
}
if ( this . itemType . ITEM_TYPE == "*" ) {
this . isDeliver = false ;
} else {
this . isDeliver = true ;
}
}
ngOnInit() {
ngOnInit() {
this . getNotificationReassign ( ) ;
this . respondAttributes ( ) ;
}
async SearchReplacment() {
const modal = await this . modalController . create ( {
component : ReplacementListComponent
} ) ;
modal . onDidDismiss ( )
. then ( ( data ) = > {
const user = data . data . empData ;
console . log ( data )
console . log ( user ) ;
if ( data ) {
this . selEmployeeName = user . EMPLOYEE_DISPLAY_NAME ;
this . selEmployeeID = user . USER_NAME ;
this . employeeSel = this . selEmployeeName + "," + this . selEmployeeID
}
} ) ;
return await modal . present ( ) ;
}
clearEmployee() {
this . selEmployeeName = "" ;
this . selEmployeeID = "" ;
}
ApplyFunc() {
( this . elementRef . nativeElement . querySelectorAll ( 'ion-item' ) as HTMLElement [ ] ) . forEach ( ( x ) = > {
if ( x . classList . contains ( 'requiredItem' ) ) {
x . classList . add ( 'ng-touched' ) ;
x . classList . remove ( 'ng-untouched' ) ;
}
} ) ;
// console.log(this.msgVal)
let msg : string = "" ;
if ( this . notifTypeSel == undefined ) {
msg = this . ts . trPK ( 'vacation-rule' , 'fillAction' ) ;
// this.common.showAlert(msg);
this . cs . presentAlert ( msg ) ;
} else if ( this . msgVal == undefined ) {
msg = this . ts . trPK ( 'vacation-rule' , 'fillMsg' ) ;
// this.common.showAlert(msg);
this . cs . presentAlert ( msg ) ;
} else if ( this . Sdate == undefined ) {
msg = this . ts . trPK ( 'vacation-rule' , 'fillSDate' ) ;
// this.common.showAlert(msg);
this . cs . presentAlert ( msg ) ;
} else {
var responseAttrDic = this . exampleJsonObject ;
this . P_RESPOND_ATTRIBUTES_TBL = [ ] ;
for ( let key in responseAttrDic ) {
let obj : any = { } ;
obj . ATTRIBUTE_NAME = key ;
if ( typeof responseAttrDic [ key ] === "number" ) {
obj . ATTRIBUTE_NUMBER_VALUE = responseAttrDic [ key ] ;
}
// else if (isDate(responseAttrDic[key])) {
// obj.ATTRIBUTE_DATE_VALUE = responseAttrDic[key];
// }
else {
obj . ATTRIBUTE_TEXT_VALUE = responseAttrDic [ key ] ;
}
this . P_RESPOND_ATTRIBUTES_TBL . push ( obj ) ;
}
let repUserName = this . selEmployeeID ;
if ( this . hideForwordEmployee && this . hideForwordEmployee . ATTRIBUTE_NAME ) {
let obj : any = { } ;
repUserName = "" ;
obj . ATTRIBUTE_NAME = this . hideForwordEmployee . ATTRIBUTE_NAME ;
obj . ATTRIBUTE_TEXT_VALUE = this . selEmployeeID ;
this . P_RESPOND_ATTRIBUTES_TBL . push ( obj ) ;
}
let pAction = "" ;
pAction = this . getActionValue ( ) ;
let jsonSDate = "" ;
let jsonEDate = "" ;
if ( this . Sdate ) {
// let x: any; let y: any;
// x = moment(this.Sdate).format('YYYY/MM/DD');
// if (this.startTime)
// y = moment(this.startTime).format('hh:mm:ss');
// else
// y='00:00:00'
// jsonSDate = this.common.convertISODateToJsonDate(x + " " + y);
let startDate = moment ( this . Sdate ) . format ( 'YYYY-MM-DDTHH:mm:ssZ' ) ;
jsonSDate = this . cs . convertISODateToJsonDate ( startDate ) ;
} else {
jsonSDate = null ;
}
if ( this . Edate ) {
// let x: any; let y: any;
// x = moment(this.Edate).format('YYYY/MM/DD');
// if (this.endTime)
// y = this.endTime;
// else
// y='00:00:00'
let endDate = moment ( this . Edate ) . format ( 'YYYY-MM-DDTHH:mm:ssZ' ) ;
jsonEDate = this . cs . convertISODateToJsonDate ( endDate ) ;
//jsonEDate = this.common.convertISODateToJsonDate(x + " " + y);
} else {
jsonEDate = null ;
}
let request : createVacationRequest = new createVacationRequest ( ) ;
request . P_BEGIN_DATE = jsonSDate ;
request . P_END_DATE = jsonEDate ;
request . P_MESSAGE = this . msgVal ;
request . P_REPLACEMENT_USER_NAME = repUserName ;
request . P_ITEM_TYPE = this . itemType . ITEM_TYPE ;
request . P_NOTIFICATION_NAME = this . notificationType . NOTIFICATION_NAME ;
request . P_ACTION = pAction ;
request . RespondAttributeList = this . P_RESPOND_ATTRIBUTES_TBL ;
this . vacationRuleRequest = request ;
this . vacationRuleService . createVacationRule ( request , ( ) = > {
this . ApplyFunc ( ) ;
} , this . ts . trPK ( 'general' , 'retry' ) ) . subscribe ( ( result ) = > {
if ( this . cs . validResponse ( result ) ) {
console . log ( result ) ;
this . handlecreateVacationResult ( result ) ;
} else {
this . cs . presentAlert ( result . ErrorEndUserMessage ) ;
}
} ) ;
}
}
handlecreateVacationResult ( result ) {
if ( this . cs . validResponse ( result ) ) {
//this.navCtrl.pop();
this . cs . JustAlertDialog ( this . ts . trPK ( 'general' , 'ok' ) , this . ts . trPK ( 'vacation-rule' , 'rule-success' ) )
this . goToStart ( ) ;
// this.navCtrl.push("VacationRulePage");
// let index= this.navCtrl.indexOf('VacationRulePage');
// this.navCtrl.popTo('VacationRulePage');
}
}
goToStart() {
// let index: number;
// let views: any[] = this.navCtrl()
// let found: boolean = views.some((view, i) => {
// index = i
// return (view.id == 'VacationRulePage')
// })
// found ? this.navCtrl.popTo(views[index]) : this.navCtrl.push("HomePage")
this . cs . navigateRoot ( '/home' )
}
updateVacationRule() {
( this . elementRef . nativeElement . querySelectorAll ( 'ion-item' ) as HTMLElement [ ] ) . forEach ( ( x ) = > {
if ( x . classList . contains ( 'requiredItem' ) ) {
x . classList . add ( 'ng-touched' ) ;
x . classList . remove ( 'ng-untouched' ) ;
}
} ) ;
let msg : string = "" ;
if ( this . notifTypeSel == undefined ) {
msg = this . ts . trPK ( 'vacation-rule' , 'fillAction' ) ;
// this.common.showAlert(msg);
} else if ( this . msgVal == undefined ) {
msg = this . ts . trPK ( 'vacation-rule' , 'fillMsg' ) ;
// this.common.showAlert(msg);
} else if ( this . Sdate == undefined ) {
msg = this . ts . trPK ( 'vacation-rule' , 'fillSDate' ) ;
// this.common.showAlert(msg);
} else {
var responseAttrDic = this . exampleJsonObject ;
this . P_RESPOND_ATTRIBUTES_TBL = [ ] ;
for ( let key in responseAttrDic ) {
let obj : any = { } ;
obj . ATTRIBUTE_NAME = key ;
if ( typeof responseAttrDic [ key ] === "number" ) {
obj . ATTRIBUTE_NUMBER_VALUE = responseAttrDic [ key ] ;
}
// else if (isDate(responseAttrDic[key])) {
// obj.ATTRIBUTE_DATE_VALUE = responseAttrDic[key];
// }
else {
obj . ATTRIBUTE_TEXT_VALUE = responseAttrDic [ key ] ;
}
this . P_RESPOND_ATTRIBUTES_TBL . push ( obj ) ;
}
let repUserName = this . selEmployeeID ;
if ( this . hideForwordEmployee && this . hideForwordEmployee . ATTRIBUTE_NAME ) {
let obj : any = { } ;
repUserName = "" ;
obj . ATTRIBUTE_NAME = this . hideForwordEmployee . ATTRIBUTE_NAME ;
obj . ATTRIBUTE_TEXT_VALUE = this . selEmployeeID ;
this . P_RESPOND_ATTRIBUTES_TBL . push ( obj ) ;
}
let pAction = "" ;
pAction = this . getActionValue ( ) ;
let jsonSDate = "" ;
let jsonEDate = "" ;
// if (this.Sdate) {
// let x: any; let y: any;
// x = moment(this.Sdate).format('YYYY/MM/DD');
// if (this.startTime)
// y = moment(this.startTime).format('hh:mm:ss');
// jsonSDate = this.common.convertISODateToJsonDate(x + " " + y);
// } else {
// jsonSDate = null;
// }
if ( this . Sdate ) {
// let x: any; let y: any;
// x = moment(this.Sdate).format('YYYY/MM/DD');
// if (this.startTime)
// y = moment(this.startTime).format('hh:mm:ss');
// else
// y='00:00:00'
// jsonSDate = this.common.convertISODateToJsonDate(x + " " + y);
let startDate = moment ( this . Sdate ) . format ( 'YYYY-MM-DDTHH:mm:ssZ' ) ;
jsonSDate = this . cs . convertISODateToJsonDate ( startDate ) ;
} else {
jsonSDate = null ;
}
// if (this.Edate)
// jsonEDate = this.common.convertISODateToJsonDate(this.Edate + " " + this.endTime);
// else
// jsonEDate = null;
if ( this . Edate ) {
// let x: any; let y: any;
// x = moment(this.Edate).format('YYYY/MM/DD');
// if (this.endTime)
// y = moment(this.endTime).format('hh:mm:ss');
// else
// y='00:00:00'
// jsonEDate = this.common.convertISODateToJsonDate(x + " " + y);
let endDate = moment ( this . Edate ) . format ( 'YYYY-MM-DDTHH:mm:ssZ' ) ;
jsonEDate = this . cs . convertISODateToJsonDate ( endDate ) ;
} else {
jsonEDate = null ;
}
let body : any = {
P_RULE_ID : this.updateData.RULE_ID ,
P_BEGIN_DATE : jsonSDate ,
P_END_DATE : jsonEDate ,
P_MESSAGE : this.msgVal ,
P_REPLACEMENT_USER_NAME : repUserName ,
P_ACTION : pAction ,
RespondAttributeList : this.P_RESPOND_ATTRIBUTES_TBL
}
//let request = this.sharedData.getSharedData(vacationRuleResponse.SHARED_DATA);
this . vacationRuleService . updateVacationRule (
body ) .
subscribe ( ( result : Response ) = > {
this . handleupdateVacationResult ( result ) ;
} ) ;
}
}
handleupdateVacationResult ( result ) {
if ( this . cs . validResponse ( result ) ) {
this . cs . JustAlertDialog ( this . ts . trPK ( 'general' , 'ok' ) , this . ts . trPK ( 'vacation-rule' , 'rule-update-success' ) )
this . goToStart ( ) ;
//this.navCtrl.popTo('VacationRulePage');
}
}
getNotificationReassign() {
let request : LoginRequest = new LoginRequest ( ) ;
@ -68,6 +409,92 @@ export class CreateVacationRuleComponent implements OnInit {
} ) ;
}
respondAttributes() {
let request : notificationTypeRequest = new notificationTypeRequest ( ) ;
request . P_NOTIFICATION_NAME = this . notificationType . NOTIFICATION_NAME ;
request . P_ITEM_TYPE = this . itemType . ITEM_TYPE ;
// this.vacationRuleService.respondAttributes(
// request).
// subscribe((result: Response) => {
// this.handlerespondAttributesResult(result);
// });
this . vacationRuleService . respondAttributes ( request , ( ) = > {
this . respondAttributes ( ) ;
} , this . ts . trPK ( 'general' , 'retry' ) ) . subscribe ( ( result ) = > {
this . handlerespondAttributesResult ( result ) ;
} ) ;
}
handlerespondAttributesResult ( result ) {
if ( this . cs . validResponse ( result ) ) {
this . RespondAttributeList = result . RespondAttributesList ;
if ( result . RespondRolesList != "" && result . RespondRolesList [ 0 ] . ATTRIBUTE_NAME != null && result . RespondRolesList [ 0 ] . ATTRIBUTE_NAME != undefined ) {
this . Resp2_val = result . RespondRolesList [ 0 ] . ATTRIBUTE_NAME ;
this . hideForwordEmployee = result . RespondRolesList [ 0 ] ;
}
if ( result . P_Schema )
this . schemaNotific = JSON . parse ( result . P_Schema ) ;
this . reverseAction ( ) ;
if ( this . isUpdate ) {
this . fillResposeAtrributes ( result . RespondAttributesList ) ;
}
// ATTRIBUTE_DISPLAY_NAME: "Note"
// ATTRIBUTE_FORMAT: "4000"
// ATTRIBUTE_NAME: "WF_NOTE"
// ATTRIBUTE_TYPE: "VARCHAR2"
}
}
fillResposeAtrributes ( respList ) {
let body = {
P_RULE_ID : this.updateData.RULE_ID ,
GetRespondAttributeValueTBL : respList
}
this . vacationRuleService . getRespondAttributeValues (
body ) .
subscribe ( ( result : Response ) = > {
this . handleFillResponseAttr ( result ) ;
} ) ;
}
handleFillResponseAttr ( result ) {
if ( this . cs . validResponse ( result ) ) {
if ( result . GetRespondAttributeValueList && result . GetRespondAttributeValueList . length > 0 ) {
let resp_val : any = result . GetRespondAttributeValueList [ 0 ] . P_ATTRIBUTE_NAME ;
let Emp_ID : any = result . GetRespondAttributeValueList [ 0 ] . P_ATTRIBUTE_TEXT_VALUE ;
let valueList = result . GetRespondAttributeValueList ;
var obj = { } ;
if ( resp_val == this . Resp2_val ) {
let request : ReplacementServiceRequest = new ReplacementServiceRequest ( ) ;
request . P_SEARCH_USER_NAME = Emp_ID ;
request . P_SEARCH_EMPLOYEE_DISPLAY_NAME = "" ;
request . P_SEARCH_EMAIL_ADDRESS = "" ;
request . P_PAGE_NUM = 1 ;
request . P_PAGE_LIMIT = 1000
this . vacationRuleService . getReplacementList ( request ) .
subscribe ( ( result : Response ) = > {
this . handleFillRole ( result ) ;
} ) ;
}
for ( let i = 0 ; i < valueList . length ; i ++ ) {
obj [ valueList [ i ] . P_ATTRIBUTE_NAME ] = valueList [ i ] . P_ATTRIBUTE_TEXT_VALUE ;
}
this . exampleJsonObject = obj ;
// this.exampleJsonObject = new Map(valueList.map(obj => [ obj., obj.P_ATTRIBUTE_TEXT_VALUE ]));
}
}
}
handleFillRole ( result ) {
if ( this . cs . validResponse ( result ) ) {
this . selEmployeeName = result . ReplacementList [ 0 ] . EMPLOYEE_DISPLAY_NAME ;
this . selEmployeeID = result . ReplacementList [ 0 ] . USER_NAME ;
}
}
reverseAction() {
if ( this . updateData ) {
switch ( this . SelAction ) {
@ -99,9 +526,40 @@ export class CreateVacationRuleComponent implements OnInit {
}
}
respondAttributes() {
getActionValue ( ) : string {
let pAction = "" ;
//this.pAction = this.notifTypeSel;
//console.log(this.pAction);
if ( this . notifTypeSel ) {
switch ( this . notifTypeSel ) {
case 'DELEGATE' : {
pAction = "FORWARD" ;
break ;
}
case 'RESPOND' : {
pAction = "RESPOND" ;
break ;
}
case 'CLOSE' : {
pAction = "RESPOND" ;
break ;
}
case 'DELIVER' : {
pAction = "NOOP" ;
break ;
}
case 'TRANSFER' : {
pAction = "TRANSFER" ;
break ;
}
default : {
pAction = "" ;
break ;
}
}
return pAction ;
}
}
}