Q3 changes

MOE_DEV_NEW_TEMPORARY_DESIGN
Sultan Khan 4 years ago
parent 3be79111d2
commit d4c09d7eb7

@ -1,46 +1,47 @@
import { NgModule } from '@angular/core';
import { PreloadAllModules, RouterModule, Routes } from '@angular/router';
const routes: Routes = [
{ path: '', redirectTo: 'authentication/login', pathMatch: 'full' },
{
path: 'authentication', loadChildren: './authentication/authentication.module#AuthenticationPageModule'
},
{ path: 'home', loadChildren: './home/home.module#HomePageModule' },
{ path: 'profile', loadChildren: './profile/profile.module#ProfilePageModule' },
{ path: 'vacation-rule', loadChildren: './vacation-rule/vacation-rule.module#VacationRulePageModule' },
{ path: 'accrual-balances', loadChildren: './accrual-balances/accrual-balances.module#AccrualBalancesPageModule' },
{ path: 'my-team', loadChildren: './my-team/my-team.module#MyTeamPageModule' },
{ path: 'attendance', loadChildren: './attendance/attendance.module#AttendancePageModule' },
{ path: 'eit', loadChildren: './eit/eit.module#EITPageModule' },
{ path: 'absence', loadChildren: './absence/absence.module#AbsencePageModule' },
{ path: 'notification', loadChildren: './notification/notification.module#NotificationPageModule' },
{ path: 'my-specialist', loadChildren: './my-specialist/my-specialist.module#MySpecialistPageModule' },
{ path: 'my-subordinate', loadChildren: './my-subordinate/my-subordinate.module#MySubordinatePageModule' },
{ path: 'time-card', loadChildren: './time-card/time-card.module#TimeCardPageModule' },
{ path: 'payslip', loadChildren: './payslip/payslip.module#PayslipPageModule' },
{ path: 'attendance-tracking', loadChildren: './attendance-tracking/attendance-tracking.module#AttendanceTrackingPageModule' },
{ path: 'itemforsale', loadChildren: './itemforsale/itemforsale.module#ItemforsalePageModule' },
{ path: 'offersdiscount', loadChildren: './offersdiscount/offersdiscount.module#OffersdiscountPageModule' },
{ path: 'mowadhafi', loadChildren: './mowadhafi/mowadhafi.module#MowadhafiPageModule' },
{ path: 'erm-channel', loadChildren: './erm-channel/erm-channel.module#ErmChannelPageModule' },
{ path: 'backend-integrations', loadChildren: './backend-integrations/backend-integrations.module#BackendIntegrationsPageModule' }, { path: 'reports', loadChildren: './reports/reports.module#ReportsPageModule' },
{ path: 'concurrent-report', loadChildren: './reports/concurrent-report/concurrent-report.module#ConcurrentReportPageModule' },
import { NgModule } from '@angular/core';
import { PreloadAllModules, RouterModule, Routes } from '@angular/router';
const routes: Routes = [
{ path: '', redirectTo: 'authentication/login', pathMatch: 'full' },
{
path: 'authentication', loadChildren: './authentication/authentication.module#AuthenticationPageModule'
},
{ path: 'home', loadChildren: './home/home.module#HomePageModule' },
{ path: 'profile', loadChildren: './profile/profile.module#ProfilePageModule' },
{ path: 'vacation-rule', loadChildren: './vacation-rule/vacation-rule.module#VacationRulePageModule' },
{ path: 'accrual-balances', loadChildren: './accrual-balances/accrual-balances.module#AccrualBalancesPageModule' },
{ path: 'my-team', loadChildren: './my-team/my-team.module#MyTeamPageModule' },
{ path: 'attendance', loadChildren: './attendance/attendance.module#AttendancePageModule' },
{ path: 'eit', loadChildren: './eit/eit.module#EITPageModule' },
{ path: 'absence', loadChildren: './absence/absence.module#AbsencePageModule' },
{ path: 'notification', loadChildren: './notification/notification.module#NotificationPageModule' },
{ path: 'my-specialist', loadChildren: './my-specialist/my-specialist.module#MySpecialistPageModule' },
{ path: 'my-subordinate', loadChildren: './my-subordinate/my-subordinate.module#MySubordinatePageModule' },
{ path: 'time-card', loadChildren: './time-card/time-card.module#TimeCardPageModule' },
{ path: 'payslip', loadChildren: './payslip/payslip.module#PayslipPageModule' },
{ path: 'attendance-tracking', loadChildren: './attendance-tracking/attendance-tracking.module#AttendanceTrackingPageModule' },
{ path: 'itemforsale', loadChildren: './itemforsale/itemforsale.module#ItemforsalePageModule' },
{ path: 'offersdiscount', loadChildren: './offersdiscount/offersdiscount.module#OffersdiscountPageModule' },
{ path: 'mowadhafi', loadChildren: './mowadhafi/mowadhafi.module#MowadhafiPageModule' },
{ path: 'erm-channel', loadChildren: './erm-channel/erm-channel.module#ErmChannelPageModule' },
{ path: 'backend-integrations', loadChildren: './backend-integrations/backend-integrations.module#BackendIntegrationsPageModule' },
{ path: 'reports', loadChildren: './reports/reports.module#ReportsPageModule' },
{ path: 'termination', loadChildren: './termination/termination.module#TerminationPageModule' },
{ path: 'pending-transaction', loadChildren: './pending-transaction/pending-transaction.module#PendingTransactionPageModule' }
];
@NgModule({
imports: [
/*RouterModule.forRoot(routes, { preloadingStrategy: PreloadAllModules}),*/
RouterModule.forRoot(routes),
],
exports: [RouterModule]
})
export class AppRoutingModule { }
];
@NgModule({
imports: [
/*RouterModule.forRoot(routes, { preloadingStrategy: PreloadAllModules}),*/
RouterModule.forRoot(routes),
],
exports: [RouterModule]
})
export class AppRoutingModule { }

@ -35,4 +35,7 @@
.my-custom-modal-css .modal-wrapper {
width: 95%;
height: 60%;
}
.dependent-title .ion-title{
font-size:0.4cm !important;
}

@ -3,6 +3,7 @@ import { EitRespModel } from './eit.response.model'
export class AddEitResponse extends Response {
public static SHARED_DATA = 'add-eit-response';
public static isContact = 'isContact';
SubmitEITTransactionList: EitRespModel;
}

@ -1290,6 +1290,13 @@ export class CommonService {
public openAddAddress() {
this.nav.navigateForward(['/profile/add-address']);
}
public openAddContact() {
this.nav.navigateForward(['/profile/contact']);
}
public openAddUpdateContact() {
this.nav.navigateForward(['/profile/add-update-contact']);
}
public openConfirmAddAddress() {
this.nav.navigateForward(['/profile/confirm-add-address']);
}

@ -12,9 +12,13 @@
<div>
<ion-card>
<ion-card-header>
<img *ngIf="itemDetails.itemAttachments[0]" [src]="item.itemAttachments[0]" />
<img *ngIf="!itemDetails.itemAttachments[0]" src="assets/imgs/no-images.png" />
<!-- <img *ngIf="itemDetails.itemAttachments[0]" [src]="item.itemAttachments[0]" />
<img *ngIf="!itemDetails.itemAttachments[0]" src="assets/imgs/no-images.png" /> -->
<ion-slides *ngIf="itemDetails.itemAttachments.length>0">
<ion-slide *ngFor="let slide of itemDetails.itemAttachments">
<img [src]="getImgContent('data:image/png;base64, ' +slide.content)" />
</ion-slide>
</ion-slides>
<ion-card-title *ngIf="direction == 'ltr'">{{itemDetails.title}}</ion-card-title>
<ion-card-title *ngIf="direction =='rtl'">{{itemDetails.title_Ar}}</ion-card-title>
</ion-card-header>

@ -3,6 +3,7 @@ import { CommonService } from 'src/app/hmg-common/services/common/common.service
import { TranslatorService } from 'src/app/hmg-common/services/translator/translator.service';
import { ItemForSaleService } from '../services/service.service';
import * as moment from 'moment';
import { DomSanitizer, SafeUrl } from '@angular/platform-browser';
@Component({
selector: 'app-item-details',
templateUrl: './item-details.component.html',
@ -12,7 +13,7 @@ export class ItemDetailsComponent implements OnInit {
itemDetails: any = {};
direction: any;
constructor(public ts: TranslatorService, public cs: CommonService,) { }
constructor(public ts: TranslatorService, public cs: CommonService, private sanitizer: DomSanitizer,) { }
ngOnInit() {
this.direction = TranslatorService.getCurrentDirection();
@ -22,5 +23,7 @@ export class ItemDetailsComponent implements OnInit {
getDate(date) {
return moment(date, "YYYY-MM-DD HH:mm:ss").format("DD-MMM-YYYY");
}
getImgContent(imgFile): SafeUrl {
return this.sanitizer.bypassSecurityTrustUrl(imgFile);
}
}

@ -62,8 +62,8 @@
<ion-col size="6" (click)="openDetails(item)" *ngFor="let item of items">
<ion-card>
<ion-card-header>
<img *ngIf="item.itemAttachments[0]" [src]="item.itemAttachments[0]" />
<img *ngIf="!item.itemAttachments[0]" src="assets/imgs/no-images.png" />
<img *ngIf="item.itemAttachments[0]" [src]="getImgContent('data:image/png;base64, ' +item.itemAttachments[0].content)" />
<img *ngIf="!item.itemAttachments[0]" src="/assets/imgs/no-images.png" />
<ion-card-title *ngIf="direction == 'ltr'">{{item.title}}</ion-card-title>
<ion-card-title *ngIf="direction =='rtl'">{{item.title_Ar}}</ion-card-title>

@ -4,6 +4,7 @@ import { TranslatorService } from 'src/app/hmg-common/services/translator/transl
import { ItemForSaleService } from '../services/service.service';
import { deepCopy } from '@angular-devkit/core/src/utils/object';
import * as moment from 'moment';
import { DomSanitizer, SafeUrl } from '@angular/platform-browser';
@Component({
selector: 'app-items',
@ -19,7 +20,7 @@ export class ItemsComponent implements OnInit {
pageNo: number = 1;
tempSearch: any = [];
itemsByEmployee: any = [];
constructor(public ts: TranslatorService, public cs: CommonService, private itemService: ItemForSaleService) { }
constructor(public ts: TranslatorService, private sanitizer: DomSanitizer, public cs: CommonService, private itemService: ItemForSaleService) { }
ngOnInit() {
@ -96,4 +97,8 @@ export class ItemsComponent implements OnInit {
getDate(date) {
return moment(date, "YYYY-MM-DD HH:mm:ss").format("DD-MMM-YYYY");
}
getImgContent(imgFile): SafeUrl {
return this.sanitizer.bypassSecurityTrustUrl(imgFile);
}
}

@ -8,54 +8,57 @@
<div class="header"></div>
<div class="bottom"></div>
<div #containerDiv id="containerDiv">
<div class="search-header" *ngIf="!transactionDetails">
<ion-row class="ion-justify-content-center">
<ion-col [size]="11">
<ion-item>
<ion-label>{{ 'general,select' | translate}}</ion-label>
<ion-select [(ngModel)]="selectedTransaction" (ionChange)="selectFunctions()" [placeholder]="'general,select' | translate"
[okText]="'general,ok' | translate" [cancelText]="'general,cancel' | translate" class="large-ion-select">
<ion-select-option *ngFor="let transaction of transactions" [value]="transaction">
{{ transaction.FUNCTION_PROMPT}}</ion-select-option></ion-select>
</ion-item>
<div [ngClass]=" direction === 'en' ? 'custom-text-area-element Field-en' : 'custom-text-area-element Field-ar'" >
<label class="label" position='floating' class="colBold requiredClass">{{ 'general,select' | translate}} </label>
<select name="selectAbsenceType" class="label-Select" #selectAbsenceType="ngModel" [(ngModel)]="selectedTransaction" required>
<option value="noType" selected hidden selected><p>{{ts.trPK('absenceList','selectType')}}</p></option>
<option *ngFor="let transaction of transactions" [value]="transaction.FUNCTION_ID">{{ transaction.FUNCTION_PROMPT}} </option>
</select>
</div>
<!-- </ion-item> -->
</ion-col>
</ion-row>
<div class="date-container">
<ion-row class="ion-justify-content-center">
<ion-col [size]="11">
<ion-item>
<div class="date-time-icon date-primary"></div>
<ion-col [size]="6">
<ion-item [ngClass]=" direction === 'en' ? 'custom-text-area-element Field-en padding_date' : 'custom-text-area-element padding_date Field-ar'" >
<div class="date-time-icon date-primary"> <ion-icon name="calendar" class="date-icon"></ion-icon></div>
<ion-label>{{ 'general,from-date' | translate}}</ion-label>
<ion-datetime
[placeholder]="Select"
<ion-datetime
display-format="DD/MM/YYYY"
[min]="1900"
[max]="2100"
[(ngModel)]="dateFrom"
doneText="Done"
cancelText="Cancel"
[doneText]="'general,done' | translate"
[cancelText]="'general,cencel' | translate"
></ion-datetime>
</ion-item>
</ion-col>
<ion-col [size]="11">
<ion-item>
<div class="date-time-icon date-primary"></div>
<ion-col [size]="6">
<ion-item [ngClass]=" direction === 'en' ? 'custom-text-area-element padding_date Field-en' : 'custom-text-area-element padding_date Field-ar'" >
<div class="date-time-icon date-primary"> <ion-icon class="date-icon" name="calendar"></ion-icon></div>
<ion-label>{{ 'general,to-date' | translate}}</ion-label>
<ion-datetime
<ion-datetime
[placeholder]="Select"
display-format="DD/MM/YYYY"
[min]="1900"
[max]="2100"
[(ngModel)]="dateTo"
doneText="Done"
cancelText="Cancel"
[doneText]="'general,done' | translate"
[cancelText]="'general,cencel' | translate"
></ion-datetime>
</ion-item>
</ion-col>
</ion-row>
</div>
</div>
<div class="data-content">
<div class="no-dataDiv"
*ngIf="transactionDetails && transactionDetails.length==0">
@ -67,20 +70,22 @@
</div>
</div>
<div *ngIf="transactionDetails && transactionDetails.length>0" class="transaction-list">
<ion-item *ngFor="let transaction of transactionDetails">
<ion-card *ngFor="let transaction of transactionDetails">
<div class="date">{{transaction.CREATION_DATE}}</div>
<ion-label class="ion-text-wrap">
<ion-text color="primary">
<p class="display-created " >{{'transaction, created-for' | translate}}</p>
<p class="display-created bold" >{{'transaction, created-for' | translate}}</p>
<p class="display-created bold padding">{{transaction.TRANSACTION_CREATED_FOR}}</p>
</ion-text>
<ion-text color="secondary">
<p class="color-black">{{'transaction, request-type' | translate}}</p>
<p>{{transaction.REQUEST_TYPE}}</p>
<div class="">
<p class="color-black display-inline">{{'transaction, request-type' | translate}}</p>
<p class="display-inline red">{{transaction.REQUEST_TYPE}}</p>
</div>
</ion-text>
</ion-label>
</ion-item>
</ion-card>
</div>
</div>
@ -88,7 +93,10 @@
<ion-footer>
<div class="centerDiv">
<ion-button class="addEitOkButton" [disabled]="!isValid()" color="customnavy" ion-button (click)="getPendingRequestDetails()">
<ion-button *ngIf="!transactionDetails" class="footer-button" style="background: var(--newgreen)!important;border-radius: 10px; --background: transparent; width:80%" ion-button [disabled]="!isValid()" (click)="getPendingRequestDetails()">
{{'general, submit' | translate}}</ion-button>
<ion-button *ngIf="transactionDetails && transactionDetails.length>0" class="footer-button" style="background: var(--newgreen)!important;border-radius: 10px; --background: transparent; width:80%" ion-button (click)="transactionDetails=null">
{{'general, reset' | translate}}</ion-button>
</div>
</ion-footer>
</ion-footer>

@ -3,23 +3,105 @@
color:#000;
}
#containerDiv{
margin-top:20px;
}
.padding{
padding-left:5px;
padding-right: 5px;
}
.bold{
font-weight: bold;
font-size: 16px;
}
.color-black{
color:#000;
}
.date{
position: absolute;
font-size: 12px;
font-size: 14px;
padding: 10px;
right:0;
width: 100px;
color:#969696;
}
.transaction-list{
margin-top:20px;
}
.date-container{
margin:0px 20px;
}
.label{
font-size: 16px;
// margin-left: 15px;
color: #a2a5a6 !important;
display: block;
overflow: hidden;
-webkit-box-flex: 1;
-webkit-flex: 1;
-ms-flex: 1;
flex: 1;
/* font-size: inherit; */
// text-overflow: ellipsis;
// white-space: nowrap;
white-space: normal;
// padding-top: 10px;
padding: 5px 0px;
padding-left: 10px !important;
margin: 10px auto;
:root[dir="ltr"]{
font-family: var(--fontFamilySemiBoldEN) !important;
}
:root[dir="rtl"]{
font-family: var(--fontFamilyIOSAR) !important;
font-weight: bold;
}
}
.Field-en{
border-radius: 30px;
border: 1px solid #a2a5a6!important;
margin-bottom: 15px;
padding-left: 20px !important;
padding-top: 6px !important;
color: #999999 !important;
}
.Field-ar{
border-radius: 30px;
border: 1px solid #a2a5a6!important;
margin-bottom: 20px;
padding-right: 20px !important;
padding-top: 6px !important;
color: #999999 !important;
}
select{
width: 300px !important;
border: none !important;
}
.padding_date{
padding-left:5px !important;
}
.date-icon{
font-size: 20px;
left: -1px;
position: relative;
top: 2px;
}
ion-card{
padding: 20px 10px 20px 10px;
border-radius: 11px;
box-shadow: 0px 1px 2px 1px #ccc;
}
.display-inline{
display:inline-block;
}
.red{
color:#CA3332;
font-weight: 600;
margin:0px 5px;
}

@ -37,7 +37,7 @@ export class HomeComponent implements OnInit {
getPendingRequestDetails() {
this.cs.startLoading();
this.trServcice.getPendingRequestDetails({
'P_FUNCTION_ID': this.selectedTransaction.FUNCTION_ID,
'P_FUNCTION_ID': this.selectedTransaction,
'P_CREATION_DATE_FROM': "/Date(" + Date.parse(this.dateFrom) + '+0300' + ")/",
'P_CREATION_DATE_TO': "/Date(" + Date.parse(this.dateTo) + '+0300' + ")/",
'P_PAGE_NUM': 1,

@ -0,0 +1,27 @@
<app-generic-header
showBack="!getPassdirfromNotifiPage"
[updateDirection]="getPassdirfromNotifiPage"
[headerText]="headerTitle"
(trigger)="closeModal()"
class="dependent-title"
>
</app-generic-header>
<ion-content padding>
<ion-item class="country dynamicField" lines="none" *ngIf="targetValue === 'correct' && showEffectiveDate">
<ion-label>Effective Date</ion-label>
<ion-label>{{showEffectiveDate}}</ion-label>
</ion-item>
<div #containerDiv id="containerDiv">
<div #containerDivTwo id="containerDivTwo"></div>
</div>
</ion-content>
<ion-footer>
<div class="centerDiv">
<ion-button class="addEitOkButton" color="customnavy" ion-button (click)="submitBasicDetailsTransaction()">
{{'vacation-rule, next-label' | translate}}</ion-button>
</div>
</ion-footer>

@ -0,0 +1,27 @@
import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { AddUpdateContactComponent } from './add-update-contact.component';
describe('AddUpdateContactComponent', () => {
let component: AddUpdateContactComponent;
let fixture: ComponentFixture<AddUpdateContactComponent>;
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [ AddUpdateContactComponent ],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
})
.compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(AddUpdateContactComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});

@ -62,7 +62,7 @@ export class ConfirmAddressComponent implements OnInit {
indexLastObj: any = 0;
filterAllowedType: any = ['application/pdf', 'image/jpeg', 'image/png', 'text/plain', 'image/jpg', 'application/vnd.ms-excel', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'];
direction: string;
isContact: boolean;
constructor(public modalController: ModalController, public cs: CommonService, private ts: TranslatorService, private eitService: EitService, public profileService: ProfileService) {
this.direction = TranslatorService.getCurrentLanguageName()
@ -98,8 +98,16 @@ export class ConfirmAddressComponent implements OnInit {
this.menuType = this.selMenu.List_Menu.MENU_TYPE;
this.headerTitle = this.selMenu.GetMenuEntriesList.PROMPT;
this.addrespList = this.cs.sharedService.getSharedData(AddEitResponse.SHARED_DATA, false);
this.itemKey = this.addrespList.SubmitAddressTransactionList.P_ITEM_KEY;
this.P_TransactionID = this.addrespList.SubmitAddressTransactionList.P_TRANSACTION_ID;
this.isContact = this.cs.sharedService.getSharedData(AddEitResponse.isContact);
if (this.isContact) {
this.itemKey = this.addrespList.SubmitPhonesTransactionList.P_ITEM_KEY;
this.P_TransactionID = this.addrespList.SubmitPhonesTransactionList.P_TRANSACTION_ID;
} else {
this.itemKey = this.addrespList.SubmitAddressTransactionList.P_ITEM_KEY;
this.P_TransactionID = this.addrespList.SubmitAddressTransactionList.P_TRANSACTION_ID;
}
this.isDelete = this.isResubmitEIT = this.cs.sharedService.getSharedData('confirmAddEITData', false).isDelete;
@ -153,7 +161,11 @@ export class ConfirmAddressComponent implements OnInit {
this.handleAddAttachmentResults(result);
});
} else {
this.startEITApprovalProcess();
if (this.isContact) {
this.startEITContactApprovalProcess();
} else {
this.startEITApprovalProcess();
}
}
// }
}
@ -179,7 +191,11 @@ export class ConfirmAddressComponent implements OnInit {
} // end for
if (this.isTrue == result.AddAttSuccessList.length) {
this.startEITApprovalProcess();
if (this.isContact) {
this.startEITContactApprovalProcess();
} else {
this.startEITApprovalProcess();
}
}
else {
//stope
@ -193,6 +209,24 @@ export class ConfirmAddressComponent implements OnInit {
}
}
startEITContactApprovalProcess() {
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_ITEM_KEY = this.itemKey;
request.P_ACTION_MODE = this.pActionMode;
request.P_COMMENTS = this.eitComments;
this.profileService.startPhoneApprovalProcess(
request).
subscribe((result: any) => {
this.handleResults(result);
});
}
startEITApprovalProcess() {
let request: any = {};
request.P_SELECTED_EMPLOYEE_NUMBER = this.selEmp;

@ -0,0 +1,53 @@
<ion-content>
<div class="head-title">
<app-generic-header showImage="false" showBack="true" [headerText]="'general,contact' | translate">
</app-generic-header>
</div>
<div class="header"></div>
<div class="bottom"></div>
<div class="container" id="containerDiv">
<ion-card class="add-new-row-card">
<div class="new-row" (click)="addNewRow()">
<p>
<img class="add-icons" src="assets/imgs/itemsforsale/add.svg"> {{ts.trPK('general','add-new-row')}}
</p>
</div>
</ion-card>
<div class="" *ngFor="let phone of phoneNumbers">
<ion-card class="phoneContainer" *ngIf="!phone['DELETE_ROW']">
<ion-row >
<ion-col size="12">
<div [ngClass]=" direction === 'en' ? 'custom-text-area-element Field-en' : 'custom-text-area-element Field-ar'" >
<label class="label" position='floating' class="colBold requiredClass">{{ 'general,select' | translate}} </label>
<select name="selectAbsenceType" class="label-Select" #selectAbsenceType="ngModel" [(ngModel)]="phone.PHONE_TYPE" required>
<option value="noType" selected hidden selected><p>{{ts.trPK('absenceList','selectType')}}</p></option>
<option *ngFor="let obj of objectValue" [value]="obj.CODE">{{ obj.MEANING}} </option>
</select>
</div>
</ion-col>
<ion-col size="12">
<div [ngClass]=" direction === 'en' ? 'custom-text-area-element Field-en' : 'custom-text-area-element Field-ar'" >
<ion-input class="login-input" required type="tel" [(ngModel)]="phone.PHONE_NUMBER">
</ion-input>
</div>
</ion-col>
<div class="delete-icon" (click)="deleteRow(phone)">
<p><img class="icons-delete" src="assets/imgs/itemsforsale/delete.svg"> {{ts.trPK('general','delete')}}</p>
</div>
</ion-row>
</ion-card>
</div>
</div>
</ion-content>
<ion-footer>
<div class="centerDiv">
<ion-button class="footer-button" style="background: var(--newgreen)!important;border-radius: 10px; --background: transparent; width:80%" ion-button [disabled]="phoneNumbers.length==0" (click)="updatePhone()">
{{'userProfile, update' | translate}}</ion-button>
</div>
</ion-footer>

@ -0,0 +1,118 @@
.bold{
font-weight: bold;
font-size: 16px;
}
#containerDiv{
margin: 20px 0px;
}
.padding{
padding-left:5px;
padding-right: 5px;
}
.color-black{
color:#000;
}
.date{
position: absolute;
font-size: 14px;
padding: 10px;
right:0;
width: 100px;
color:#969696;
}
.transaction-list{
margin-top:20px;
}
.date-container{
margin:0px 20px;
}
.colBold{
font-size: 12px;
}
.label{
font-size: 12px;
// margin-left: 15px;
color: #a2a5a6 !important;
display: block;
overflow: hidden;
-webkit-box-flex: 1;
-webkit-flex: 1;
-ms-flex: 1;
flex: 1;
/* font-size: inherit; */
// text-overflow: ellipsis;
// white-space: nowrap;
white-space: normal;
// padding-top: 10px;
padding: 5px 0px;
padding-left: 10px !important;
margin: 10px auto;
}
.Field-en{
border-radius: 30px;
border: 1px solid #a2a5a6!important;
margin-bottom: 15px;
padding-left: 10px !important;
padding-top: 6px !important;
color: #999999 !important;
}
.Field-ar{
border-radius: 30px;
border: 1px solid #a2a5a6!important;
margin-bottom: 20px;
padding-right: 20px !important;
padding-top: 6px !important;
color: #999999 !important;
}
select{
width: 85% !important;
border: none !important;
position: relative;
bottom: 5px;
}
.delete-icon{
position: absolute;
right: 20px;
bottom: -10px;
color: #d60505;
font-weight: bold;
}
.phoneContainer{
position: relative;
margin-top: 15px;
padding: 20px;
border-radius: 10px;
box-shadow: 0px 0px 3px 0px #ccc
}
.new-row{
text-align: center;
color: #259CB8;
font-weight: bold;
}
.add-new-row-card{
box-shadow: none;
background: #d6d6d652;
border: 1px solid #ccc;
}
.add-icons{
height: 22px;
width: 22px;
display: inline-flex;
background: #259CB8;
padding: 4px;
border-radius: 5px;
top: 5px;
position: relative;
}
.icons-delete{
height: 16px;
width: 13px;
position: relative;
display: inline-block;
}

@ -0,0 +1,27 @@
import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { ConatactComponent } from './contact.component';
describe('ContactComponent', () => {
let component: ConatactComponent;
let fixture: ComponentFixture<ConatactComponent>;
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [ConatactComponent],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
})
.compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(ConatactComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});

@ -0,0 +1,120 @@
import { Component, OnInit } from '@angular/core';
import { AddEitResponse } from 'src/app/eit/models/add.eit.response';
import { EitRequest } from 'src/app/eit/models/eit.request';
import { CommonService } from 'src/app/hmg-common/services/common/common.service';
import { MenuResponse } from 'src/app/hmg-common/services/menu/models/menu-response';
import { TranslatorService } from 'src/app/hmg-common/services/translator/translator.service';
import { ProfileService } from '../service/profile.service';
@Component({
selector: 'app-conatact',
templateUrl: './contact.component.html',
styleUrls: ['./contact.component.scss'],
})
export class ConatactComponent implements OnInit {
public phoneNumbers: any = [];
public objectValue: any = [];
direction: any;
selEmp: any;
respID: any;
selMenu: any;
submitrequest: any;
constructor(public cs: CommonService, public ts: TranslatorService, public profileService: ProfileService,) {
this.direction = TranslatorService.getCurrentLanguageName();
this.selEmp = this.cs.sharedService.getSharedData(
MenuResponse.SHARED_SEL_EMP,
false
);
this.respID = this.cs.sharedService.getSharedData(
MenuResponse.SHARED_SEL_RESP_ID,
false
);
this.selMenu = new MenuResponse();
this.selMenu = this.cs.sharedService.getSharedData(
MenuResponse.SHARED_DATA,
false
);
}
ngOnInit() {
this.phoneNumbers = this.cs.sharedService.getSharedData(ProfileService.EMP_PHONE, false);
this.setIsUpdated();
this.direction = TranslatorService.getCurrentLanguageName();
this.getObjectValue();
}
setIsUpdated() {
this.phoneNumbers.forEach(element => {
element['ACTION'] = 'UPDATE_ROW';
});
}
getObjectValue() {
this.profileService.getObjectValue({
'P_OBJECT_TYPE': 'LOOKUP',
'P_OBJECT_NAME': 'PHONE_TYPE'
}, () => { }, this.ts.trPK('general', 'retry')).subscribe((response) => {
if (this.cs.validResponse(response)) {
console.log(response);
this.objectValue = response['GetObjectValuesList'];
}
})
}
setIsDeletedStatus() {
this.phoneNumbers.forEach(element => {
if (element['DELETE_ROW'] == true) {
element['ACTION'] = 'DELETE_ROW';
}
});
}
updatePhone() {
this.setIsDeletedStatus();
console.log(this.phoneNumbers);
this.submitrequest = {
P_MENU_TYPE: this.selMenu.List_Menu.MENU_TYPE,
P_SELECTED_RESP_ID: this.respID, //this.selMenu.List_Menu.RESP_ID,//-999,
P_FUNCTION_NAME: this.selMenu.GetMenuEntriesList.FUNCTION_NAME,
P_MBL_PHONES_TBL: this.phoneNumbers,
};
this.profileService.submitPhoneTransaction(this.submitrequest, () => { }, this.ts.trPK('general', 'retry')).subscribe((response) => {
if (this.cs.validResponse(response)) {
console.log(response);
this.handleSubmitEitResult(response);
}
})
//}
}
addNewRow() {
this.phoneNumbers.push({ 'PHONE_NUMBER': '', 'PHONE_TYPE': '', 'ACTION': 'NEW_ROW', 'OBJECT_VERSION_NUMBER': null, 'PHONE_ID': null })
}
deleteRow(row) {
row['DELETE_ROW'] = true;
// this.phoneNumbers =
// this.phoneNumbers.filter(item => item !== row);
console.log(this.phoneNumbers);
}
handleSubmitEitResult(result) {
if (this.cs.validResponse(result)) {
this.cs.sharedService.setSharedData(
this.submitrequest,
EitRequest.SHARED_DATA
);
this.cs.sharedService.setSharedData(result, AddEitResponse.SHARED_DATA);
this.cs.sharedService.setSharedData(true, AddEitResponse.isContact);
this.cs.sharedService.setSharedData(
{ isResubmit: false },
"confirmAddEITData"
);
this.cs.openConfirmAddAddress();
}
}
}

@ -51,10 +51,10 @@
<span class="btnTitle">{{ts.trPK('general','basic-details')}}</span>
</div>
</ion-col>
<ion-col [size]="3" (click)="selectedSegment('address')">
<ion-col [size]="3" (click)="selectedSegment('contact')">
<div class="action-button col-button">
<img *ngIf="!addressSegment" style="width: 40px;" src="../assets/imgs/profile-icons/main-address@2x.png">
<img *ngIf="addressSegment" style="width: 40px;" src="../assets/imgs/profile-icons/main address-a@2x.png">
<img *ngIf="!contactSegment" style="width: 40px;" src="../assets/imgs/profile-icons/main-address@2x.png">
<img *ngIf="contactSegment" style="width: 40px;" src="../assets/imgs/profile-icons/main address-a@2x.png">
<span class="btnTitle">{{ts.trPK('userProfile','contact-details')}} </span>
</div>
</ion-col>
@ -147,10 +147,10 @@
<ion-col size="11">
<h3 [ngClass]="direction === 'ltr'? 'result-label-text-form': 'result-label-text-form-ar' ">{{personalInfo.EMPLOYEE_MOBILE_NUMBER}}</h3>
</ion-col>
<ion-col size="1" class="create-edit">
<!-- <ion-col size="1" class="create-edit">
<ion-icon name="create" *ngIf="personalInfo.EMPLOYEE_MOBILE_NUMBER" (click)="editPhone()"></ion-icon>
<ion-icon name="add-circle" *ngIf="!personalInfo.EMPLOYEE_MOBILE_NUMBER" (click)="createPhone()"></ion-icon>
</ion-col>
</ion-col> -->
</ion-row>
<br>
<ion-label>
@ -209,7 +209,7 @@
</ion-card-content>
</ion-card>
<ion-card *ngIf="addressSegment" [ngClass]="direction === 'ltr'? 'card-size-info-en': 'card-size-info-ar' ">
<ion-card *ngIf="contactSegment" [ngClass]="direction === 'ltr'? 'card-size-info-en': 'card-size-info-ar' ">
<ion-card-content *ngIf="!editAddress && employeeAdress">
<ion-grid>
<ion-row style="width: 113%;">
@ -219,26 +219,27 @@
</ion-label>
</ion-col>
<ion-col size="2" *ngIf="addressSubMenu && addressSubMenu.UPDATE_BUTTON === 'Y'" (click)="allowEdit('address')">
<ion-col size="2" *ngIf="addressSubMenu && addressSubMenu.UPDATE_BUTTON === 'Y'" (click)="allowEdit('contact')">
<img style="width: 18px; height: 18px;" src="../assets/imgs/profile-icons/editing@2x.png">
</ion-col>
<ion-col size="2" *ngIf="addressSubMenu && addressSubMenu.ADD_BUTTON === 'Y'" (click)="allowEdit('address')">
<ion-col size="2" *ngIf="addressSubMenu && addressSubMenu.ADD_BUTTON === 'Y'" (click)="allowEdit('contact')">
<ion-icon class="add-icon-styling" name="add"></ion-icon>
</ion-col>
</ion-row>
</ion-grid>
<br>
<div *ngIf="phoneNumbers.length>0">
<div *ngFor="let phone of phoneNumbers">
<ion-label>
<h3 [ngClass]="direction === 'ltr'? 'type-label-text-form': 'type-label-text-form-ar' " >{{ts.trPK('general','mobile')}}</h3>
<h3 [ngClass]="direction === 'ltr'? 'type-label-text-form': 'type-label-text-form-ar' " >{{phone.PHONE_TYPE_MEANING}}</h3>
</ion-label>
<h3 [ngClass]="direction === 'ltr'? 'result-label-text-form': 'result-label-text-form-ar' " >0567845661</h3>
<h3 [ngClass]="direction === 'ltr'? 'result-label-text-form': 'result-label-text-form-ar' " >{{phone.PHONE_NUMBER}}</h3>
<br>
<br>
<ion-label>
<h3 [ngClass]="direction === 'ltr'? 'type-label-text-form': 'type-label-text-form-ar' " >{{ts.trPK('userProfile','work')}}</h3>
</ion-label>
<h3 [ngClass]="direction === 'ltr'? 'result-label-text-form': 'result-label-text-form-ar' " >4922</h3>
<br>
</div>
</div>
</ion-card-content>
</ion-card>
@ -322,17 +323,32 @@
</ion-grid>
</ion-card-content>
</ion-card> -->
<div *ngIf="familyMemberSegment">
<ion-card [ngClass]="direction === 'ltr'? 'card-size-info-en': 'card-size-info-ar' " style="padding:10px;background:#fff">
<ion-grid>
<ion-row>
<ion-col size="10">
<ion-label>
<h1 [ngClass]="direction === 'ltr'? 'header-label-text-form': 'header-label-text-form-ar' ">{{ts.trPK('general','dependent-title')}}</h1>
</ion-label>
</ion-col>
<div *ngIf="familyMemberSegment">
<ion-col size="2" >
<ion-icon class="add-icon-styling" name="add" (click)="allowEdit('add-update-contact')" style="right:0px"></ion-icon>
</ion-col>
</ion-row>
</ion-grid>
</ion-card>
<br>
<div *ngFor='let data of familyMemberData' style="background: white; border-radius: 20px; margin-left: 15px; margin-right: 15px; margin-bottom: 15px;">
<ion-grid>
<ion-row>
<ion-col size='4'>
<h2 style="font-weight: bold; font-size: 17px;">{{data.name}}</h2>
<h2 style="font-weight: bold; font-size: 15px;margin:0">{{data.CONTACT_NAME}}</h2>
</ion-col>
<ion-col [size]='direction === "ltr" ? 5 : 8 ' [offset]='direction === "ltr" ? 3 : 0 '>
<div class='family-member-button' style="height: 32px !important;" (click)='updateFunction()'>
<div class='family-member-button' style="height: 32px !important;" (click)='updateFunction(data)'>
<ion-icon style="width: 20px;" name="create"></ion-icon>
<p>{{ts.trPK('userProfile','update')}}</p>
</div>
@ -340,7 +356,7 @@
</ion-row>
<ion-row>
<ion-col size='4'>
<ion-label><p style="font-weight: bold; font-size: 17px;">{{data.relation}}</p></ion-label>
<ion-label><p style="font-weight: bold; font-size: 14px;">{{data.RELATIONSHIP}}</p></ion-label>
</ion-col>
<ion-col [size]='direction === "ltr" ? 5 : 8 ' [offset]='direction === "ltr" ? 3 : 0 '>
<div class='family-member-button' style="height: 32px !important;" (click)='RemoveFunction()'>

@ -21,18 +21,7 @@ import { MenuResponse } from 'src/app/hmg-common/services/menu/models/menu-respo
export class HomeComponent implements OnInit {
public familyMemberData = [
{
name: 'test',
relation: 'Father'
},
{
name: 'test 1',
relation: 'Son'
},
{
name: 'test 2',
relation: 'daughter'
},
]
public direction: string;
@ -57,6 +46,7 @@ export class HomeComponent implements OnInit {
public menuEntries: any;
public basicDetailsSubMenu: any;
public addressSubMenu: any;
public dependentDetails: any;
public transactionNo = 0;
public address: any;
public street: any;
@ -68,7 +58,10 @@ export class HomeComponent implements OnInit {
public employeeAdress: any = [];
public jobName: any;
public profileProgress = 84;
public contactSegment: boolean = false;
public phoneNumbers: any = [];
public objectLists: any = [];
public familyMemberDataDetails: any = [];
constructor(
public ts: TranslatorService,
public cs: CommonService,
@ -119,10 +112,12 @@ export class HomeComponent implements OnInit {
ngOnInit() {
this.getProfile();
this.menuEntries = this.cs.sharedService.getSharedData('menuEntries', false);
if (this.menuEntries) {
this.setMenuEntries();
}
}
public setMenuEntries() {
@ -143,6 +138,9 @@ export class HomeComponent implements OnInit {
if (personalInfoNestedChildren[k].REQUEST_TYPE === 'ADDRESS') {
this.addressSubMenu = personalInfoNestedChildren[k];
}
if (personalInfoNestedChildren[k].REQUEST_TYPE === 'CONTACT') {
this.dependentDetails = personalInfoNestedChildren[k];
}
}
}
}
@ -157,6 +155,9 @@ export class HomeComponent implements OnInit {
if (menuEntriesLocalArray[i].REQUEST_TYPE === 'ADDRESS') {
this.addressSubMenu = menuEntriesLocalArray[i];
}
if (menuEntriesLocalArray[i].REQUEST_TYPE === 'CONTACT') {
this.dependentDetails = menuEntriesLocalArray[i];
}
}
}
console.log(this.basicDetailsSubMenu);
@ -164,14 +165,15 @@ export class HomeComponent implements OnInit {
}
public getProfile() {
console.log('getProfile');
this.authService
.loadAuthenticatedUser()
.subscribe((user: AuthenticatedUser) => {
if (user) {
console.log(user);
this.personalInfo = user;
this.getPhoneNumbers();
this.getContactInfo();
let jobTitle = user.POSITION_NAME.split('.');
if (jobTitle && jobTitle.length > 1) {
this.jobName = jobTitle[0] + " " + jobTitle[1];
@ -287,6 +289,7 @@ export class HomeComponent implements OnInit {
this.editBasic = false;
this.editAddress = false;
this.familyMemberSegment = false;
this.contactSegment = false;
break;
case "basic":
this.personalInfoSegment = false;
@ -295,6 +298,7 @@ export class HomeComponent implements OnInit {
this.editBasic = false;
this.editAddress = false;
this.familyMemberSegment = false;
this.contactSegment = false;
break;
case "address":
this.personalInfoSegment = false;
@ -303,6 +307,7 @@ export class HomeComponent implements OnInit {
this.editBasic = false;
this.editAddress = false;
this.familyMemberSegment = false;
this.contactSegment = false;
break;
case "family":
this.personalInfoSegment = false;
@ -311,6 +316,16 @@ export class HomeComponent implements OnInit {
this.editBasic = false;
this.editAddress = false;
this.familyMemberSegment = true;
this.contactSegment = false;
break;
case "contact":
this.personalInfoSegment = false;
this.basicDetailsSegment = false;
this.addressSegment = false;
this.editBasic = false;
this.editAddress = false;
this.familyMemberSegment = false;
this.contactSegment = true;
break;
}
}
@ -319,7 +334,7 @@ export class HomeComponent implements OnInit {
let selMenu: MenuResponse = new MenuResponse();
selMenu = this.cs.sharedService.getSharedData(MenuResponse.SHARED_DATA, false);
selMenu.GetMenuEntriesList = allowVal === 'basic' ? this.basicDetailsSubMenu : this.addressSubMenu;
selMenu.GetMenuEntriesList = allowVal === 'basic' ? this.basicDetailsSubMenu : allowVal === 'add-update-contact' ? this.dependentDetails : this.addressSubMenu;
this.cs.sharedService.setSharedData(selMenu, MenuResponse.SHARED_DATA);
if (allowVal === 'basic') {
@ -327,6 +342,13 @@ export class HomeComponent implements OnInit {
// tslint:disable-next-line: max-line-length
this.cs.sharedService.setSharedData({ dirfromNotificationPage: false, submitEITObjList: undefined, transNo: this.transactionNo }, 'AddEITData');
this.openAddBasicDetails();
} else if (allowVal == 'contact') {
this.openContact()
} else if ('add-update-contact') {
this.transactionNo++;
this.cs.sharedService.setSharedData({ dirfromNotificationPage: false, submitEITObjList: undefined, transNo: this.transactionNo }, 'AddEITData');
this.cs.openAddUpdateContact();
} else {
this.openAddAddress();
}
@ -385,7 +407,9 @@ export class HomeComponent implements OnInit {
this.cs.openAddAddress();
}
}
public openContact() {
this.cs.openAddContact();
}
public openAddBasicDetails() {
if (this.basicDetailsSubMenu && this.basicDetailsSubMenu.UPDATE_BUTTON === 'Y') {
this.presentModal('basicDetails');
@ -393,26 +417,53 @@ export class HomeComponent implements OnInit {
this.cs.openAddBasicDetails('correct');
}
}
public editPhone() {
this.getObjectValues();
}
public createPhone() {
getPhoneNumbers() {
this.cs.startLoading();
this.profileService.getPhoneNumbers({
P_MENU_TYPE: "E",
P_SELECTED_RESP_ID: -999
}, () => { }, this.ts.trPK('general', 'retry')).subscribe((response) => {
if (this.cs.validResponse(response)) {
this.cs.stopLoading();
this.phoneNumbers = response['GetEmployeePhonesList'];
this.cs.sharedService.setSharedData(this.phoneNumbers, ProfileService.EMP_PHONE);
}
})
}
getObjectValues() {
this.profileService.getObjectValue({
P_OBJECT_TYPE: 'LOOKUP',
P_OBJECT_NAME: 'PHONE_TYPE'
getContactInfo() {
this.profileService.getContactInfo({
P_MENU_TYPE: "E",
P_SELECTED_RESP_ID: -999
}, () => { }, this.ts.trPK('general', 'retry')).subscribe((response) => {
console.log(response);
if (this.cs.validResponse(response)) {
this.familyMemberData = response['GetEmployeeContactsList'];
this.cs.sharedService.setSharedData(this.familyMemberData, ProfileService.EMP_CONTACT);
}
})
}
updateFunction() {
updateFunction(contact) {
// this.cs.presentAlert(this.ts.trPK('general', 'error-itg'));
this.cs.presentConfirmDialog(this.ts.trPK('userProfile', 'update-msg'),
() => {
this.profileService.getContactDetails({
P_MENU_TYPE: "E",
P_SELECTED_RESP_ID: -999,
P_CONTACT_RELATIONSHIP_ID: contact['CONTACT_RELATIONSHIP_ID']
}, () => { }, this.ts.trPK('general', 'retry')).subscribe((response) => {
if (this.cs.validResponse(response)) {
this.familyMemberDataDetails = response['GetEmployeeContactDetailsList'];
this.cs.sharedService.setSharedData(this.familyMemberDataDetails, ProfileService.EMP_CONTACT_DETAILS);
this.allowEdit('add-update-contact');
}
})
this.cs.greenToastPK("userProfile", "update-confirm");
});
}
@ -422,5 +473,6 @@ export class HomeComponent implements OnInit {
this.cs.redToastPK("userProfile", "remove-confirm");
});
}
}

@ -0,0 +1,12 @@
import { EitTransactionModel } from './eit.transaction.model';
export class ContactRequest {
public static SHARED_DATA = 'basic-request';
public P_MENU_TYPE: string;
public P_SELECTED_EMPLOYEE_NUMBER: string;
public P_FUNCTION_NAME: string;
public P_SELECTED_RESP_ID: Number;
public P_CONTACT_RELATIONSHIP_ID: number;
EITTransactionTBL: EitTransactionModel[];
P_ACTION_TYPE: string;
}

@ -23,6 +23,8 @@ import { ConfirmAddressComponent } from './confirm-address/confirm-address.compo
import { SubmitAddressModalComponent } from './submit-eit-modal/submit-address-modal.component';
import { ConfirmBasicDetailsComponent } from './confirm-basic-details/confirm-basic-details.component';
import { ConatactComponent } from './contact/contact.component';
import { AddUpdateContactComponent } from './add-update-contact/add-update-contact.component';
const routes: Routes = [
{
path: '',
@ -44,6 +46,14 @@ const routes: Routes = [
{
path: 'confirm-basic',
component: ConfirmBasicDetailsComponent
},
{
path: 'contact',
component: ConatactComponent
},
{
path: 'add-update-contact',
component: AddUpdateContactComponent
}
],
},
@ -116,7 +126,10 @@ const routes: Routes = [
AddBasicDetailsComponent,
ConfirmAddressComponent,
ConfirmBasicDetailsComponent,
AddBasicDetailsComponent],
ConatactComponent,
AddBasicDetailsComponent,
AddUpdateContactComponent
],
entryComponents: [EditDetailProfileComponent, SubmitAddressModalComponent],
providers: [DatePicker]

@ -19,6 +19,7 @@ export class ProfileService {
public static submitEit = 'Services/ERP.svc/REST/SUBMIT_EIT_TRANSACTION';
public static resubmitEit = 'Services/ERP.svc/REST/RESUBMIT_EIT_TRANSACTION';
public static startEitProcess = 'Services/ERP.svc/REST/START_ADDRESS_APPROVAL_PROCESS';
public static startPhoneProcess = 'Services/ERP.svc/REST/START_PHONES_APPROVAL_PROCESS';
public static startBasicProcess = 'Services/ERP.svc/REST/START_BASIC_DET_APPR_PROCESS';
public static updateAttach = 'Services/ERP.svc/REST/UPDATE_ATTACHMENT';
public static deleteAttach = 'Services/ERP.svc/REST/DELETE_ATTACHMENT';
@ -32,11 +33,24 @@ export class ProfileService {
public static getDiffStructure = "Services/ERP.svc/REST/GET_ADDRESS_DFF_STRUCTURE";
public static submitAddressTransactions = "Services/ERP.svc/REST/SUBMIT_ADDRESS_TRANSACTION";
public static submitBasicDetailsTransaction = "Services/ERP.svc/REST/SUBMIT_BASIC_DET_TRANSACTION";
public static submitContactTransaction = 'Services/ERP.svc/REST/SUBMIT_CONTACT_TRANSACTION'
public static getObjectValues = "Services/ERP.svc/REST/GET_OBJECT_VALUES";
public static getPhoneNumbers = "Services/ERP.svc/REST/GET_EMPLOYEE_PHONES";
public static submitPhoneTransaction = "Services/ERP.svc/REST/SUBMIT_PHONES_TRANSACTION";
public static getContactInfo = 'Services/ERP.svc/REST/GET_EMPLOYEE_CONTACTS';
public static getContactDetails = 'Services/ERP.svc/REST/GET_CONTACT_DETAILS';
public static getContactDiffStructure = 'Services/ERP.svc/REST/GET_CONTACT_DFF_STRUCTURE';
public static getContactCOLStructure = 'Services/ERP.svc/REST/GET_CONTACT_COLS_STRUCTURE';
public static ADRESS_ENTRIES = 'address-entries';
public static EMP_ADDRESS = 'emp-address';
public static COUNTRY = 'country';
public static SELECTED_STATUS = 'selected-status';
public static EMP_PHONE = 'emp-phone';
public static EMP_CONTACT_DETAILS = 'emp-CONTACT_DETAILS';
public static EMP_CONTACT = 'emp-CONTACT';
constructor(
public con: ConnectorService,
public authService: AuthenticationService
@ -117,11 +131,22 @@ export class ProfileService {
this.authService.authenticateRequest(request);
return this.con.post(ProfileService.submitBasicDetailsTransaction, request, onError, errorLabel);
}
public submitContactTransaction(basicDetailsRequest: any, onError?: any, errorLabel?: string): Observable<any> {
const request = basicDetailsRequest;
this.authService.authenticateRequest(request);
return this.con.post(ProfileService.submitContactTransaction, request, onError, errorLabel);
}
public startEitApprovalProcess(eitProcess: any, onError?: any, errorLabel?: string): Observable<any> {
const request = eitProcess;
this.authService.authenticateRequest(request);
return this.con.post(ProfileService.startEitProcess, request, onError, errorLabel);
}
public startPhoneApprovalProcess(eitProcess: any, onError?: any, errorLabel?: string): Observable<any> {
const request = eitProcess;
this.authService.authenticateRequest(request);
return this.con.post(ProfileService.startPhoneProcess, request, onError, errorLabel);
}
public startBasicDetailsApprovalProcess(basicDetailsProcess: any, onError?: any, errorLabel?: string): Observable<any> {
const request = basicDetailsProcess;
this.authService.authenticateRequest(request);
@ -135,4 +160,45 @@ export class ProfileService {
return this.con.post(ProfileService.getObjectValues, request, onError, errorLabel);
}
public getPhoneNumbers(request: any, onError?: any, errorLabel?: string): Observable<any> {
this.authService.authenticateRequest(request);
request.P_SELECTED_EMPLOYEE_NUMBER = request.P_USER_NAME;
return this.con.post(ProfileService.getPhoneNumbers, request, onError, errorLabel);
}
public submitPhoneTransaction(request: any, onError?: any, errorLabel?: string): Observable<any> {
this.authService.authenticateRequest(request);
request.P_SELECTED_EMPLOYEE_NUMBER = request.P_USER_NAME;
return this.con.post(ProfileService.submitPhoneTransaction, request, onError, errorLabel);
}
public getContactInfo(request: any, onError?: any, errorLabel?: string): Observable<any> {
this.authService.authenticateRequest(request);
request.P_SELECTED_EMPLOYEE_NUMBER = request.P_USER_NAME;
return this.con.post(ProfileService.getContactInfo, request, onError, errorLabel);
}
public getContactDetails(request: any, onError?: any, errorLabel?: string): Observable<any> {
this.authService.authenticateRequest(request);
request.P_SELECTED_EMPLOYEE_NUMBER = request.P_USER_NAME;
return this.con.post(ProfileService.getContactDetails, request, onError, errorLabel);
}
public getContactDFFStrutre(BASICDFFStrutreReq: any, onError?: any, errorLabel?: string): Observable<any> {
const request = BASICDFFStrutreReq;
this.authService.authenticateRequest(request);
return this.con.post(ProfileService.getContactDiffStructure, request, onError, errorLabel);
}
public getContactColumnStructure(body: any, onError?: any, errorLabel?: string): Observable<any> {
const request = body;
this.authService.authenticateRequest(request);
return this.con.post(ProfileService.getContactCOLStructure, request, onError, errorLabel);
}
}

@ -922,9 +922,11 @@ export class ConcurrentReportComponent implements OnInit {
this.eitRequest.P_FUNCTION_NAME = this.functionName;
this.eitRequest.P_DESC_FLEX_NAME = this.template.CONCURRENT_PROGRAM_NAME;
// this.reportSubmitRequest = {}
this.cs.startLoading();
this.reports
.submitTransaction(this.eitRequest, {}, this.ts.trPK('general', 'retry'))
.subscribe((result: any) => {
this.cs.stopLoading();
this.handleSubmitAbsence(result);
});
}

@ -213,6 +213,22 @@
"en": "Concurrent Report",
"ar": "تقرير متزامن"
},
"update-contact": {
"en": "Update contact information",
"ar": "تحديث معلومات الاتصال"
},
"dependent-title": {
"en": "Dependents",
"ar": "المعالين"
},
"add-new-row": {
"en": "Add new row",
"ar": "أضف صفًا جديدًا"
},
"contact": {
"en": "Phone Number",
"ar": "رقم الهاتف"
},
"from-date": {
"en": "From Date",
"ar": "من التاريخ"
@ -1455,53 +1471,53 @@
"en": "Postal Code",
"ar": "الرمز البريدي"
},
"contact-details":{
"en":"Contact Details",
"ar":"بيانات المتصل"
"contact-details": {
"en": "Contact Details",
"ar": "بيانات المتصل"
},
"family-members":{
"en":"Family Members",
"ar":"أفراد الأسرة"
"family-members": {
"en": "Family Members",
"ar": "أفراد الأسرة"
},
"profile-compitation":{
"en":"Profile Completions",
"ar":"استكمال الملف الشخصي"
"profile-compitation": {
"en": "Profile Completions",
"ar": "استكمال الملف الشخصي"
},
"work":{
"en":"Work",
"ar":"العمل"
"work": {
"en": "Work",
"ar": "العمل"
},
"update":{
"en":"Update",
"ar":"تعديل"
"update": {
"en": "Update",
"ar": "تعديل"
},
"remove":{
"en":"Remove",
"ar":"حذف"
"remove": {
"en": "Remove",
"ar": "حذف"
},
"update-msg":{
"en":"Are you sure you want update this member ?",
"ar":"هل انت متاكد من تعديل هذا العضو؟"
"update-msg": {
"en": "Are you sure you want update this member ?",
"ar": "هل انت متاكد من تعديل هذا العضو؟"
},
"remove-msg":{
"en":"Are you sure you want rmove this member ?",
"ar":"هل انت متاكد من حذف هذا العضو ؟"
"remove-msg": {
"en": "Are you sure you want rmove this member ?",
"ar": "هل انت متاكد من حذف هذا العضو ؟"
},
"update-confirm":{
"en":"member updated successfully",
"ar":"تم تعديل البيانات بنجاح"
"update-confirm": {
"en": "member updated successfully",
"ar": "تم تعديل البيانات بنجاح"
},
"remove-confirm":{
"en":"member removed successfully",
"ar":"تم حذف البيانات بنجاح"
"remove-confirm": {
"en": "member removed successfully",
"ar": "تم حذف البيانات بنجاح"
},
"note-part-1":{
"en":"Add or update information about your beneficiaries of dependants.",
"ar":"قم بإضافة أو تحديث المعلومات حول المستفيدين من المعالين."
"note-part-1": {
"en": "Add or update information about your beneficiaries of dependants.",
"ar": "قم بإضافة أو تحديث المعلومات حول المستفيدين من المعالين."
},
"note-part-2":{
"en":"Note: People you enter here become dependants or beneficiaries only after you complete benefits enrollment.",
"ar":"ملاحظة: الأشخاص الذين تدخلهم هنا يصبحون معالين أو مستفيدين فقط بعد إكمال تسجيل المزايا."
"note-part-2": {
"en": "Note: People you enter here become dependants or beneficiaries only after you complete benefits enrollment.",
"ar": "ملاحظة: الأشخاص الذين تدخلهم هنا يصبحون معالين أو مستفيدين فقط بعد إكمال تسجيل المزايا."
}
},
"changePassword": {
@ -2555,17 +2571,17 @@
"en": "Urgent",
"ar": "عاجل"
},
"worklist-setting":{
"en":"WORKLIST SETTINGS",
"ar":"اعدادات اشعارات"
"worklist-setting": {
"en": "WORKLIST SETTINGS",
"ar": "اعدادات اشعارات"
},
"turn-on-notification":{
"en":"Turn on notification for",
"ar":"تفعيل الاشعارات "
"turn-on-notification": {
"en": "Turn on notification for",
"ar": "تفعيل الاشعارات "
},
"save-changes":{
"en":"Save Changes",
"ar":"حفظ التغيرات"
"save-changes": {
"en": "Save Changes",
"ar": "حفظ التغيرات"
}
},
"worklistMain": {

@ -0,0 +1,15 @@
module.exports = {
module: {
rules: [
{
test: /\.*pdfjs-dist.*$/,
use: {
loader: 'babel-loader',
options: {
presets: ['@babel/preset-env']
}
}
}
]
}
};
Loading…
Cancel
Save