Merge branch 'MOHEMM-Q2-DEV' of https://gitlab.com/haroon6138/mohemmionic5 into sultan26April

MOHEMM-Q3-DEV-LATEST
Sultan Khan 5 years ago
commit 23bcf583fb

@ -61,8 +61,7 @@
"app": "0.1.0", "app": "0.1.0",
"chart.js": "^2.9.3", "chart.js": "^2.9.3",
"com-badrit-base64": "^0.2.0", "com-badrit-base64": "^0.2.0",
"compare-func": "^2.0.0", "cordova-android": "^8.1.0",
"cordova-android": "8.1.0",
"cordova-android-support-gradle-release": "^3.0.1", "cordova-android-support-gradle-release": "^3.0.1",
"cordova-open-native-settings": "^1.5.2", "cordova-open-native-settings": "^1.5.2",
"cordova-opentok-android-permissions": "^1.0.1", "cordova-opentok-android-permissions": "^1.0.1",
@ -101,9 +100,9 @@
"core-js": "^2.5.4", "core-js": "^2.5.4",
"date-fns": "^1.30.1", "date-fns": "^1.30.1",
"es6-promise-plugin": "^4.1.0", "es6-promise-plugin": "^4.1.0",
"ionic2-calendar": "^0.5.10", "ionic2-calendar": "^0.5.8",
"ionic4-rating": "^1.0.9", "ionic4-rating": "^1.0.9",
"ng-circle-progress": "^1.6.0", "ng-circle-progress": "^1.5.1",
"ng2-file-upload": "^1.3.0", "ng2-file-upload": "^1.3.0",
"ng2-pdf-viewer": "^5.3.2", "ng2-pdf-viewer": "^5.3.2",
"ngx-gauge": "^1.0.0-beta.10", "ngx-gauge": "^1.0.0-beta.10",
@ -145,7 +144,7 @@
"karma-coverage-istanbul-reporter": "~2.0.1", "karma-coverage-istanbul-reporter": "~2.0.1",
"karma-jasmine": "~1.1.2", "karma-jasmine": "~1.1.2",
"karma-jasmine-html-reporter": "^0.2.2", "karma-jasmine-html-reporter": "^0.2.2",
"node-sass": "^4.14.1", "node-sass": "^4.13.1",
"protractor": "^5.4.3", "protractor": "^5.4.3",
"ts-node": "~8.0.0", "ts-node": "~8.0.0",
"tslint": "~5.12.0", "tslint": "~5.12.0",
@ -219,8 +218,8 @@
"wifiwizard2": {} "wifiwizard2": {}
}, },
"platforms": [ "platforms": [
"ios", "android",
"android" "ios"
] ]
} }
} }

@ -23,6 +23,7 @@ const routes: Routes = [
{ path: 'attendance-tracking', loadChildren: './attendance-tracking/attendance-tracking.module#AttendanceTrackingPageModule' }, { path: 'attendance-tracking', loadChildren: './attendance-tracking/attendance-tracking.module#AttendanceTrackingPageModule' },
{ path: 'itemforsale', loadChildren: './itemforsale/itemforsale.module#ItemforsalePageModule' }, { path: 'itemforsale', loadChildren: './itemforsale/itemforsale.module#ItemforsalePageModule' },
{ path: 'offersdiscount', loadChildren: './offersdiscount/offersdiscount.module#OffersdiscountPageModule' }, { 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: 'erm-channel', loadChildren: './erm-channel/erm-channel.module#ErmChannelPageModule' },
{ path: 'backend-integrations', loadChildren: './backend-integrations/backend-integrations.module#BackendIntegrationsPageModule' } { path: 'backend-integrations', loadChildren: './backend-integrations/backend-integrations.module#BackendIntegrationsPageModule' }

@ -131,6 +131,14 @@
{{ts.trPK('myTeam','myTeam-header')}} {{ts.trPK('myTeam','myTeam-header')}}
</ion-label> </ion-label>
</ion-item> </ion-item>
<ion-item [hidden]="TeamFlag!='true'" (click)="openMyRequestPage()">
<ion-thumbnail slot="start" class="menu-thumb">
<img style= "height: 14px !important;" src="../assets/imgs/my_team_icon.png" item-left>
</ion-thumbnail>
<ion-label class="profile">
HR REQUEST
</ion-label>
</ion-item>
<ion-item (click)="openChangePassword()"> <ion-item (click)="openChangePassword()">
<ion-thumbnail slot="start" class="menu-thumb"> <ion-thumbnail slot="start" class="menu-thumb">
<img style= "height: 25px !important;" src="../assets/imgs/lock_icon.png" item-left> <img style= "height: 25px !important;" src="../assets/imgs/lock_icon.png" item-left>

@ -193,7 +193,7 @@ export class AppComponent implements OnInit {
} }
public profile() { public profile() {
this.cs.openEditProfile(); this.cs.openProfile();
this.menu.toggle(); this.menu.toggle();
} }

@ -31,3 +31,8 @@
.start-badge{ .start-badge{
right:16px; right:16px;
} }
.my-custom-modal-css .modal-wrapper {
width: 90%;
height: 55%;
}

@ -1,5 +1,8 @@
import { Component, OnInit } from '@angular/core'; import { Component, OnInit } from '@angular/core';
import { detachEmbeddedView } from '@angular/core/src/view'; import { detachEmbeddedView } from '@angular/core/src/view';
import { AnnouncementService } from 'src/app/hmg-common/services/announcement-services/announcement.service';
import { CommonService } from 'src/app/hmg-common/services/common/common.service';
import { TranslatorService } from 'src/app/hmg-common/services/translator/translator.service';
@Component({ @Component({
selector: 'app-announcement', selector: 'app-announcement',
@ -7,8 +10,8 @@ import { detachEmbeddedView } from '@angular/core/src/view';
styleUrls: ['./announcement.component.scss'], styleUrls: ['./announcement.component.scss'],
}) })
export class AnnouncementComponent implements OnInit { export class AnnouncementComponent implements OnInit {
dt = new Date().toJSON().slice(0,10).replace(/-/g,'/'); dt = new Date().toJSON().slice(0, 10).replace(/-/g, '/');
public arr =[ public arr = [
{ {
title:"Basic Microsoft Excel Cource", title:"Basic Microsoft Excel Cource",
body:" is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.", body:" is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.",
@ -33,10 +36,15 @@ export class AnnouncementComponent implements OnInit {
]; ];
public arrList = []; public arrList = [];
constructor() { } constructor(
public announcementService: AnnouncementService,
public translate: TranslatorService,
public common: CommonService
) { }
ngOnInit() { ngOnInit() {
this.arrList = this.arr; this.arrList = this.arr;
// this.getAnnouncementListService();
} }
filterList(event) { filterList(event) {
@ -59,4 +67,11 @@ export class AnnouncementComponent implements OnInit {
}); });
} }
getAnnouncementListService(){
this.announcementService.getAnnouncementListService().subscribe((result: any) => {
if (this.common.validResponse(result)) {
}
});
}
} }

@ -0,0 +1,12 @@
import { TestBed } from '@angular/core/testing';
import { AnnouncementService } from './announcement.service';
describe('AnnouncementService', () => {
beforeEach(() => TestBed.configureTestingModule({}));
it('should be created', () => {
const service: AnnouncementService = TestBed.get(AnnouncementService);
expect(service).toBeTruthy();
});
});

@ -0,0 +1,30 @@
import { Injectable } from '@angular/core';
import { Request } from 'src/app/hmg-common/services/models/request';
import { Observable } from 'rxjs';
import { AuthenticationService } from '../authentication/authentication.service';
import { ConnectorService } from '../connector/connector.service';
@Injectable({
providedIn: 'root'
})
export class AnnouncementService {
public static getAnnouncemntList = '';
constructor(
public authService: AuthenticationService,
public con: ConnectorService,
) { }
getAnnouncementListService(onError ?: any , oerrorLable ?: any) {
const request = new Request();
this.authService.authenticateRequest(request);
console.log(request);
return this.con.post(
AnnouncementService.getAnnouncemntList,
request,
onError,
oerrorLable
);
}
}

@ -1119,11 +1119,15 @@ export class CommonService {
this.nav.navigateForward(['/my-team/details']); this.nav.navigateForward(['/my-team/details']);
} }
public openMyRequestPage() { public openMyRequestPage() {
this.nav.navigateForward(['/my-team/my-request']); this.nav.navigateForward(['/mowadhafi/my-request']);
} }
public openHRRequestPage() { public openHRRequestPage() {
this.nav.navigateForward(['/my-team/hr-request']); this.nav.navigateForward(['/mowadhafi/hr-request']);
} }
public openRequestDetailsPage() {
this.nav.navigateForward(['/mowadhafi/request-details']);
}
public openPage(link: string) { public openPage(link: string) {

@ -28,7 +28,7 @@ export class ConnectorService {
public static timeOut = 120 * 1000; public static timeOut = 120 * 1000;
public static host = 'https://uat.hmgwebservices.com/'; public static host = 'https://uat.hmgwebservices.com/';
//public static host = 'https://hmgwebservices.com/'; // public static host = 'https://hmgwebservices.com/';
constructor(public httpClient: HttpClient, constructor(public httpClient: HttpClient,
public cs: CommonService, public cs: CommonService,

@ -1,6 +1,6 @@
<div feedback class="custom-button"> <div feedback class="custom-button">
<div class="iconBox"> <div class="iconBox">
<img *ngIf="title !='Items for sale' && title !='بضاعه للبع' && title !='العروض والخصومات' && title !='Offers & Discount' && title != 'My Team' && title != 'Vacation Rule' && title != 'فريقي' && title != 'الإنابة بالإجازات' " [src]="'data:image/png;base64,'+icon" class="icon"> <img *ngIf="title !='Announcement' && title !='اعلان' && title !='Items for sale' && title !='بضاعه للبع' && title !='العروض والخصومات' && title !='Offers & Discount' && title != 'My Team' && title != 'Vacation Rule' && title != 'فريقي' && title != 'الإنابة بالإجازات' " [src]="'data:image/png;base64,'+icon" class="icon">
<!-- <img *ngIf="title == 'My Team' || title == 'Vacation Rule'" [src]="icon" class="icon"> --> <!-- <img *ngIf="title == 'My Team' || title == 'Vacation Rule'" [src]="icon" class="icon"> -->
<img *ngIf="title == 'My Team' || title == 'فريقي' " [src]="myTeamIcon" class="icon"> <img *ngIf="title == 'My Team' || title == 'فريقي' " [src]="myTeamIcon" class="icon">
<img *ngIf="title == 'Vacation Rule' || title == 'الإنابة بالإجازات'" [src]="vacationRuleIcon" class="icon"> <img *ngIf="title == 'Vacation Rule' || title == 'الإنابة بالإجازات'" [src]="vacationRuleIcon" class="icon">
@ -8,6 +8,7 @@
<img *ngIf="title =='Items for sale' || title=='بضاعه للبع'" src="/assets/icon/home/item_for_sale.png" class="icon" style="height:40px" /> <img *ngIf="title =='Items for sale' || title=='بضاعه للبع'" src="/assets/icon/home/item_for_sale.png" class="icon" style="height:40px" />
<img *ngIf="title =='Offers & Discount' || title =='العروض والخصومات'" src="/assets/icon/home/offers_discount.png" class="icon" style="height:40px" /> <img *ngIf="title =='Offers & Discount' || title =='العروض والخصومات'" src="/assets/icon/home/offers_discount.png" class="icon" style="height:40px" />
<img *ngIf="title =='Announcement' || title =='اعلان'" src="/assets/icon/home/announcementIntegration.png" class="icon" style="height:40px" />
</div> </div>
<div class="titleBox"> <div class="titleBox">

@ -63,15 +63,22 @@
<ion-label> {{'general,other-services' | translate}} </ion-label> <ion-label> {{'general,other-services' | translate}} </ion-label>
</ion-col> </ion-col>
<ion-slides [options]="slideOptsTwo" > <ion-slides [options]="slideOptsTwo" >
<ion-slide> <ion-slide>
<app-services-button (click)="itemForSale()" [title]="'general,items-sales' | translate" > <app-services-button (click)="itemForSale()" [title]="'general,items-sales' | translate" >
</app-services-button> </app-services-button>
</ion-slide> </ion-slide>
<ion-slide> <ion-slide>
<app-services-button (click)="offersDiscount()" [title]="'general,offers-discount' | translate" > <app-services-button (click)="offersDiscount()" [title]="'general,offers-discount' | translate" >
</app-services-button> </app-services-button>
</ion-slide> </ion-slide>
<ion-slide>
<app-services-button (click)="openAnnouncement()" [title]="'login,announcement' | translate" >
</app-services-button>
</ion-slide>
</ion-slides> </ion-slides>

@ -5,7 +5,7 @@
<ion-buttons slot="start"> <ion-buttons slot="start">
<nav-buttons (backClick)="goback()" [navigate]="false"></nav-buttons> <nav-buttons (backClick)="goback()" [navigate]="false"></nav-buttons>
</ion-buttons> </ion-buttons>
<ion-title style=" color:white; text-align: center;">{{ts.trPK('userProfile','HR-request')}}</ion-title> <ion-title style=" color:white; text-align: center;">{{ts.trPK('userProfile','createHR-Request')}}</ion-title>
</ion-toolbar> </ion-toolbar>
</ion-header> </ion-header>
@ -89,9 +89,11 @@
</ion-col> </ion-col>
</ion-row> </ion-row>
</div> </div>
<div> <ion-footer class="footer">
<ion-button class="sendCodeBtn" (click)="createRequest()" >{{ts.trPK('userProfile','createHR-Request')}}</ion-button> <div class="Btn">
<ion-button class="CreateBtn" (click)="createRequest()" >{{ts.trPK('userProfile','createHR-Request')}}</ion-button>
</div> </div>
</ion-footer>
</div> </div>
<!-- ///////////////////////////////////////////////////////////////////next page --> <!-- ///////////////////////////////////////////////////////////////////next page -->
@ -128,7 +130,9 @@
<!-- ///////////////////////////////////////////////////////////////////next page --> <!-- ///////////////////////////////////////////////////////////////////next page -->
<div *ngIf="showRequestDetails" class="result-serviceType"> <div *ngIf="showRequestDetails" >
<ion-card class="result-serviceType">
<ion-card-content>
<div class="request-heading"> <div class="request-heading">
<span>{{ts.trPK('userProfile','ServiceType')}}</span> <span>{{ts.trPK('userProfile','ServiceType')}}</span>
</div> </div>
@ -149,47 +153,64 @@
</ion-row> </ion-row>
</div> </div>
<div class="request-heading"> <!-- /////////////////////////////////////////// -->
<span>{{ts.trPK('userProfile','DeptName')}}</span> <div>
</div> <div>
<div class="filed"> <ion-list>
<label class="selectLabel">Select Department</label> <label class="labels">{{ts.trPK('userProfile','DeptName')}}</label>
</div> <ion-item lines="none" class="filed-container">
<div class="request-heading"> <select class="filed" placeholder="Select Department" type="text">
<span>{{ts.trPK('userProfile','RelatedSection')}}</span> <option value="1">1</option>
</div> <option value="2">2</option>
<div class="filed"> </select>
<label class="selectLabel">Select Section</label> </ion-item>
</div> <label class="labels">{{ts.trPK('userProfile','RelatedSection')}}</label>
<div class="request-heading"> <ion-item lines="none" class="filed-container">
<span>{{ts.trPK('userProfile','RelatedTopic')}}</span> <select class="filed" placeholder="Select Sectiont" type="text">
</div> <option value="1">1</option>
<div class="filed"> <option value="2">2</option>
<label class="selectLabel">Select Topic</label> </select>
</div> </ion-item>
<label class="labels">{{ts.trPK('userProfile','RelatedTopic')}}</label>
<ion-item lines="none" class="filed-container" placeholder="Select Topic" type="text">
<select class="filed" placeholder="Select Topic" type="text">
<option value="1">1</option>
<option value="2">2</option>
</select>
</ion-item>
</ion-list>
</div>
<div class="request-heading"> <div class="request-heading">
<span>{{ts.trPK('userProfile','SupportingDocument')}}</span> <span>{{ts.trPK('userProfile','SupportingDocument')}}</span>
</div> </div>
<div style="margin-left: 15px; margin-top: 12px;"> <div>
<img (click)="uploadDocument()" src="../assets/imgs/add-photo.svg"> <img slot="start" style=" height: 55px;" (click)="uploadDocument()" src="../assets/imgs/add-photo.svg">
</div> </div>
<div class="request-heading"> <div class="request-heading">
<span>{{ts.trPK('userProfile','Description')}}</span> <span>{{ts.trPK('userProfile','Description')}}</span>
</div> </div>
<div class="filedDesc"> <!-- <div class="filedDesc">
<label class="labelDesc">Description</label> <ion-input class="labelDesc" placeholder="{{ts.trPK('userProfile','Description')}}" type="text">
</div> </ion-input>
</div> -->
<ion-col size="12">
<ion-item style="margin-left: -20px;margin-right: -13px;" lines="none">
<ion-input [ngClass]="direction == 'en' ? 'filedDesc':'filedDesc-ar' " placeholder="{{ts.trPK('userProfile','Description')}}" type="text"></ion-input>
</ion-item>
</ion-col>
<ion-row style="margin-left: 5px;">
<div class="cancelRequest">
<ion-button (click)="cancelRequest()">Cancel
</ion-button>
</div> </div>
<div class="submitRequest"> </ion-card-content>
<ion-button (click)="submitRequest()">Submit </ion-card>
</ion-button> <ion-footer style=" padding:15px !important;" >
<div ng class="gridDiv" aria-disabled="true">
<button class="gridCancelBtn" ion-button (click)="cancelRequest()">{{ts.trPK('general','cancel')}}</button>
<button class="gridSubmitBtn" ion-button (click)="submitRequest()">{{ts.trPK('general','submit')}}</button>
</div> </div>
</ion-row> </ion-footer>
</div> </div>
</ion-content> </ion-content>

@ -230,31 +230,29 @@ ion-input {
font-family: 'WorkSans-Bold'; font-family: 'WorkSans-Bold';
} }
.radio-list{ // .radio-list{
background: white; // background: white;
margin-left: 18px; // margin-left: 18px;
/* margin-right: 10px; */ // /* margin-right: 10px; */
margin-top: 12px; // margin-top: 12px;
} // }
.result-serviceType{ .result-serviceType{
position: relative; position: relative;
background: white; background: white;
padding-bottom: 20px;
border-radius: 20px; border-radius: 20px;
z-index: 1; z-index: 1;
border-radius: 20px; border-radius: 25px;
border: 1px solid #ccc; border: 1px solid #ccc;
padding-top: 12px; margin: 15px;
margin: 25px 22px 2px 22px;
padding-bottom: 241px;
} }
.request-heading { .request-heading {
span { span {
display: block; display: block;
padding-top: 8px; margin-bottom: 15px;
padding-left: 15px; // padding-top: 8px;
// padding-left: 15px;
/* font-weight: bold; */ /* font-weight: bold; */
font-size: 14px; font-size: 14px;
font-family: 'WorkSans-Bold'; font-family: 'WorkSans-Bold';
@ -269,15 +267,29 @@ ion-input {
padding-top: 6px !important; padding-top: 6px !important;
color: #636161; color: #636161;
padding-bottom: 15px; padding-bottom: 15px;
padding-right: 252px;
} }
.filedDesc{ .filedDesc{
border-radius: 30px; border-radius: 30px;
border: 1px solid #d3d5d5 !important; border: 1px solid #d3d5d5 !important;
margin: 10px; // margin: 10px;
padding-left: 11px !important; padding-left: 20px !important;
padding-top: 6px !important; padding-top: 6px !important;
color: #636161; color: #636161;
padding-bottom: 110px; --padding-bottom: 90px;
font-size: 13px;
text-align: start;
}
.filedDesc-ar{
border-radius: 30px;
border: 1px solid #d3d5d5 !important;
// margin: 10px;
padding-right: 20px !important;
padding-top: 6px !important;
color: #636161;
--padding-bottom: 90px;
font-size: 13px;
text-align: start;
} }
.labelDesc{ .labelDesc{
@ -299,30 +311,120 @@ ion-input {
color: black; color: black;
} }
.cancelRequest{
padding: 10px 0px 10px 10px; // .cancelRequest{
ion-button{ // padding: 10px 7px 10px 0px;
border-radius: 7px; // ion-button{
padding: 12px 25px 12px 25px; // border-radius: 7px;
background: #d00a0a; // padding: 12px 30px 12px 30px;
--background: transparent; // background: #d00a0a;
--box-shadow: none !important; // --background: transparent;
height: auto; // --box-shadow: none !important;
min-height: inherit; // height: auto;
font-size: 16px; // min-height: inherit;
font-weight: bold; // font-size: 16px;
} // font-weight: bold;
} // margin-top: -5px;
.submitRequest{ // }}
padding: 10px 10px 10px 1px; // .submitRequest{
ion-button{ // padding: 10px 7px 10px 0px;
border-radius: 7px; // ion-button{
padding: 12px 25px 12px 25px; // border-radius: 7px;
// padding: 12px 30px 12px 30px;
// background: #19a163;
// --background: transparent;
// --box-shadow: none !important;
// height: auto;
// min-height: inherit;
// font-size: 16px;
// font-weight: bold;
// margin-top: -5px;
// }}
.gridDiv{
width: 100%;
height: 40px;
margin-top: 18px;
font-size: 14px;
}
.gridCancelBtn{
min-width: auto;
// margin: 0px;
padding: 10px;
border: 1px solid var(--cusgray);
box-shadow: none;
-webkit-box-shadow: none;
-moz-box-shadow: none;
width: 45%;
height: 100%;
border-radius: 8px;
background: #d00a0a;
color: white;
margin-left: 15px;
margin-right: 5px;
font-family: 'WorkSans-bold';
}
.gridSubmitBtn{
min-width: auto;
// margin: 0px;
padding: 10px;
border: 1px solid var(--cusgray);
box-shadow: none;
-webkit-box-shadow: none;
-moz-box-shadow: none;
width: 45%;
height: 100%;
border-radius: 8px;
background: #19a163; background: #19a163;
--background: transparent; color: white;
--box-shadow: none !important; // margin-left: 15px;
height: auto; // margin-right: 5px;
min-height: inherit; font-family: 'WorkSans-bold';}
font-size: 16px;
font-weight: bold;
}} .filed-container{
margin-right: -17px;
margin-left: -25px;
}
.labels{
display: block;
margin-top: 15px;
padding-top: 8px;
padding-left: 15px;
font-size: 14px;
font-family: 'WorkSans-Bold';
}
.CreateBtn{
--background: var(--newgreen) !important;
background: var(--newgreen) !important;
white-space: normal;
color: var(--light);
text-transform: capitalize;
min-height: 1.0cm;
--border-radius: 7px !important;
border-radius: 7px !important;
--min-height: 1.6cm !important;
width: 315px;
}
.footer{
padding: 15px 0px 0px 0px;
background-color: var(--light) !important;
border: 0px !important;
box-shadow: none !important;
-webkit-box-shadow: none;
}
.Btn{
margin: auto; text-align: center; display: block;
}
.footer2{
padding: 15px 0px 0px 24px;
background-color: var(--light) !important;
border: 0px !important;
box-shadow: none !important;
-webkit-box-shadow: none;
}

@ -3,7 +3,7 @@ import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { HRRequestComponent } from './hr-request.component'; import { HRRequestComponent } from './hr-request.component';
describe('HRRequestComponent', () => { describe('HrRequestComponent', () => {
let component: HRRequestComponent; let component: HRRequestComponent;
let fixture: ComponentFixture<HRRequestComponent>; let fixture: ComponentFixture<HRRequestComponent>;

@ -5,7 +5,7 @@ import { TranslatorService } from 'src/app/hmg-common/services/translator/transl
import { AuthenticationService } from 'src/app/hmg-common/services/authentication/authentication.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 { 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 { SharedDataService } from 'src/app/hmg-common/services/shared-data-service/shared-data.service';
import { MyTeamService } from '../service/my-team.service'; import { MowadhafiService } from '../mowadhafi.service';
import { Location } from '@angular/common'; import { Location } from '@angular/common';
import { MenuResponse } from 'src/app/hmg-common/services/menu/models/menu-response'; import { MenuResponse } from 'src/app/hmg-common/services/menu/models/menu-response';
import { LoginModel } from 'src/app/authentication/models/LoginModel'; import { LoginModel } from 'src/app/authentication/models/LoginModel';
@ -36,6 +36,7 @@ export class HRRequestComponent implements OnInit {
public searchKeySelect = 'Complaints'; public searchKeySelect = 'Complaints';
myColor: string = 'secondary'; myColor: string = 'secondary';
public showRequestDetails = false; public showRequestDetails = false;
public proID= "CS"
public direction: string; public direction: string;
@ -45,16 +46,22 @@ export class HRRequestComponent implements OnInit {
public authService: AuthenticationService, public authService: AuthenticationService,
public sharedData: SharedDataService, public sharedData: SharedDataService,
public events: Events, public events: Events,
public myTeamService: MyTeamService, public MowadhafiService: MowadhafiService,
private location: Location, private location: Location,
private menu: MenuController, private menu: MenuController,
) { ) {
this.direction = TranslatorService.getCurrentDirection(); this.direction = TranslatorService.getCurrentLanguageName();
} }
ngOnInit() { ngOnInit() {
this.getUserInformation(); this.getUserInformation();
this.getTicketTypes();
this.getProject();
this.getProjectDepartments();
this.getDepartmentSections();
this.getSectionTopics();
} }
@ -65,13 +72,13 @@ export class HRRequestComponent implements OnInit {
getUserInformation(){ getUserInformation(){
const request = { const request = {
P_SELECTED_EMPLOYEE_NUMBER:"121816", // P_SELECTED_EMPLOYEE_NUMBER:"121816",
P_SELECTED_RESP_ID:-999, P_SELECTED_RESP_ID:-999,
P_PAGE_NUM:1, P_PAGE_NUM:1,
P_PAGE_LIMIT:1 P_PAGE_LIMIT:1
}; };
this.myTeamService.getUserInfo(request, ()=> {} , this.ts.trPK('general', 'retry')).subscribe((result)=> this.MowadhafiService.getUserInfo(request, ()=> {} , this.ts.trPK('general', 'retry')).subscribe((result)=>
{ {
this.handleUserInfoResult(result); this.handleUserInfoResult(result);
@ -96,17 +103,91 @@ export class HRRequestComponent implements OnInit {
// console.log("total no "+this.EmpTotal) // console.log("total no "+this.EmpTotal)
} }
getTicketTypes(){
const request = {
// TokenID:"xxx",
// EmployeeNumber:"191817"
};
this.MowadhafiService.getTicketTypes(request, ()=> {} , this.ts.trPK('general', 'retry')).subscribe((result)=>
{
this.handlegetTicketTypesResult(result);
}) }
handlegetTicketTypesResult(result){
}
getProject(){
const request = {
// TokenID:"xxx",
// EmployeeNumber:"191817",
ItgProjectCode:"CS"
};
this.MowadhafiService.getProject(request, ()=> {} , this.ts.trPK('general', 'retry')).subscribe((result)=>
{
this.handlegetProjectResult(result);
}) }
handlegetProjectResult(result){
}
getProjectDepartments(){
const request = {
// TokenID:"xxx",
// EmployeeNumber:"191817",
ItgProjectId:11,
};
this.MowadhafiService.getProjectDepartments(request, ()=> {} , this.ts.trPK('general', 'retry')).subscribe((result)=>
{
this.handlegetProjectDepartmentsResult(result);
}) }
handlegetProjectDepartmentsResult(result){
}
getDepartmentSections(){
const request = {
// TokenID:"xxx",
// EmployeeNumber:"191817",
ItgProjectDepartmentId:1
};
this.MowadhafiService.getDepartmentSections(request, ()=> {} , this.ts.trPK('general', 'retry')).subscribe((result)=>
{
this.handlegetDepartmentSectionsResult(result);
}) }
handlegetDepartmentSectionsResult(result){
}
getSectionTopics(){
const request = {
// TokenID:"xxx",
// EmployeeNumber:"191817",
ItgDepartmentSectionId:1
};
this.MowadhafiService.getSectionTopics(request, ()=> {} , this.ts.trPK('general', 'retry')).subscribe((result)=>
{
this.handlegetSectionTopicsResult(result);
}) }
handlegetSectionTopicsResult(result){
// public sendActivationCode() { }
// }
// VerifyCode(){
// }
createRequest(){ createRequest(){
if(this.showRequestDetails){ if(this.showRequestDetails){
this.showRequestDetails = false this.showRequestDetails = false

@ -0,0 +1,46 @@
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { FormsModule } from '@angular/forms';
import { Routes, RouterModule } from '@angular/router';
import { IonicModule } from '@ionic/angular';
import { MowadhafiPage } from './mowadhafi.page';
import { HmgCommonModule } from '../hmg-common/hmg-common.module';
import {MyRequestComponent} from './my-request/my-request.component';
import {HRRequestComponent} from './hr-request/hr-request.component';
import {RequestDetailsComponent} from'./request-details/request-details.component';
const routes: Routes = [
{
path: '',
component: MowadhafiPage,
children:[{
path: 'my-request',
component: MyRequestComponent
},
{
path: 'hr-request',
component: HRRequestComponent
},
{
path: 'request-details',
component: RequestDetailsComponent
}
]
}
];
@NgModule({
imports: [
HmgCommonModule,
CommonModule,
FormsModule,
IonicModule,
RouterModule.forChild(routes)
],
declarations: [MowadhafiPage,MyRequestComponent,HRRequestComponent,RequestDetailsComponent]
})
export class MowadhafiPageModule {}

@ -0,0 +1,10 @@
<!-- <ion-header>
<ion-toolbar>
<ion-title>mowadhafi</ion-title>
</ion-toolbar>
</ion-header>
-->
<ion-content>
<ion-router-outlet></ion-router-outlet>
</ion-content>

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

@ -0,0 +1,15 @@
import { Component, OnInit } from '@angular/core';
@Component({
selector: 'app-mowadhafi',
templateUrl: './mowadhafi.page.html',
styleUrls: ['./mowadhafi.page.scss'],
})
export class MowadhafiPage implements OnInit {
constructor() { }
ngOnInit() {
}
}

@ -0,0 +1,12 @@
import { TestBed } from '@angular/core/testing';
import { MowadhafiService } from './mowadhafi.service';
describe('MowadhafiService', () => {
beforeEach(() => TestBed.configureTestingModule({}));
it('should be created', () => {
const service: MowadhafiService = TestBed.get(MowadhafiService);
expect(service).toBeTruthy();
});
});

@ -0,0 +1,92 @@
import { Injectable } from '@angular/core';
import { ConnectorService } from 'src/app/hmg-common/services/connector/connector.service';
import { AuthenticationService } from "src/app/hmg-common/services/authentication/authentication.service";
@Injectable({
providedIn: 'root'
})
export class MowadhafiService {
public static EMPLOYEE_SHARED_DATA = 'employee';
public static getMyTeam = 'Services/ERP.svc/REST/GET_EMPLOYEE_SUBORDINATES';
public static getSuborinateStatus = 'Services/ERP.svc/REST/GET_SUBORDINATES_ATTD_STATUS';
public static getUserInfo ='Services/ERP.svc/REST/Get_UserInformation';
public static getTicketTypes ='Services/COCWS.svc/REST/Mohemm_ITG_GetTicketTypes';
public static getProject ='Services/COCWS.svc/REST/Mohemm_ITG_GetProjects';
public static getProjectDepartments ='Services/COCWS.svc/REST/Mohemm_ITG_GetProjectDepartments';
public static getDepartmentSections ='Services/COCWS.svc/REST/Mohemm_ITG_GetDepartmentSections';
public static getSectionTopics ='Services/COCWS.svc/REST/Mohemm_ITG_GetSectionTopics';
public static getTicketsByEmployee ='Services/COCWS.svc/REST/Mohemm_ITG_GetTicketsByEmployee';
public static getTicketStatisticsByEmp ='Services/COCWS.svc/REST/Mohemm_ITG_GetTicketStatisticsByEmployee';
public static getTicketTransaction ='Services/COCWS.svc/REST/Mohemm_ITG_GetTicketTransaction';
public static getTicketDetails =' Services/COCWS.svc/REST/Mohemm_ITG_GetTicketDetails';
constructor(
public con: ConnectorService,
private authService: AuthenticationService
) { }
public getEmployeeSubordinates(absence: any, onError?: any, errorLabel?: string){
const request = absence;
this.authService.authenticateRequest(request);
return this.con.post(MowadhafiService.getMyTeam, request, onError, errorLabel);
}
public getSuborinatesAttStatus(absence: any, onError?: any, errorLabel?: string){
const request = absence;
this.authService.authenticateRequest(request);
return this.con.post(MowadhafiService.getSuborinateStatus, request, onError, errorLabel);
}
public getUserInfo(absence: any, onError?: any, errorLabel?: string){
const request = absence;
this.authService.authenticateRequest(request);
return this.con.post(MowadhafiService.getUserInfo, request, onError, errorLabel);
}
public getTicketTypes(absence: any, onError?: any, errorLabel?: string){
const request = absence;
this.authService.authenticateRequest(request);
return this.con.post(MowadhafiService.getTicketTypes, request, onError, errorLabel);
}
public getProject(absence: any, onError?: any, errorLabel?: string){
const request = absence;
this.authService.authenticateRequest(request);
return this.con.post(MowadhafiService.getProject, request, onError, errorLabel);
}
public getProjectDepartments(absence: any, onError?: any, errorLabel?: string){
const request = absence;
this.authService.authenticateRequest(request);
return this.con.post(MowadhafiService.getProjectDepartments, request, onError, errorLabel);
}
public getDepartmentSections(absence: any, onError?: any, errorLabel?: string){
const request = absence;
this.authService.authenticateRequest(request);
return this.con.post(MowadhafiService.getDepartmentSections, request, onError, errorLabel);
}
public getSectionTopics(absence: any, onError?: any, errorLabel?: string){
const request = absence;
this.authService.authenticateRequest(request);
return this.con.post(MowadhafiService.getSectionTopics, request, onError, errorLabel);
}
public getTicketsByEmployee(absence: any, onError?: any, errorLabel?: string){
const request = absence;
this.authService.authenticateRequest(request);
return this.con.post(MowadhafiService.getTicketsByEmployee, request, onError, errorLabel);
}
public getTicketStatisticsByEmp(absence: any, onError?: any, errorLabel?: string){
const request = absence;
this.authService.authenticateRequest(request);
return this.con.post(MowadhafiService.getTicketStatisticsByEmp, request, onError, errorLabel);
}
public getTicketTransaction(absence: any, onError?: any, errorLabel?: string){
const request = absence;
this.authService.authenticateRequest(request);
return this.con.post(MowadhafiService.getTicketTransaction, request, onError, errorLabel);
}
public getTicketDetails(absence: any, onError?: any, errorLabel?: string){
const request = absence;
this.authService.authenticateRequest(request);
return this.con.post(MowadhafiService.getTicketDetails, request, onError, errorLabel);
}
}

@ -0,0 +1,34 @@
<ion-header>
<ion-toolbar class="header-toolbar-new" >
<ion-buttons slot="start">
<nav-buttons (backClick)="goback()" [navigate]="false"></nav-buttons>
</ion-buttons>
<ion-title style=" color:white; text-align: center;">{{ts.trPK('userProfile','MyHR-request')}}</ion-title>
</ion-toolbar>
</ion-header>
<ion-content>
<!-- <div>
<ion-row [ngClass]="direction == 'en' ? 'empty-en':'empty-ar' ">{{ts.trPK('general','empty')}}</ion-row>
</div> -->
<div>
<ion-card class="result-container" (click)="openRequestDetailsPage()">
<ion-card-content>
<ion-row style="margin-left: -3px; margin-right: -9px;">
<ion-col class="text">Complaints</ion-col>
<ion-col class="date">{{ts.trPK('userProfile','postedDate')}} May2,2021</ion-col>
</ion-row>
<ion-row>There is some Complaints</ion-row>
<ion-row style="margin-top: 5px;">Pending</ion-row>
</ion-card-content>
</ion-card>
</div>
</ion-content>
<ion-footer class="footer">
<div class="Btn">
<ion-button class="CreateBtn" (click)="openHRRequestPage()" >{{ts.trPK('userProfile','createHR-Request')}}</ion-button>
</div>
</ion-footer>

@ -0,0 +1,63 @@
.empty-en{
color: black;
text-align: center;
font-size: 15px;
font-family: WorkSans-Bold;
margin: 50px 0px 0px 100px;
}
.empty-ar{
color: black;
text-align: center;
font-size: 15px;
font-family: WorkSans-Bold;
margin: 50px 100px 0px 0px;
}
.result-container{
position: relative;
background: white;
/* padding-bottom: 3px; */
border-radius: 20px;
z-index: 1;
margin: 15px;
border-radius: 10px;
border: 1px solid #ccc;
}
.text{
font-size: 15px;
margin-top: -9px;
font-family: 'WorkSans-bold';
}
.date{
margin-top: -9px;
margin-right: -49px;
color: gray;
font-size: 12px;
}
.CreateBtn{
--background: var(--newgreen) !important;
background: var(--newgreen) !important;
white-space: normal;
color: var(--light);
text-transform: capitalize;
min-height: 1.0cm;
--border-radius: 7px !important;
border-radius: 7px !important;
--min-height: 1.6cm !important;
width: 315px;
}
.footer{
padding: 15px 0px;
background-color: var(--light) !important;
border: 0px !important;
box-shadow: none !important;
-webkit-box-shadow: none;
}
.Btn{
margin: auto; text-align: center; display: block;
}

@ -5,7 +5,7 @@ import { TranslatorService } from 'src/app/hmg-common/services/translator/transl
import { AuthenticationService } from 'src/app/hmg-common/services/authentication/authentication.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 { 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 { SharedDataService } from 'src/app/hmg-common/services/shared-data-service/shared-data.service';
import { MyTeamService } from '../service/my-team.service'; import { MowadhafiService } from '../mowadhafi.service';
import { Location } from '@angular/common'; import { Location } from '@angular/common';
@Component({ @Component({
@ -23,7 +23,7 @@ public direction : String;
public authService: AuthenticationService, public authService: AuthenticationService,
public sharedData: SharedDataService, public sharedData: SharedDataService,
public events: Events, public events: Events,
public myTeamService: MyTeamService, public MowadhafiService: MowadhafiService,
private location: Location, private location: Location,
private menu: MenuController, private menu: MenuController,
@ -31,7 +31,9 @@ public direction : String;
this.direction = TranslatorService.getCurrentLanguageName(); this.direction = TranslatorService.getCurrentLanguageName();
} }
ngOnInit() {} ngOnInit() {
this.getTicketsByEmployee();
}
goback() { goback() {
this.location.back(); this.location.back();
@ -43,4 +45,27 @@ public direction : String;
this.menu.toggle(); this.menu.toggle();
} }
public openRequestDetailsPage() {
this.cs.openRequestDetailsPage();
this.menu.toggle();
}
getTicketsByEmployee(){
const request = {
// TokenID:"xxx",
// EmployeeNumber:"191817",
ItgPageSize:10,
ItgPageNo:1
};
this.MowadhafiService.getTicketsByEmployee(request, ()=> {} , this.ts.trPK('general', 'retry')).subscribe((result)=>
{
this.handlegetTicketsByEmployeeResult(result);
}) }
handlegetTicketsByEmployeeResult(result){
}
} }

@ -0,0 +1,66 @@
<ion-header>
<ion-toolbar class="header-toolbar-new">
<ion-buttons slot="start">
<nav-buttons (backClick)="goback()" [navigate]="false"></nav-buttons>
</ion-buttons>
<ion-title style=" color:white; text-align: center;">{{ts.trPK('userProfile','MyHR-request')}}</ion-title>
</ion-toolbar>
</ion-header>
<ion-content>
<!-- <div>
<ion-row [ngClass]="direction == 'en' ? 'empty-en':'empty-ar' ">{{ts.trPK('general','empty')}}</ion-row>
</div> -->
<div>
<ion-card class="result-container" >
<ion-card-content>
<ion-row style="margin-left: -3px; margin-right: -9px;">
<ion-col >Pending</ion-col>
<ion-col class="date">{{ts.trPK('userProfile','postedDate')}} May2,2021</ion-col>
</ion-row>
<ion-col [size]="12">
<h2 class="labels">{{ts.trPK('userProfile','refrence')}}</h2>
<p class="text">453388</p>
</ion-col>
<ion-col [size]="12">
<h2 class="labels"> {{ts.trPK('userProfile','section')}}</h2>
<p class="text">Employee</p>
</ion-col>
<ion-col [size]="12">
<h2 class="labels"> {{ts.trPK('userProfile','topic')}}</h2>
<p class="text">Change Tiket</p>
</ion-col>
<ion-col [size]="12">
<h2 class="labels">{{ts.trPK('userProfile','Description')}}</h2>
<p class="DescrText">descriptions</p>
</ion-col>
</ion-card-content>
</ion-card>
</div>
<div>
<ion-card class="result-containerList" >
<ion-card-content>
<div style="position: relative;">
<div [ngClass]=" direction == 'en'? 'request-list-container' : 'request-list-container-ar'" >
<div>
<!-- <div *ngFor="let formattedAction of showFormattedAction; let i = index"> -->
<span [ngClass]="direction == 'en'? 'text-span':'text-span-ar'">Action By</span>
<div class="action-data">
<p >descriptions</p>
<span [ngClass]="direction == 'en'? 'date-span':'date-span-ar'">May 16,2021</span>
</div>
</div>
</div>
</div>
</ion-card-content>
</ion-card>
</div>
</ion-content>

@ -0,0 +1,174 @@
.sendCodeBtn{
--background: #269DB8;
color: white;
text-align: center;
text-decoration: none;
display: inline-block;
font-size: 12px;
margin-left: 23px !important;
margin-top: 15px !important;
margin-bottom: 20px !important;
/* border-radius: 4px; */
height: 26px;
/* padding: 6px 24px; */
font-size: 15px;
width: 322px;
}
.empty-en{
color: black;
text-align: center;
font-size: 15px;
font-family: WorkSans-Bold;
margin: 50px 0px 0px 100px;
}
.empty-ar{
color: black;
text-align: center;
font-size: 15px;
font-family: WorkSans-Bold;
margin: 50px 100px 0px 0px;
}
.result-container{
position: relative;
background: white;
/* padding-bottom: 3px; */
border-radius: 20px;
z-index: 1;
margin: 15px;
border-radius: 10px;
border: 1px solid #ccc;
}
.result-containerList{
position: relative;
background: white;
/* padding-bottom: 3px; */
border-radius: 20px;
z-index: 1;
margin: 15px;
border-radius: 10px;
border: 1px solid #ccc;
}
.text{
font-size: 15px;
// margin-top: -9px;
font-family: 'WorkSans-bold';
}
.date{
// margin-top: -9px;
margin-right: -49px;
color: gray;
font-size: 12px;
}
.labels{
font-size: 13px;
margin-bottom: 0px;
margin-top: -10px;
color: gray;
}
.request-list-container {
position: relative;
padding-left: 37px;
clear: both;
min-height: 200px;
margin-bottom: 80px;
padding-top: 15px;
}
.request-list-container:before{
content: "";
position: absolute;
height: 100%;
width: 4px;
left: 7px;
top: 15px;
background-color: #f5f4f4;
}
.request-list-container-ar {
position: relative;
padding-left: 60px;
clear: both;
min-height: 200px;
margin-bottom: 80px;
padding-top: 15px;
}
.request-list-container-ar:before{
content: "";
position: absolute;
height: 100%;
width: 4px;
left: 30px;
top: 15px;
right: 6px;
background-color: #dddddd;
}
.text-span {
position: relative;
display: block;
// margin-bottom: 10px;
font-family: 'WorkSans-bold';
}
.text-span:before{
content: "";
position: absolute;
left: -35px;
border-radius: 50%;
width: 15px;
height: 15px;
background-color: #269db8;
top: 1px;
}
.text-span-ar{
position: relative;
display: block;
// margin-bottom: 10px;
/* margin-top: 10px; */
margin-right: 30px;
}
.text-span-ar:before{
content: "";
position: absolute;
right: -29px;
border-radius: 50%;
width: 15px;
height: 15px;
background-color: #269db8;
top: 1px;
}
.action-data{
background-color: white;
padding: 1px;
border-radius: 20px;
font-family: WorkSans-Regular;
// padding-left: 15px;
margin-right: 20px;
margin-bottom: 15px;
p{
font-size: 14px;
}
}
.date-span{
font-size: 13px;
margin-bottom: 0px;
margin-top: -10px;
color: gray;
margin-left: 178px;
}
.date-span-ar{
font-size: 13px;
margin-bottom: 0px;
margin-top: -10px;
color: gray;
margin-right: 155px;
}

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

@ -0,0 +1,75 @@
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';
@Component({
selector: 'app-request-details',
templateUrl: './request-details.component.html',
styleUrls: ['./request-details.component.scss'],
})
export class RequestDetailsComponent implements OnInit {
public direction : String;
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.getTicketTransaction();
this.getTicketDetails()
}
goback() {
this.location.back();
}
getTicketTransaction(){
const request = {
// EmployeeNumber:"191817",
ItgTicketId:"5a10de61-c4db-4c77-e464-08d8a1beaaac",
};
this.MowadhafiService.getTicketTransaction(request, ()=> {} , this.ts.trPK('general', 'retry')).subscribe((result)=>
{
this.handlegetTicketTransactionResult(result);
}) }
handlegetTicketTransactionResult(result){
}
getTicketDetails(){
const request = {
// EmployeeNumber:"191817",
ItgTicketId:"5a10de61-c4db-4c77-e464-08d8a1beaaac",
};
this.MowadhafiService.getTicketDetails(request, ()=> {} , this.ts.trPK('general', 'retry')).subscribe((result)=>
{
this.handlegetTicketDetailsResult(result);
}) }
handlegetTicketDetailsResult(result){
}
}

@ -17,7 +17,7 @@
<!-- <ion-col><img src="../assets/imgs/fav filled.svg"></ion-col> --> <!-- <ion-col><img src="../assets/imgs/fav filled.svg"></ion-col> -->
</div> </div>
<div class="user-image"> <div class="user-image">
<img [src]="employee.EMPLOYEE_IMAGE ? 'data:image/png;base64,'+employee.EMPLOYEE_IMAGE : '../assets/imgs/profile.png'" alt="Team Member Image"/> <img class="img" [src]="employee.EMPLOYEE_IMAGE ? 'data:image/png;base64,'+employee.EMPLOYEE_IMAGE : '../assets/imgs/profile.png'" alt="Team Member Image"/>
</div> </div>
<div style="margin-right: 16px;" slot="end" > <div style="margin-right: 16px;" slot="end" >
<a [ngClass]="employee.EMPLOYEE_MOBILE_NUMBER == '' ? 'disable-phone action-button-icon' : 'action-button-icon'" href="tel:{{employee.EMPLOYEE_MOBILE_NUMBER}}"></a> <a [ngClass]="employee.EMPLOYEE_MOBILE_NUMBER == '' ? 'disable-phone action-button-icon' : 'action-button-icon'" href="tel:{{employee.EMPLOYEE_MOBILE_NUMBER}}"></a>

@ -232,7 +232,17 @@ ion-title{
padding: 15px; padding: 15px;
border-bottom: 1px solid #ccc; border-bottom: 1px solid #ccc;
} }
.img{
width: 100px;
height: 100px;
display: inline-flex;
overflow: hidden;
border-radius: 78% !important;
position: relative;
/* top: 34px; */
background: transparent;
margin-left: -3px;
}
///////////////////////// Team Members css //////////////////////@extend ///////////////////////// Team Members css //////////////////////@extend
.filters-row { .filters-row {

@ -1,22 +0,0 @@
<ion-header>
<ion-toolbar class="header-toolbar-new">
<ion-buttons slot="start">
<nav-buttons (backClick)="goback()" [navigate]="false"></nav-buttons>
</ion-buttons>
<ion-title style=" color:white; text-align: center;">{{ts.trPK('userProfile','MyHR-request')}}</ion-title>
</ion-toolbar>
</ion-header>
<ion-content>
<div>
<ion-row [ngClass]="direction == 'en' ? 'empty-en':'empty-ar' ">{{ts.trPK('general','empty')}}</ion-row>
</div>
</ion-content>
<ion-footer>
<div>
<ion-button class="sendCodeBtn" (click)="openHRRequestPage()" >{{ts.trPK('userProfile','createHR-Request')}}</ion-button>
</div>
</ion-footer>

@ -1,33 +0,0 @@
.sendCodeBtn{
--background: #269DB8;
color: white;
text-align: center;
text-decoration: none;
display: inline-block;
font-size: 12px;
margin-left: 23px !important;
margin-top: 15px !important;
margin-bottom: 20px !important;
/* border-radius: 4px; */
height: 26px;
/* padding: 6px 24px; */
font-size: 15px;
width: 322px;
}
.empty-en{
color: black;
text-align: center;
font-size: 15px;
font-family: WorkSans-Bold;
margin: 50px 0px 0px 100px;
}
.empty-ar{
color: black;
text-align: center;
font-size: 15px;
font-family: WorkSans-Bold;
margin: 50px 100px 0px 0px;
}

@ -8,8 +8,7 @@ import { IonicModule } from '@ionic/angular';
import { MyTeamPage } from './my-team.page'; import { MyTeamPage } from './my-team.page';
import { HmgCommonModule } from '../hmg-common/hmg-common.module'; import { HmgCommonModule } from '../hmg-common/hmg-common.module';
import { MyRequestComponent } from './my-request/my-request.component'; import { from } from 'rxjs';
import { HRRequestComponent } from './/hr-request/hr-request.component';
import { WorklistService } from '../notification/service/worklist.service'; import { WorklistService } from '../notification/service/worklist.service';
@ -29,14 +28,7 @@ const routes: Routes = [
path: 'details-2', path: 'details-2',
component: DetailsComponent component: DetailsComponent
}, },
{
path: 'my-request',
component: MyRequestComponent
},
{
path: 'hr-request',
component: HRRequestComponent
}
] ]
} }
@ -50,7 +42,8 @@ const routes: Routes = [
IonicModule, IonicModule,
RouterModule.forChild(routes) RouterModule.forChild(routes)
], ],
declarations: [MyTeamPage, HomeComponent, DetailsComponent,
],
providers: [WorklistService], providers: [WorklistService],
declarations: [MyTeamPage, HomeComponent, DetailsComponent, MyRequestComponent, HRRequestComponent]
}) })
export class MyTeamPageModule { } export class MyTeamPageModule { }

@ -8,7 +8,8 @@ export class MyTeamService {
public static EMPLOYEE_SHARED_DATA = 'employee'; public static EMPLOYEE_SHARED_DATA = 'employee';
public static getMyTeam = 'Services/ERP.svc/REST/GET_EMPLOYEE_SUBORDINATES'; public static getMyTeam = 'Services/ERP.svc/REST/GET_EMPLOYEE_SUBORDINATES';
public static getSuborinateStatus = 'Services/ERP.svc/REST/GET_SUBORDINATES_ATTD_STATUS'; public static getSuborinateStatus = 'Services/ERP.svc/REST/GET_SUBORDINATES_ATTD_STATUS';
public static getUserInfo ='Services/ERP.svc/REST/Get_UserInformation';
constructor( constructor(
public con: ConnectorService, public con: ConnectorService,
private authService: AuthenticationService private authService: AuthenticationService
@ -25,11 +26,7 @@ export class MyTeamService {
return this.con.post(MyTeamService.getSuborinateStatus, request, onError, errorLabel); return this.con.post(MyTeamService.getSuborinateStatus, request, onError, errorLabel);
} }
public getUserInfo(absence: any, onError?: any, errorLabel?: string){
const request = absence;
this.authService.authenticateRequest(request);
return this.con.post(MyTeamService.getUserInfo, request, onError, errorLabel);
}
} }

@ -1,121 +1,153 @@
<app-generic-header <app-generic-header
showBack="true" showBack="true"
[headerText]="'userProfile,title' | translate"> [headerText]="'userProfile, title' | translate">
</app-generic-header> </app-generic-header>
<ion-content class="colorBG"> <ion-content class="colorBG">
<div class="header-div"> <div class="header-div">
<!-- <ion-buttons slot="start"> <div class="centerDiv homeBox">
<ion-back-button color="light" class="btnBack" defaultHref="/home"></ion-back-button>
</ion-buttons> -->
<!-- <p class="proTitles">{{ts.trPK('userProfile','title')}}</p> -->
<div>
<div class="centerDiv homeBox"> <div class="centerDiv homeBox">
<!-- <div class="profileDiv"> --> <!-- <div class="profileDiv"> -->
<img class="profileImg" [src]="user_image"> <img class="profileImg" [src]="imageSrc">
</div> </div>
<!-- <ion-img class="profileImg" [src]="imageSrc"></ion-img> --> <!-- <ion-img class="profileImg" [src]="imageSrc"></ion-img> -->
<!-- <div class="Text">{{personalInfo.EMPLOYEE_NAME}}</div> -->
<div *ngIf="personalInfo"> <div *ngIf="personalInfo">
<p class="empName">{{User_name_Emp}}</p> <p class="Text">{{personalInfo.EMPLOYEE_NAME}}</p>
<p class="empJob"> {{User_Job_name}}</p>
</div> </div>
</div> </div>
</div>
<ion-grid *ngIf="personalInfo" style="position: relative; display: block; z-index: 5;"> <div [ngClass]=" direction == 'ltr' ? 'changeImgBtn' : 'changeImgBtn-ar'">
<div [ngClass]=" direction == 'ltr' ? 'gridService-en' : 'gridService-ar'" style="background: #0B4775; border-radius: 20px;"> <button ion-button icon-only menuToggle class="menubutton" (click)="ChangeImage()">
<ion-row> <!-- <ion-icon (click)="ChangeImage();" class="changeIcon" name="md-create"></ion-icon> -->
<ion-col> <img (click)="ChangeImage();" class="changeIcon" src="../assets/imgs/edit-image.svg">
<label style="font-size: 12px; color: white; margin: 10px 0px 0px 0px; display: block; text-align: center;font-weight: bold;"> </button>
{{ 'general, appreciate-service' | translate}}
</label>
</ion-col>
</ion-row>
<ion-row [ngClass]=" direction == 'ltr' ? 'service-row-en' : 'service-row-ar'">
<ion-col [ngClass]=" direction == 'ltr' ? 'columns' : 'columns-ar'">
<ion-grid>
<ion-row style="text-align:center">
<ion-col>
<label [ngClass]=" direction == 'ltr' ? 'service' : 'service-ar'">{{personalInfo.SERVICE_YEARS}}</label>
</ion-col>
</ion-row>
<ion-row>
<ion-col>
<label [ngClass]=" direction == 'ltr' ? 'services' : 'services-ar'">{{ts.trPK('userProfile','years')}}</label>
</ion-col>
</ion-row>
</ion-grid>
</ion-col>
<ion-col>
<div class="verticalLine"></div>
</ion-col>
<ion-col [ngClass]=" direction == 'ltr' ? 'columns' : 'columns-ar'">
<ion-grid>
<ion-row style="text-align:center">
<ion-col>
<label [ngClass]=" direction == 'ltr' ? 'service' : 'service-ar'">{{personalInfo.SERVICE_MONTHS}}</label>
</ion-col>
</ion-row>
<ion-row>
<ion-col>
<label [ngClass]=" direction == 'ltr' ? 'services' : 'services-ar'">{{ts.trPK('userProfile','months')}}</label>
</ion-col>
</ion-row>
</ion-grid>
</ion-col>
<ion-col>
<div class="verticalLine"></div>
</ion-col>
<ion-col [ngClass]=" direction == 'ltr' ? 'columns' : 'columns-ar'">
<ion-grid>
<ion-row style="text-align:center">
<ion-col>
<label [ngClass]=" direction == 'ltr' ? 'service' : 'service-ar'">{{personalInfo.SERVICE_DAYS}}</label>
</ion-col>
<ion-col>
<label [ngClass]=" direction == 'ltr' ? 'services' : 'services-ar'">{{ts.trPK('absenceList','days')}}</label>
</ion-col>
</ion-row>
</ion-grid>
</ion-col>
</ion-row>
</div> </div>
</ion-grid>
</div> <!-- end header-div -->
<div>
<div class="list"> <!-- <ion-card *ngIf="personalInfo"> -->
<ion-list class="list-ios">
<div class="p"> <!-- <ion-card-header class="boxHdr">
<p>{{ts.trPK('userProfile','Years of Services')}}</p> <div class="hrTitle">{{personalInfo.EMPLOYEE_NAME}}</div>
</div> </ion-card-header> -->
<!-- <ion-card-content> -->
<div *ngIf="personalInfo">
<ion-grid>
<div class="profileGrid">
<ion-row style="border-bottom: rgb(190, 187, 187) solid 1px;">
<ion-col class="line">
<ion-row>
<label class="lebl">
{{ts.trPK('userProfile','empNo')}}</label></ion-row>
<ion-row > <label
class="rowBolds">{{personalInfo.EMPLOYEE_NUMBER}}</label> </ion-row>
</ion-col>
<ion-col>
<ion-row> <label class="lebl">{{ts.trPK('userProfile','category')}}</label>
</ion-row>
<ion-row>
<label class="rowBolds">{{personalInfo.EMPLOYMENT_CATEGORY_MEANING}}</label> </ion-row>
</ion-col>
</ion-row>
<ion-row style="border-bottom: rgb(190, 187, 187) solid 1px;">
<ion-col>
<ion-row>
<label class="lebl">{{ts.trPK('userProfile','address')}}</label>
</ion-row>
<ion-row>
<label class="rowBolds"></label>
</ion-row>
</ion-col>
</ion-row>
<ion-row style="border-bottom: rgb(190, 187, 187) solid 1px;">
<ion-col>
<ion-row>
<label class="lebl">{{ts.trPK('general','mobile')}}</label>
</ion-row>
<ion-row>
<label class="rowBolds">{{personalInfo.EMPLOYEE_MOBILE_NUMBER}}</label>
</ion-row>
</ion-col>
</ion-row>
<ion-row style="border-bottom: rgb(190, 187, 187) solid 1px;">
<ion-col>
<ion-row>
<label class="lebl">{{ts.trPK('userProfile','busG')}}</label>
</ion-row>
<ion-row> <label class="rowBolds">{{personalInfo.BUSINESS_GROUP_NAME}}</label>
</ion-row>
</ion-col>
</ion-row>
<ion-item class="itemline" (click)="openEditprofile()">
<ion-thumbnail slot="start" class="menu-thumb"> <ion-row style="border-bottom: rgb(190, 187, 187) solid 1px;">
<img style= "height: 22px !important;" src="../assets/imgs/profile_icon.png" item-left> <ion-col>
</ion-thumbnail> <ion-row>
<label class="lebl">{{ts.trPK('userProfile','job')}}</label>
<ion-label class="profile"> </ion-row>
{{ts.trPK('userProfile','edit-profile')}} <ion-row>
</ion-label> <label class="rowBolds">{{personalInfo.JOB_NAME}}</label>
<ion-icon [ngClass]=" direction == 'ltr' ? 'arrow' : 'arrow-ar'" name="arrow-forward" item-right></ion-icon> </ion-row>
</ion-item> </ion-col>
</ion-row>
<ion-item class="itemlins" (click)="openPerormance()">
<ion-thumbnail slot="start" class="menu-thumb"> <ion-row style="border-bottom: rgb(190, 187, 187) solid 1px;">
<ion-icon style= "width: 23px; height: 24px !important;" name="speedometer" item-left></ion-icon> <ion-col>
<ion-row>
</ion-thumbnail> <label class="lebl">{{ts.trPK('userProfile','payrol')}}</label>
<ion-label class="profile"> </ion-row>
{{ts.trPK('userProfile','performance-evaluation')}} <ion-row>
</ion-label> <label class="rowBolds">{{personalInfo.PAYROLL_NAME}}</label>
<ion-icon [ngClass]=" direction == 'ltr' ? 'arrow' : 'arrow-ar'" name="arrow-forward" item-right></ion-icon> </ion-row>
</ion-item> </ion-col>
</ion-row>
</ion-list>
</div>
<ion-row style="border-bottom: rgb(190, 187, 187) solid 1px;">
<ion-col>
<ion-row>
<label class="lebl">{{ts.trPK('userProfile','orgEmail')}}</label>
</ion-row>
<ion-row>
<label class="rowBolds">{{personalInfo.EMPLOYEE_EMAIL_ADDRESS}}</label>
</ion-row>
</ion-col>
</ion-row>
<ion-row style="border-bottom: rgb(190, 187, 187) solid 1px;">
<ion-col>
<ion-row>
<label class="lebl">{{ts.trPK('userProfile','position')}}</label>
</ion-row>
<ion-row>
<label class="rowBolds">{{personalInfo.POSITION_NAME}}</label>
</ion-row>
</ion-col>
</ion-row>
<ion-row>
<ion-col>
<ion-row>
<label class="lebl">{{ts.trPK('userProfile','grade')}} </label>
</ion-row>
<ion-row>
<label class="rowBolds">{{personalInfo.GRADE_NAME}}</label>
</ion-row>
</ion-col>
</ion-row>
</div>
</ion-grid>
</div>
<!-- </ion-card-content> -->
<!-- </ion-card> -->
</div>
</ion-content> </ion-content>

@ -1,216 +1,130 @@
ion-col.colBold, ion-col.colBold > label{
font-weight:bold;
}
.colorBG{
.list-ios { --background: #f0efef;
// margin-left: 0; }
// margin-right: 0; .header-div{
// margin-top: 32px; text-transform: capitalize;
// margin-bottom: 32px; background: #269DB8;
// background: var(--ion-item-background,var(--ion-background-color,#fff)); display: block;
margin-left: 0; position: relative;
margin-right: 0; height: 160px;
margin-top: -15px; margin-bottom: 60px;
margin-bottom: 32px;
border: 1px solid #d8d8d8;
background: var(--ion-item-background, var(--ion-background-color, #fff));
border-radius: 10px;
padding-top: 60px;
} }
.header-toolbar-new{ // .profileCont{
--background: #269DB8; // background-color: #d9d7d7 !important;
.menubutton {
background: #f0ecec;
min-height: 39px;
width: 35px !important;
height: 20px;
border-radius: 50%;
} }
.colorBG{
--background: #f0efef; .changeIcon{
} /* background: #c1c1c1; */
.header-div{ width: 21px;
text-transform: capitalize; /* height: 26px; */
background: #269DB8; border-radius: 50% !important;
display: block;
position: relative; position: relative;
height: 113px; color: #7f8c8d;
margin-bottom: 60px; height: 35px;
}
}
.changeImgBtn{
position: absolute;
top: 80%;
left: 65%;
}
.changeImgBtn-ar{
position: absolute;
top: 80%;
left: 66%;
}
.profileImg{ .profileImg{
width: 160px; width: 160px;
height: 160px; height: 160px;
display: -webkit-inline-box; display: -webkit-inline-box;
display: inline-flex; display: inline-flex;
overflow: hidden; overflow: hidden;
/* background: transparent; */ // background: transparent;
border-radius: 78% !important; border-radius: 69% !important;
position: relative; position: relative;
top: 34px; top: 34px;
// background: white; // background: white;
background: transparent; background: transparent;
margin-left: -3px; }
.Text {
margin: 0;
padding: 0;
text-align: center;
font-weight: bolder;
color: black;
font-size: 16px;
margin-top: 34px;
text-align: center;
} }
.line{
padding-top: 0px !important;
/* margin-bottom: 0px; */
/* margin: 0px; */
border-right: 1px #c5c2c2 solid !important;
line-height: 10px !important;
}
.proTitles { .proTitles {
margin: 0; margin: 0;
padding: 0; padding: 0;
font-size: 16px; font-size: 16px;
text-align: center; text-align: center;
font-weight: bolder; font-weight: bolder;
color: white; color: white;
margin-top: -33px; margin-top: -33px;
}
.Text {
margin: 0;
padding: 0;
text-align: center;
font-weight: bolder;
color: black;
font-size: 16px;
margin-top: 34px;
margin-bottom: 10px;
text-align: center;
}
ion-thumbnail.menu-thumb{
width:20px;
height:20px;
// margin-top: 5px !important;
}
.profile{
color: black !important;
// font-weight: bolder !important;
}
.gridService-en{
margin-top: 87px;
border-radius: 10px;
margin-bottom: -49px;
margin-left: 30px;
margin-right: 30px;
}
.gridService-ar{
margin-top: 87px;
border-radius: 10px;
margin-bottom: -49px;
margin-left: 17px;
margin-right: 17px;
}
.columns{
// margin: 10px;
// background: #0B4775;
// border-radius: 27px;
// padding-left: 30px;
// padding-right: 6px;
// padding-top: 19px;
// padding-bottom: 26px;
}
.columns-ar{
// margin: 10px;
// background: #0B4775;
// border-radius: 27px;
// padding-left: 7px;
// padding-right: 3px;
// padding-top: 19px;
// padding-bottom: 26px;
}
.service{
font-size: 28px;
// font-weight: bolder;
color: white;
letter-spacing: 1px;
font-weight: bold;
}
.services{
font-size: 12px;
color: white;
}
.service-ar{
font-size: 28px;
color: white;
letter-spacing: 1px;
font-weight: bold;
margin-right: 26px;
}
.services-ar{
font-size: 20px;
color: white;
margin-right: 25px;
}
.list{
margin-left: 14px;
margin-right: 14px;
border-radius: 10px;
// background: white;
border:#bebbbb !important;
padding: 2px;
}
.p{
color: black !important;
font-size: medium;
text-align: center;
border-bottom: rgb(190, 187, 187) solid 1px;
}
.itemline{
border-bottom: rgb(190, 187, 187) solid 1px;
}
.itemlins{
border-bottom: rgb(190, 187, 187) solid 1px;
margin-bottom: 209px;
}
.empName {
margin: 0;
padding: 0;
text-align: center;
font-weight: bolder;
color: black;
font-size: 16px;
margin-top: 38px;
}
.empJob{
margin: 0;
padding: 0;
text-align: center;
color: black;
font-size: 16px;
margin-top: 4px;
}
.arrow{
width: 20px;
height: 22px !important;
}
.arrow-ar{
float: left;
font-size: 25px;
color: grey;
-webkit-transform: rotate(180deg);
transform: rotate(180deg);
}
.verticalLine {
width:1%;
height:50px;
background:white;
margin-top: 100%;
// margin-left: 10%;
} }
.service-row-en{
width: 79%; .profileGrid{
margin: -12px 0px 0px 35px; border: #bebbbb solid 1px;
border-radius: 9px;
padding: 0px;
margin-top: 54px;
margin-left: 10px;
margin-right: 10px;
margin-bottom: 10px;
color: black;
// font-weight: bold;
background: white;
} }
.service-row-ar{
width: 95%;
margin: -12px 0px 35px 0px;
.lebl{
color: black;
font-size: 14px !important;
font-weight: bold !important;
padding-top: 9px;
padding-left: 5px;
}
.rowBolds{
color: black !important;
font-size: 14px !important;
/* padding: 6px !important; */
padding-bottom: 9px;
padding-left: 5px;
padding-top: 4px;
} }

@ -1,14 +1,11 @@
import { Component, OnInit } from '@angular/core'; 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 { CommonService } from 'src/app/hmg-common/services/common/common.service';
import { TranslatorService } from 'src/app/hmg-common/services/translator/translator.service'; import { TranslatorService } from 'src/app/hmg-common/services/translator/translator.service';
import { AuthenticationService } from 'src/app/hmg-common/services/authentication/authentication.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 { AuthenticatedUser } from 'src/app/hmg-common/services/authentication/models/authenticated-user';
import { PerformanceAppraisalResponse } from 'src/app/hmg-common/services/dashbored/performance-appraisal.response'; import { Events } from '@ionic/angular';
import { DashboredService } from 'src/app/hmg-common/services/dashbored/dashbored.service';
import { SharedDataService } from 'src/app/hmg-common/services/shared-data-service/shared-data.service';
import { DomSanitizer } from '@angular/platform-browser'; import { DomSanitizer } from '@angular/platform-browser';
// import { DomSanitizer } from '@angular/platform-browser';
@Component({ @Component({
@ -17,47 +14,35 @@ import { DomSanitizer } from '@angular/platform-browser';
styleUrls: ['./edit-profile.component.scss'], styleUrls: ['./edit-profile.component.scss'],
}) })
export class EditProfileComponent implements OnInit { export class EditProfileComponent implements OnInit {
User_name_Emp: string = '';
User_Job_name: string;
public direction: string;
private menu: MenuController;
setImage:any;
// imageSrc: any = "../assets/imgs/profile.png";
user_image: any = '../assets/imgs/profile.png';
personalInfo: any; personalInfo: any;
appraisalArr :any =[]; setImage:any;
public performanceData: any=[]; imageSrc: any = '../assets/imgs/profile.png';
public static PERFORMANCE_DATA = 'perAppData'; public direction: string;
// user_image: any = "../assets/imgs/profile.png";
constructor( constructor(
public ts: TranslatorService, public ts: TranslatorService,
public cs: CommonService, public cs: CommonService,
public authService: AuthenticationService, public authService: AuthenticationService,
public DS :DashboredService, private events: Events,
public sharedData: SharedDataService,
public events: Events,
private sanitizer: DomSanitizer, private sanitizer: DomSanitizer,
// private events: Events,
// private sanitizer: DomSanitizer,
)
{ ) {
this.direction = TranslatorService.getCurrentDirection(); this.direction = TranslatorService.getCurrentDirection();
this.events.subscribe('img-change', displayImg => { this.events.subscribe('img-change', displayImg => {
console.log('app compont: '+displayImg); // alert("1 - profile home : "+displayImg);
this.user_image = this.sanitizer.bypassSecurityTrustUrl('data:Image/*;base64,'+displayImg); //this.user_image = "data:image/png;base64"+displayImg;
this.setImage = this.sanitizer.bypassSecurityTrustUrl('data:Image/*;base64,'+displayImg);
this.imageSrc = this.sanitizer.bypassSecurityTrustUrl('data:Image/*;base64,'+displayImg);
}); });
} }
ngOnInit() { ngOnInit() {
this.getProfile(); this.getProfile();
} }
getProfile() { getProfile() {
console.log('getProfile'); console.log('getProfile');
this.authService this.authService
@ -65,60 +50,27 @@ export class EditProfileComponent implements OnInit {
.subscribe((user: AuthenticatedUser) => { .subscribe((user: AuthenticatedUser) => {
if (user) { if (user) {
this.personalInfo = user; this.personalInfo = user;
this.User_name_Emp=this.personalInfo.EMPLOYEE_NAME;
this.User_Job_name=this.personalInfo.JOB_NAME;
if(this.cs.getUpdateImage().status){
this.user_image =this.sanitizer.bypassSecurityTrustUrl('data:image/png;base64,'+this.cs.getUpdateImage().img);
}else{
this.user_image = user.EMPLOYEE_IMAGE
? 'data:image/png;base64,' + user.EMPLOYEE_IMAGE
: '../assets/imgs/profile.png';
}
console.log('name: '+ this.personalInfo.EMPLOYEE_NAME); console.log('name: '+ this.personalInfo.EMPLOYEE_NAME);
console.log('user name: '+ user.EMPLOYEE_NAME); console.log('user name: '+ user.EMPLOYEE_NAME);
console.log('name: '+ this.personalInfo.JOB_NAME);
console.log('job name: '+ user.JOB_NAME);
}});
}
openEditprofile(){ if(this.cs.getUpdateImage().status){
this.cs.openProfile(); // this.imageSrc = this.sanitizer.bypassSecurityTrustUrl("data:Image/*;base64,"+this.cs.getUpdateImage().img);
} this.imageSrc =this.sanitizer.bypassSecurityTrustUrl('data:image/png;base64,'+this.cs.getUpdateImage().img);
}else{
openPerormance(){ this.imageSrc = user.EMPLOYEE_IMAGE
this.showPerformanceAppraisal(); ? 'data:image/png;base64,' + user.EMPLOYEE_IMAGE
: this.imageSrc;
} console.log('2-'+user);
}
showPerformanceAppraisal(){
this.DS.getPerformanceAppraisal(()=>{
this.showPerformanceAppraisal();
}).subscribe((result: PerformanceAppraisalResponse) => {
this.handlePerformanceAppraisalResult(result);
});
}
private handlePerformanceAppraisalResult(result){
if (this.cs.validResponse(result)) {
if (this.cs.hasData(result.GetPerformanceAppraisalList)) {
this.appraisalArr =result.GetPerformanceAppraisalList;
this.performanceData=[];
for(let i=0;i<this.appraisalArr.length;i++){
this.performanceData.push({name:this.appraisalArr[i].APPRAISAL_YEAR,value :parseInt(this.appraisalArr[i].APPRAISAL_SCORE).toFixed()});
} }
console.log('PerformanceAppraisalResponse'); else {
this.sharedData.setSharedData(this.performanceData, PerformanceAppraisalResponse.PERFORMANCE_DATA); console.log('3-'+user);
//localStorage.setItem("performanceData", this.performanceData) }
this.cs.openPerformanceevaluation(); });
}else{ }
let msg: string = this.ts.trPK("userProfile", "no-appraisal");
this.cs.presentAlert(msg);
} public ChangeImage() {
this.cs.openChangeImagePage();
} }
} }
}

@ -1,153 +1,539 @@
<app-generic-header <app-generic-header showBack="true" [headerText]="'userProfile,title' | translate">
showBack="true"
[headerText]="'userProfile, title' | translate">
</app-generic-header> </app-generic-header>
<ion-content class="colorBG"> <ion-content class="colorBG">
<div class="header-div"> <div class="header-background-style-card">
<div class="centerDiv homeBox"> </div>
<div class="centerDiv homeBox"> <div [ngClass]="direction == 'ltr' ? 'result-graph' : 'result-graph-ar'" style="margin-top: -50px;">
<!-- <div class="profileDiv"> --> <div class="user-info">
<img class="profileImg" [src]="imageSrc"> <div class="user-image-container">
</div> <div class="user-image">
<!-- <ion-img class="profileImg" [src]="imageSrc"></ion-img> --> <img [ngClass]="direction == 'ltr'? 'img':'img-ar' "
<!-- <div class="Text">{{personalInfo.EMPLOYEE_NAME}}</div> --> [src]="personalInfo?.EMPLOYEE_IMAGE ? 'data:image/png;base64,'+personalInfo.EMPLOYEE_IMAGE : '../assets/imgs/profile.png'"
<div *ngIf="personalInfo"> alt="Team Member Image" />
<p class="Text">{{personalInfo.EMPLOYEE_NAME}}</p> </div>
<div [ngClass]=" direction == 'ltr' ? 'changeImgBtn' : 'changeImgBtn-ar'">
<button ion-button icon-only menuToggle class="menubutton">
<img class="changeIcon" src="../assets/imgs/edit-image.svg">
</button>
</div>
</div>
<div style="margin-top: 18px;">
<h1>{{User_name_Emp}}</h1>
<span>{{personalInfo?.EMPLOYEE_EMAIL_ADDRESS}}</span>
</div>
<div>
<ion-row>
<ion-col style="border-right: 1px solid rgb(221 221 221);">
<p style="font-size: 12px; color: rgb(128, 124, 124);">{{ts.trPK('userProfile','role')}}</p>
<span class="Boldtext">{{personalInfo?.JOB_NAME}}</span>
</ion-col>
<ion-col>
<p style="font-size: 12px; color: rgb(128, 124, 124);">{{ts.trPK('userProfile','empNo')}}</p>
<span class="Boldtext">{{personalInfo?.EMPLOYEE_NUMBER}}</span>
</ion-col>
</ion-row>
</div> </div>
</div> </div>
<div class="user-actions">
<ion-row class="ion-justify-content-center">
<div [ngClass]=" direction == 'ltr' ? 'changeImgBtn' : 'changeImgBtn-ar'"> <ion-col [size]="4" (click)="selectedSegment('personal')">
<button ion-button icon-only menuToggle class="menubutton" (click)="ChangeImage()"> <div class="action-button col-button">
<!-- <ion-icon (click)="ChangeImage();" class="changeIcon" name="md-create"></ion-icon> --> <img style="width: 50px;" src="../assets/imgs/check_padding.png">
<img (click)="ChangeImage();" class="changeIcon" src="../assets/imgs/edit-image.svg"> <span>{{ts.trPK('general','personal-info')}}</span>
</button> </div>
</ion-col>
<ion-col [size]="4" (click)="selectedSegment('basic')">
<div class="action-button col-button">
<img style="width: 50px;" src="../assets/imgs/check_padding.png">
<span>{{ts.trPK('general','basic-details')}}</span>
</div>
</ion-col>
<ion-col [size]="4" (click)="selectedSegment('address')">
<div class="action-button col-button">
<img style="width: 50px;" src="../assets/imgs/check_padding.png">
<span>{{ts.trPK('userProfile','address')}} </span>
</div>
</ion-col>
</ion-row>
</div> </div>
<ion-grid *ngIf="personalInfo" [ngClass]="direction === 'ltr'? 'grid-card':'grid-card-ar' ">
</div> <!-- end header-div --> <div [ngClass]=" direction == 'ltr' ? 'gridService-en' : 'gridService-ar'"
<div> style="background: #002948; border-radius: 0px 0px 10px 10px;">
<ion-row>
<!-- <ion-card *ngIf="personalInfo"> --> <ion-col>
<label
<!-- <ion-card-header class="boxHdr"> style="font-size: 12px; color: white; margin: 10px 0px 0px 0px; display: block; text-align: center;font-weight: bold;">
<div class="hrTitle">{{personalInfo.EMPLOYEE_NAME}}</div> {{ 'general, appreciate-service' | translate}}
</ion-card-header> --> </label>
<!-- <ion-card-content> --> </ion-col>
<div *ngIf="personalInfo"> </ion-row>
<ion-row [ngClass]=" direction == 'ltr' ? 'service-row-en' : 'service-row-ar'">
<ion-grid> <ion-col [ngClass]=" direction == 'ltr' ? 'columns' : 'columns-ar'">
<div class="profileGrid"> <ion-grid>
<ion-row style="border-bottom: rgb(190, 187, 187) solid 1px;">
<ion-col class="line">
<ion-row> <ion-row>
<label class="lebl"> <ion-col class="text-years">
{{ts.trPK('userProfile','empNo')}}</label></ion-row> <label [ngClass]=" direction == 'ltr' ? 'service' : 'service-ar'">{{personalInfo.SERVICE_YEARS}}
<ion-row > <label {{ts.trPK('userProfile','years')}}</label>
class="rowBolds">{{personalInfo.EMPLOYEE_NUMBER}}</label> </ion-row> <!-- <label [ngClass]=" direction == 'ltr' ? 'services' : 'services-ar'">{{ts.trPK('userProfile','years')}}</label> -->
</ion-col> </ion-col>
<ion-col>
<ion-row> <label class="lebl">{{ts.trPK('userProfile','category')}}</label>
</ion-row> </ion-row>
</ion-grid>
</ion-col>
<ion-col [ngClass]=" direction == 'ltr' ? 'columns' : 'columns-ar'">
<ion-grid>
<ion-row> <ion-row>
<label class="rowBolds">{{personalInfo.EMPLOYMENT_CATEGORY_MEANING}}</label> </ion-row> <ion-col class="text-years">
</ion-col> <label [ngClass]=" direction == 'ltr' ? 'service' : 'service-ar'">{{personalInfo.SERVICE_MONTHS}}
</ion-row> {{ts.trPK('userProfile','months')}}</label>
<!-- <label [ngClass]=" direction == 'ltr' ? 'services' : 'services-ar'">{{ts.trPK('userProfile','months')}}</label> -->
<ion-row style="border-bottom: rgb(190, 187, 187) solid 1px;"> </ion-col>
<ion-col>
<ion-row>
<label class="lebl">{{ts.trPK('userProfile','address')}}</label>
</ion-row> </ion-row>
</ion-grid>
</ion-col>
<ion-col [ngClass]=" direction == 'ltr' ? 'columns' : 'columns-ar'">
<ion-grid>
<ion-row> <ion-row>
<label class="rowBolds"></label> <ion-col class="text-years">
<label [ngClass]=" direction == 'ltr' ? 'service' : 'service-ar'">{{personalInfo.SERVICE_DAYS}}
{{ts.trPK('absenceList','days')}}</label>
<!-- <label [ngClass]=" direction == 'ltr' ? 'services' : 'services-ar'">{{ts.trPK('absenceList','days')}}</label> -->
</ion-col>
</ion-row> </ion-row>
</ion-col> </ion-grid>
</ion-row> </ion-col>
</ion-row>
</div>
</ion-grid>
</div>
<ion-row style="border-bottom: rgb(190, 187, 187) solid 1px;"> <br>
<ion-col>
<ion-row>
<label class="lebl">{{ts.trPK('general','mobile')}}</label>
</ion-row>
<ion-row>
<label class="rowBolds">{{personalInfo.EMPLOYEE_MOBILE_NUMBER}}</label>
</ion-row>
</ion-col>
</ion-row>
<ion-row style="border-bottom: rgb(190, 187, 187) solid 1px;"> <ion-card *ngIf="personalInfoSegment">
<ion-col> <ion-card-content>
<ion-row> <ion-label>
<label class="lebl">{{ts.trPK('userProfile','busG')}}</label> <h1 style="color: black;">{{ts.trPK('userProfile','personal-informaion')}}</h1>
</ion-row> </ion-label>
<ion-row> <label class="rowBolds">{{personalInfo.BUSINESS_GROUP_NAME}}</label> <br>
</ion-row> <ion-label>
</ion-col> <h3>{{ts.trPK('userProfile','category')}}</h3>
</ion-row> </ion-label>
<h3 style="font-weight: bold;">part-time</h3>
<br>
<ion-label>
<h3>{{ts.trPK('userProfile','address')}}</h3>
</ion-label>
<h3 style="font-weight: bold;">DR.Sulaiman Alhabib Medical Group</h3>
<br>
<ion-label>
<h3>{{ts.trPK('userProfile','phone-no')}}</h3>
</ion-label>
<h3 style="font-weight: bold;">0567845661</h3>
<br>
<ion-label>
<h3>{{ts.trPK('userProfile','busG')}}</h3>
</ion-label>
<h3 style="font-weight: bold;">CORP Cloud Solutions</h3>
<br>
<ion-label>
<h3>{{ts.trPK('userProfile','payrol')}}</h3>
</ion-label>
<h3 style="font-weight: bold;">Cloud Solutions Payroll</h3>
<br>
</ion-card-content>
</ion-card>
<ion-card *ngIf="basicDetailsSegment">
<ion-card-content *ngIf="!editBasic">
<ion-grid>
<ion-row>
<ion-col size="10">
<ion-label>
<h1 style="color: black;">{{ts.trPK('general','basic-details')}}</h1>
</ion-label>
</ion-col>
<ion-row style="border-bottom: rgb(190, 187, 187) solid 1px;"> <ion-col size="2">
<ion-col> <img style="width: 70%;border: 1px solid;border-radius: 15px;" src="../assets/imgs/edit_icon.png"
<ion-row> (click)="allowEdit(1)">
<label class="lebl">{{ts.trPK('userProfile','job')}}</label> </ion-col>
</ion-row> </ion-row>
<ion-row> </ion-grid>
<label class="rowBolds">{{personalInfo.JOB_NAME}}</label> <br>
</ion-row> <ion-label>
</ion-col> <h3>{{ts.trPK('general','full-name')}}</h3>
</ion-row> </ion-label>
<h3 style="font-weight: bold;">ENAD HILAL NASSER MOHAMMED</h3>
<br>
<ion-label>
<h3>{{ts.trPK('general','marital-status')}}</h3>
</ion-label>
<h3 style="font-weight: bold;">Married</h3>
<br>
<ion-label>
<h3>{{ts.trPK('general','birth_date')}}</h3>
</ion-label>
<h3 style="font-weight: bold;">01-FEB-1991</h3>
<br>
<ion-label>
<h3>{{ts.trPK('general','civil-identity-number')}}</h3>
</ion-label>
<h3 style="font-weight: bold;">2093486013</h3>
<br>
</ion-card-content>
<ion-row style="border-bottom: rgb(190, 187, 187) solid 1px;"> <ion-card-content *ngIf="editBasic">
<ion-col> <ion-label>
<ion-row> <h1 style="color: black;">{{ts.trPK('general','basic-details')}}</h1>
<label class="lebl">{{ts.trPK('userProfile','payrol')}}</label> </ion-label>
</ion-row>
<ion-row>
<label class="rowBolds">{{personalInfo.PAYROLL_NAME}}</label>
</ion-row>
</ion-col>
</ion-row>
<ion-label>
<h3>{{ts.trPK('general','effective-date')}}</h3>
</ion-label>
<ion-row style="border-bottom: rgb(190, 187, 187) solid 1px;"> <ion-item lines="none" class="item-input-login" style="--background: white">
<ion-col> <ion-label>MMMM</ion-label>
<ion-row> <ion-datetime displayFormat="MMMM" value="2012-12-15T13:47:20.789"></ion-datetime>
<label class="lebl">{{ts.trPK('userProfile','orgEmail')}}</label> </ion-item>
</ion-row> <br>
<ion-row>
<label class="rowBolds">{{personalInfo.EMPLOYEE_EMAIL_ADDRESS}}</label>
</ion-row>
</ion-col>
</ion-row>
<ion-row style="border-bottom: rgb(190, 187, 187) solid 1px;"> <ion-item lines="none" class="item-input-login" style="--background: white">
<ion-col> <ion-label>{{ts.trPK('general','title')}}</ion-label>
<ion-row> <ion-select placeholder="Select One">
<label class="lebl">{{ts.trPK('userProfile','position')}}</label> <ion-select-option value="mr">Mr</ion-select-option>
</ion-row> <ion-select-option value="ms">Miss</ion-select-option>
<ion-row> </ion-select>
<label class="rowBolds">{{personalInfo.POSITION_NAME}}</label> </ion-item>
</ion-row> <br>
</ion-col>
</ion-row>
<ion-item lines="none" class="item-input-login" style="--background: white">
<ion-label position="floating">{{ts.trPK('userProfile','family-name')}}</ion-label>
<ion-input class="login-input" type="text"></ion-input>
</ion-item>
<br>
<ion-row> <ion-item lines="none" class="item-input-login" style="--background: white">
<ion-col> <ion-label position="floating">{{ts.trPK('userProfile','preferred-name')}}</ion-label>
<ion-row> <ion-input class="login-input" type="text"></ion-input>
<label class="lebl">{{ts.trPK('userProfile','grade')}} </label> </ion-item>
</ion-row> <br>
<ion-row>
<label class="rowBolds">{{personalInfo.GRADE_NAME}}</label>
</ion-row>
</ion-col>
</ion-row>
</div> <ion-item lines="none" class="item-input-login" style="--background: white">
<ion-label position="floating">{{ts.trPK('userProfile','previous-family-name')}}</ion-label>
<ion-input class="login-input" type="text"></ion-input>
</ion-item>
<br>
<ion-item lines="none" class="item-input-login" style="--background: white">
<ion-label position="floating">{{ts.trPK('userProfile','father-name')}}</ion-label>
<ion-input class="login-input" type="text"></ion-input>
</ion-item>
<br>
<ion-item lines="none" class="item-input-login" style="--background: white">
<ion-label position="floating">{{ts.trPK('userProfile','grand-father-name')}}</ion-label>
<ion-input class="login-input" required type="text"></ion-input>
</ion-item>
<br>
<ion-item lines="none" class="item-input-login" style="--background: white">
<ion-label position="floating">{{ts.trPK('userProfile','arabic-first-name')}}</ion-label>
<ion-input class="login-input" type="text"></ion-input>
</ion-item>
<ion-item lines="none" class="item-input-login" style="--background: white">
<ion-label position="floating">{{ts.trPK('userProfile','arabic-father-name')}}</ion-label>
<ion-input class="login-input" type="text"></ion-input>
</ion-item>
<ion-item lines="none" class="item-input-login" style="--background: white">
<ion-label position="floating">{{ts.trPK('userProfile','arabic-grand-father-name')}}</ion-label>
<ion-input class="login-input" type="text"></ion-input>
</ion-item>
</ion-card-content>
</ion-card>
<ion-card>
<ion-card-content *ngIf="editBasic">
<ion-label>
<h1 style="color: black;">{{ts.trPK('general','other')}}</h1>
</ion-label>
<ion-item lines="none" class="item-input-login" style="--background: white">
<ion-label>{{ts.trPK('general','gender')}}</ion-label>
<ion-select placeholder="Select One">
<ion-select-option value="m">Male</ion-select-option>
<ion-select-option value="f">Female</ion-select-option>
</ion-select>
</ion-item>
<br>
<ion-item lines="none" class="item-input-login" style="--background: white">
<ion-label>{{ts.trPK('general','marital-status')}}</ion-label>
<ion-select placeholder="Select One">
<ion-select-option value="s">Singal</ion-select-option>
<ion-select-option value="m">Married</ion-select-option>
</ion-select>
</ion-item>
<br>
<ion-item lines="none" class="item-input-login" style="--background: white">
<ion-label>{{ts.trPK('general','nationality')}}</ion-label>
<ion-select placeholder="Select One">
<ion-select-option value="mr">Mr</ion-select-option>
<ion-select-option value="ms">Miss</ion-select-option>
</ion-select>
</ion-item>
<br>
<ion-item lines="none" class="item-input-login" style="--background: white">
<ion-label>{{ts.trPK('general','religion')}}</ion-label>
<ion-select placeholder="Select One">
<ion-select-option value="i">Islam</ion-select-option>
<ion-select-option value="o">Other</ion-select-option>
</ion-select>
</ion-item>
<br>
<ion-item lines="none" class="item-input-login" style="--background: white">
<ion-label>{{ts.trPK('general','education-level')}}</ion-label>
<ion-select placeholder="Select One">
<ion-select-option value="u">University</ion-select-option>
<ion-select-option value="o">other</ion-select-option>
</ion-select>
</ion-item>
<br>
</ion-card-content>
</ion-card>
<ion-card *ngIf="addressSegment">
<ion-card-content *ngIf="!editAddress">
<ion-grid>
<ion-row>
<ion-col size="10">
<ion-label>
<h1 style="color: black;">{{ts.trPK('general','main-address')}}</h1>
</ion-label>
</ion-col>
<ion-col size="2">
<img style="width: 70%;border: 1px solid;border-radius: 15px;" src="../assets/imgs/edit_icon.png"
(click)="allowEdit(2)">
</ion-col>
</ion-row>
</ion-grid> </ion-grid>
<br>
<ion-label>
<h3>{{ts.trPK('general','address')}}</h3>
</ion-label>
<h3 style="font-weight: bold;">Riyadh</h3>
<br>
<ion-label>
<h3>{{ts.trPK('general','street')}}</h3>
</ion-label>
<h3 style="font-weight: bold;">-</h3>
<br>
<ion-label>
<h3>{{ts.trPK('general','area')}}</h3>
</ion-label>
<h3 style="font-weight: bold;">-</h3>
<br>
<ion-label>
<h3>{{ts.trPK('general','p-o-box')}}</h3>
</ion-label>
<h3 style="font-weight: bold;">22617</h3>
<br>
<ion-label>
<h3>{{ts.trPK('general','city')}}</h3>
</ion-label>
<h3 style="font-weight: bold;">Riyadh</h3>
<br>
<ion-label>
<h3>{{ts.trPK('general','postal-code')}}</h3>
</ion-label>
<h3 style="font-weight: bold;">11416</h3>
<br>
</ion-card-content>
<ion-card-content *ngIf="editAddress">
<ion-label>
<h1 style="color: black;">{{ts.trPK('general','address')}}</h1>
</ion-label>
<ion-label>
<h3>{{ts.trPK('general','effective-date')}}</h3>
</ion-label>
<ion-item lines="none" class="item-input-login" style="--background: white">
<ion-label>MMMM</ion-label>
<ion-datetime displayFormat="MMMM" value="2012-12-15T13:47:20.789"></ion-datetime>
</ion-item>
<br>
<ion-item lines="none" class="item-input-login" style="--background: white">
<ion-label>{{ts.trPK('general','nationality')}}</ion-label>
<ion-select placeholder="Select One">
<ion-select-option value="mr">Mr</ion-select-option>
<ion-select-option value="ms">Miss</ion-select-option>
</ion-select>
</ion-item>
<br>
<ion-item lines="none" class="item-input-login" style="--background: white">
<ion-label position="floating">{{ts.trPK('userProfile','address')}}</ion-label>
<ion-input class="login-input" type="text"></ion-input>
</ion-item>
<br>
<ion-item lines="none" class="item-input-login" style="--background: white">
<ion-label position="floating">{{ts.trPK('userProfile','street')}}</ion-label>
<ion-input class="login-input" type="text"></ion-input>
</ion-item>
<br>
<ion-item lines="none" class="item-input-login" style="--background: white">
<ion-label position="floating">{{ts.trPK('userProfile','area')}}</ion-label>
<ion-input class="login-input" type="text"></ion-input>
</ion-item>
<br>
<ion-item lines="none" class="item-input-login" style="--background: white">
<ion-label position="floating">{{ts.trPK('userProfile','p-o-box')}}</ion-label>
<ion-input class="login-input" type="text"></ion-input>
</ion-item>
<br>
<ion-item lines="none" class="item-input-login" style="--background: white">
<ion-label position="floating">{{ts.trPK('userProfile','city')}}</ion-label>
<ion-input class="login-input" type="text"></ion-input>
</ion-item>
<br>
<ion-item lines="none" class="item-input-login" style="--background: white">
<ion-label position="floating">{{ts.trPK('userProfile','postal-code')}}</ion-label>
<ion-input class="login-input" type="text"></ion-input>
</ion-item>
</ion-card-content>
</ion-card>
<!-- <div class="header-div">
<div>
<div class="centerDiv homeBox">
<img class="profileImg" [src]="user_image">
</div>
<div *ngIf="personalInfo">
<p class="empName">{{User_name_Emp}}</p>
<p class="empJob"> {{User_Job_name}}</p>
</div>
</div> </div>
<!-- </ion-card-content> -->
<!-- </ion-card> -->
</div> </div>
<ion-grid *ngIf="personalInfo" style="position: relative; display: block; z-index: 5;">
<div [ngClass]=" direction == 'ltr' ? 'gridService-en' : 'gridService-ar'" style="background: #0B4775; border-radius: 20px;">
<ion-row>
<ion-col>
<label style="font-size: 12px; color: white; margin: 10px 0px 0px 0px; display: block; text-align: center;font-weight: bold;">
{{ 'general, appreciate-service' | translate}}
</label>
</ion-col>
</ion-row>
<ion-row [ngClass]=" direction == 'ltr' ? 'service-row-en' : 'service-row-ar'">
<ion-col [ngClass]=" direction == 'ltr' ? 'columns' : 'columns-ar'">
<ion-grid>
<ion-row style="text-align:center">
<ion-col>
<label [ngClass]=" direction == 'ltr' ? 'service' : 'service-ar'">{{personalInfo.SERVICE_YEARS}}</label>
</ion-col>
</ion-row>
<ion-row>
<ion-col>
<label [ngClass]=" direction == 'ltr' ? 'services' : 'services-ar'">{{ts.trPK('userProfile','years')}}</label>
</ion-col>
</ion-row>
</ion-grid>
</ion-col>
<ion-col>
<div class="verticalLine"></div>
</ion-col>
<ion-col [ngClass]=" direction == 'ltr' ? 'columns' : 'columns-ar'">
<ion-grid>
<ion-row style="text-align:center">
<ion-col>
<label [ngClass]=" direction == 'ltr' ? 'service' : 'service-ar'">{{personalInfo.SERVICE_MONTHS}}</label>
</ion-col>
</ion-row>
<ion-row>
<ion-col>
<label [ngClass]=" direction == 'ltr' ? 'services' : 'services-ar'">{{ts.trPK('userProfile','months')}}</label>
</ion-col>
</ion-row>
</ion-grid>
</ion-col>
<ion-col>
<div class="verticalLine"></div>
</ion-col>
<ion-col [ngClass]=" direction == 'ltr' ? 'columns' : 'columns-ar'">
<ion-grid>
<ion-row style="text-align:center">
<ion-col>
<label [ngClass]=" direction == 'ltr' ? 'service' : 'service-ar'">{{personalInfo.SERVICE_DAYS}}</label>
</ion-col>
<ion-col>
<label [ngClass]=" direction == 'ltr' ? 'services' : 'services-ar'">{{ts.trPK('absenceList','days')}}</label>
</ion-col>
</ion-row>
</ion-grid>
</ion-col>
</ion-row>
</div>
</ion-grid>
<div class="list">
<ion-list class="list-ios">
<div class="p">
<p>{{ts.trPK('userProfile','Years of Services')}}</p>
</div>
<ion-item class="itemline" (click)="openEditprofile()">
<ion-thumbnail slot="start" class="menu-thumb">
<img style= "height: 22px !important;" src="../assets/imgs/profile_icon.png" item-left>
</ion-thumbnail>
<ion-label class="profile">
{{ts.trPK('userProfile','edit-profile')}}
</ion-label>
<ion-icon [ngClass]=" direction == 'ltr' ? 'arrow' : 'arrow-ar'" name="arrow-forward" item-right></ion-icon>
</ion-item>
<ion-item class="itemlins" (click)="openPerormance()">
<ion-thumbnail slot="start" class="menu-thumb">
<ion-icon style= "width: 23px; height: 24px !important;" name="speedometer" item-left></ion-icon>
</ion-thumbnail>
<ion-label class="profile">
{{ts.trPK('userProfile','performance-evaluation')}}
</ion-label>
<ion-icon [ngClass]=" direction == 'ltr' ? 'arrow' : 'arrow-ar'" name="arrow-forward" item-right></ion-icon>
</ion-item>
</ion-list>
</div> -->
<ion-footer *ngIf="editBasic||editAddress">
<ion-grid>
<ion-row>
<ion-col>
<ion-button style="--background: #f44336; background: white; width: 100%;" (click)="disableEdit(1)">Cancel
</ion-button>
</ion-col>
<ion-col>
<ion-button style="--background: #46da59; background: white; width: 100%;" (click)="presentModal()">Update</ion-button>
</ion-col>
</ion-row>
</ion-grid>
</ion-footer>
</ion-content> </ion-content>

File diff suppressed because it is too large Load Diff

@ -1,36 +1,58 @@
import { Component, OnInit } from '@angular/core'; import { Component, OnInit } from '@angular/core';
import { Platform, Events, MenuController, ModalController } from '@ionic/angular';
import { CommonService } from 'src/app/hmg-common/services/common/common.service'; import { CommonService } from 'src/app/hmg-common/services/common/common.service';
import { TranslatorService } from 'src/app/hmg-common/services/translator/translator.service'; import { TranslatorService } from 'src/app/hmg-common/services/translator/translator.service';
import { AuthenticationService } from 'src/app/hmg-common/services/authentication/authentication.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 { AuthenticatedUser } from 'src/app/hmg-common/services/authentication/models/authenticated-user';
import { Events } from '@ionic/angular'; import { PerformanceAppraisalResponse } from 'src/app/hmg-common/services/dashbored/performance-appraisal.response';
import { DashboredService } from 'src/app/hmg-common/services/dashbored/dashbored.service';
import { SharedDataService } from 'src/app/hmg-common/services/shared-data-service/shared-data.service';
import { DomSanitizer } from '@angular/platform-browser'; import { DomSanitizer } from '@angular/platform-browser';
import { EditDetailProfileComponent } from '../modal/edit-detail-profile/edit-detail-profile.component';
@Component({ @Component({
selector: 'app-home', selector: 'app-home',
templateUrl: './home.component.html', templateUrl: './home.component.html',
styleUrls: ['./home.component.scss'] styleUrls: ['./home.component.scss']
}) })
export class HomeComponent implements OnInit { export class HomeComponent implements OnInit {
personalInfo: any;
setImage:any;
imageSrc: any = '../assets/imgs/profile.png'; User_name_Emp: string = '';
User_Job_name: string;
public direction: string; public direction: string;
// user_image: any = "../assets/imgs/profile.png"; private menu: MenuController;
setImage: any;
// imageSrc: any = "../assets/imgs/profile.png";
user_image: any = '../assets/imgs/profile.png';
personalInfo: any;
appraisalArr: any = [];
public performanceData: any = [];
public static PERFORMANCE_DATA = 'perAppData';
public personalInfoSegment = true;
public basicDetailsSegment = false;
public addressSegment = false;
public editBasic = false;
public editAddress = false;
constructor( constructor(
public ts: TranslatorService, public ts: TranslatorService,
public cs: CommonService, public cs: CommonService,
public authService: AuthenticationService, public authService: AuthenticationService,
private events: Events, public DS: DashboredService,
public sharedData: SharedDataService,
public events: Events,
private sanitizer: DomSanitizer, private sanitizer: DomSanitizer,
public modalController: ModalController
// private events: Events,
// private sanitizer: DomSanitizer,
) { ) {
this.direction = TranslatorService.getCurrentDirection(); this.direction = TranslatorService.getCurrentDirection();
this.events.subscribe('img-change', displayImg => { this.events.subscribe('img-change', displayImg => {
// alert("1 - profile home : "+displayImg); console.log('app compont: ' + displayImg);
//this.user_image = "data:image/png;base64"+displayImg; this.user_image = this.sanitizer.bypassSecurityTrustUrl('data:Image/*;base64,' + displayImg);
this.setImage = this.sanitizer.bypassSecurityTrustUrl('data:Image/*;base64,'+displayImg);
this.imageSrc = this.sanitizer.bypassSecurityTrustUrl('data:Image/*;base64,'+displayImg);
}); });
@ -40,6 +62,7 @@ export class HomeComponent implements OnInit {
ngOnInit() { ngOnInit() {
this.getProfile(); this.getProfile();
} }
getProfile() { getProfile() {
console.log('getProfile'); console.log('getProfile');
this.authService this.authService
@ -47,28 +70,122 @@ export class HomeComponent implements OnInit {
.subscribe((user: AuthenticatedUser) => { .subscribe((user: AuthenticatedUser) => {
if (user) { if (user) {
this.personalInfo = user; this.personalInfo = user;
console.log('name: '+ this.personalInfo.EMPLOYEE_NAME); this.User_name_Emp = this.personalInfo.EMPLOYEE_NAME;
console.log('user name: '+ user.EMPLOYEE_NAME); this.User_Job_name = this.personalInfo.JOB_NAME;
if (this.cs.getUpdateImage().status) {
if(this.cs.getUpdateImage().status){ this.user_image = this.sanitizer.bypassSecurityTrustUrl('data:image/png;base64,' + this.cs.getUpdateImage().img);
// this.imageSrc = this.sanitizer.bypassSecurityTrustUrl("data:Image/*;base64,"+this.cs.getUpdateImage().img); } else {
this.imageSrc =this.sanitizer.bypassSecurityTrustUrl('data:image/png;base64,'+this.cs.getUpdateImage().img); this.user_image = user.EMPLOYEE_IMAGE
}else{ ? 'data:image/png;base64,' + user.EMPLOYEE_IMAGE
this.imageSrc = user.EMPLOYEE_IMAGE : '../assets/imgs/profile.png';
? 'data:image/png;base64,' + user.EMPLOYEE_IMAGE }
: this.imageSrc; console.log(user);
console.log('2-'+user); console.log(this.personalInfo);
} console.log('name: ' + this.personalInfo.EMPLOYEE_NAME);
} console.log('user name: ' + user.EMPLOYEE_NAME);
else { console.log('name: ' + this.personalInfo.JOB_NAME);
console.log('3-'+user); console.log('job name: ' + user.JOB_NAME);
} }
}); });
} }
openEditprofile() {
this.cs.openProfile();
}
openPerormance() {
this.showPerformanceAppraisal();
public ChangeImage() { }
this.cs.openChangeImagePage();
showPerformanceAppraisal() {
this.DS.getPerformanceAppraisal(() => {
this.showPerformanceAppraisal();
}).subscribe((result: PerformanceAppraisalResponse) => {
this.handlePerformanceAppraisalResult(result);
});
}
private handlePerformanceAppraisalResult(result) {
if (this.cs.validResponse(result)) {
if (this.cs.hasData(result.GetPerformanceAppraisalList)) {
this.appraisalArr = result.GetPerformanceAppraisalList;
this.performanceData = [];
for (let i = 0; i < this.appraisalArr.length; i++) {
this.performanceData.push({ name: this.appraisalArr[i].APPRAISAL_YEAR, value: parseInt(this.appraisalArr[i].APPRAISAL_SCORE).toFixed() });
}
console.log('PerformanceAppraisalResponse');
this.sharedData.setSharedData(this.performanceData, PerformanceAppraisalResponse.PERFORMANCE_DATA);
//localStorage.setItem("performanceData", this.performanceData)
this.cs.openPerformanceevaluation();
} else {
let msg: string = this.ts.trPK("userProfile", "no-appraisal");
this.cs.presentAlert(msg);
}
}
}
selectedSegment(segmentData){
switch (segmentData){
case "personal":
this.personalInfoSegment = true;
this.basicDetailsSegment = false;
this.addressSegment = false;
this.editBasic = false;
this.editAddress = false;
break;
case "basic":
this.personalInfoSegment = false;
this.basicDetailsSegment = true;
this.addressSegment = false;
this.editBasic = false;
this.editAddress = false;
break;
case "address":
this.personalInfoSegment = false;
this.basicDetailsSegment = false;
this.addressSegment = true;
this.editBasic = false;
this.editAddress = false;
break;
}
}
allowEdit(allowVal){
switch(allowVal){
case 1:
this.editBasic = true;
break;
case 2:
this.editAddress = true;
break;
}
}
disableEdit(disableVal){
switch(disableVal){
case 1:
this.editBasic = false;
break;
case 2:
this.editAddress = false;
break;
}
}
async presentModal() {
const modal = await this.modalController.create({
component: EditDetailProfileComponent,
cssClass: 'my-custom-modal-css'
});
return await modal.present();
} }
} }

@ -0,0 +1,39 @@
<ion-content padding>
<ion-label padding>
<h2 style=" font-weight: bold; color: black; font-size: 20px;">
{{ts.trPK('general','type-of-change')}}</h2>
</ion-label>
<ion-list>
<ion-radio-group value="1">
<ion-item lines="none">
<ion-label >
<h3 style="color: black; font-size: 20px; white-space: break-spaces !important">{{ts.trPK('general','correct-or-complete')}}</h3></ion-label>
<ion-radio slot="start" color="secondary" mode='md' value="1"></ion-radio>
</ion-item>
<ion-item lines="none">
<ion-label>
<h3 style="color: black; font-size: 20px; white-space: break-spaces !important">{{ts.trPK('general','new-info')}}</h3>
</ion-label>
<ion-radio slot="start" color="secondary" mode='md' value="2"></ion-radio>
</ion-item>
</ion-radio-group>
</ion-list>
<ion-footer>
<ion-grid>
<ion-row>
<ion-col>
<ion-button style=" width: 90%; background: white; --background: #b4b4b4">{{ts.trPK('userProfile','cancel-text')}}</ion-button>
</ion-col>
<ion-col>
<ion-button style=" width: 90%; background: white; --background: #269db8">{{ts.trPK('general','next')}}</ion-button>
</ion-col>
</ion-row>
</ion-grid>
</ion-footer>
</ion-content>

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

@ -0,0 +1,30 @@
import { Component, OnInit } from '@angular/core';
import { ModalController } from '@ionic/angular';
import { TranslatorService } from 'src/app/hmg-common/services/translator/translator.service';
@Component({
selector: 'app-edit-detail-profile',
templateUrl: './edit-detail-profile.component.html',
styleUrls: ['./edit-detail-profile.component.scss'],
})
export class EditDetailProfileComponent implements OnInit {
constructor(
public modalController: ModalController,
public ts: TranslatorService,
) { }
colorRadio = "#269db8"
ngOnInit() {}
dismiss() {
// using the injected ModalController this page
// can "dismiss" itself and optionally pass back data
this.modalController.dismiss({
'dismissed': true
});
}
}

@ -15,6 +15,7 @@ import {EditProfileComponent} from './edit-profile/edit-profile.component';
import {ProfileImageComponent} from './profile-image/profile-image.component' import {ProfileImageComponent} from './profile-image/profile-image.component'
import {PerformanceEvaluationComponent} from './performance-evaluation/performance-evaluation.component' import {PerformanceEvaluationComponent} from './performance-evaluation/performance-evaluation.component'
import { from } from 'rxjs'; import { from } from 'rxjs';
import { EditDetailProfileComponent } from './modal/edit-detail-profile/edit-detail-profile.component';
const routes: Routes = [ const routes: Routes = [
{ {
@ -70,9 +71,9 @@ const routes: Routes = [
IonicModule, IonicModule,
HmgCommonModule, HmgCommonModule,
NgxChartsModule, NgxChartsModule,
RouterModule.forChild(routes) RouterModule.forChild(routes)
], ],
declarations: [ProfilePage , HomeComponent,ProfileImageComponent,EditProfileComponent,PerformanceEvaluationComponent] declarations: [ProfilePage ,EditDetailProfileComponent, HomeComponent,ProfileImageComponent,EditProfileComponent,PerformanceEvaluationComponent],
entryComponents:[EditDetailProfileComponent]
}) })
export class ProfilePageModule {} export class ProfilePageModule {}

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

@ -38,8 +38,8 @@
"ar": "هل أنت متأكد من إغلاق الحساب" "ar": "هل أنت متأكد من إغلاق الحساب"
}, },
"forgot-id": { "forgot-id": {
"en": "Forgot Patient ID", "en": "Forgot Employee ID",
"ar": "نسيت رقم الملف" "ar": "نسيت رقم الموظف"
}, },
"forgot-password": { "forgot-password": {
"en": "Forgot Password", "en": "Forgot Password",
@ -62,12 +62,12 @@
"ar": "كشف بالراتب" "ar": "كشف بالراتب"
}, },
"forgot-your-id": { "forgot-your-id": {
"en": "Forgot Your Patient ID", "en": "Forgot Your Employee ID",
"ar": "هل نسيت رقم ملف المريض" "ar": "هل نسيت رقمك الوظيفي"
}, },
"forgot-desc": { "forgot-desc": {
"en": "Enter your mobile number to receive your patient file number via SMS", "en": "Enter your mobile number to receive your ID number via SMS",
"ar": "أدخل رقم جوالك لاستلام رقم الملف الخاص بك عن طريق الرسائل النصية" "ar": "أدخل رقم جوالك لاستلام الرقم الوظيفي الخاص بك عن طريق الرسائل النصية"
}, },
"enter-email": { "enter-email": {
"en": "Please you need to enter your email", "en": "Please you need to enter your email",
@ -98,8 +98,8 @@
"ar": "دخول / تسجيل" "ar": "دخول / تسجيل"
}, },
"id-or-file": { "id-or-file": {
"en": "ID or File No", "en": "Employee ID ",
"ar": "هوية أو رقم الملف" "ar": "الرقم الوظيفي"
}, },
"national-id-or-iqama": { "national-id-or-iqama": {
"en": "National ID or Iqama", "en": "National ID or Iqama",
@ -122,12 +122,12 @@
"ar": "الرجاء التحقق من تسجيل الدخول باستخدام أحد هذه الخيارات" "ar": "الرجاء التحقق من تسجيل الدخول باستخدام أحد هذه الخيارات"
}, },
"verify-with-fingerprint": { "verify-with-fingerprint": {
"en": "Verify with fingerprint", "en": "Verify with fingerprint",
"ar": "تحقق باستخدام بصمة" "ar": "تحقق باستخدام بصمة الإصبع"
}, },
"verify-with-faceid": { "verify-with-faceid": {
"en": "Verify with face ID", "en": "Verify with face ID",
"ar": "تحقق باستخدام معرف الوجه" "ar": "تحقق باستخدام بصمة الوجه"
}, },
"verify-with-sms": { "verify-with-sms": {
"en": "Verify with SMS", "en": "Verify with SMS",
@ -142,12 +142,12 @@
"ar": ":آخر تسجيل دخول" "ar": ":آخر تسجيل دخول"
}, },
"last-login-with": { "last-login-with": {
"en": "Last login using:", "en": "Last login using:",
"ar": "آخر تسجيل دخول مع" "ar": "آخر تسجيل دخول بإستخدام"
}, },
"biometric-support": { "biometric-support": {
"en": "It seems that your phone is supporting biometric feature, do you want login with with biometric?", "en": "It seems that your phone is supporting biometric feature, do you want login with biometric?",
"ar": "يبدو أن هاتفك يدعم ميزة البيومترية ، هل تريد تسجيل الدخول باستخدام البيومترية؟" "ar": "يبدو أن هاتفك يدعم ميزة البصمة ، هل تريد تسجيل الدخول باستخدام البصمة؟"
}, },
"verify-fingerprint": { "verify-fingerprint": {
"en": "To activate fingerprint login service, please verify by using one of the following options. ", "en": "To activate fingerprint login service, please verify by using one of the following options. ",
@ -361,6 +361,10 @@
"en": "Nationality", "en": "Nationality",
"ar": "الجنسية" "ar": "الجنسية"
}, },
"religion":{
"en":"Religion",
"ar":"الديانة"
},
"empty": { "empty": {
"en": "Sorry no data avaiable", "en": "Sorry no data avaiable",
"ar": "لا يوجد بيانات" "ar": "لا يوجد بيانات"
@ -427,7 +431,7 @@
}, },
"other": { "other": {
"en": "Other", "en": "Other",
"ar": "أخري" "ar": "أخرى"
}, },
"provide-missing": { "provide-missing": {
"en": "Please provide required information", "en": "Please provide required information",
@ -666,8 +670,8 @@
"ar": "إستخدم الرقم التعريفي" "ar": "إستخدم الرقم التعريفي"
}, },
"auth-please": { "auth-please": {
"en": "Please Authenticated", "en": "Please Authenticated",
"ar": "عرف نفسك" "ar": "عرف نفسك"
}, },
"dial-code": { "dial-code": {
"en": "Dial Code", "en": "Dial Code",
@ -727,7 +731,7 @@
}, },
"send-email-short": { "send-email-short": {
"en": "Email", "en": "Email",
"ar": "بريد" "ar": "بريد إلكتروني"
}, },
"hi": { "hi": {
"en": "HI", "en": "HI",
@ -742,8 +746,8 @@
"ar": "تمت مزامنة البيانات بنجاح" "ar": "تمت مزامنة البيانات بنجاح"
}, },
"already-synced": { "already-synced": {
"en": "Latest data already synced", "en": "Latest data has already been synced",
"ar": "أحدث البيانات المتزامنة بالفعل" "ar": "تمت مزامنة أحدث البيانات مسبقاً"
}, },
"weekly": { "weekly": {
"en": "Weekly", "en": "Weekly",
@ -774,8 +778,8 @@
"ar": "الخطوات المغطاة" "ar": "الخطوات المغطاة"
}, },
"hours-asleep": { "hours-asleep": {
"en": "Time asleep in hours", "en": "Time asleep in hours",
"ar": "الوقت نائم في ساعات" "ar": "وقت النوم بالساعات"
}, },
"bad": { "bad": {
"en": "Bad", "en": "Bad",
@ -910,8 +914,8 @@
"ar": "فشل التحقق ، يرجى زيارة أقرب مكتب استقبال في الفرع" "ar": "فشل التحقق ، يرجى زيارة أقرب مكتب استقبال في الفرع"
}, },
"forget-wifi-connection-text": { "forget-wifi-connection-text": {
"en": "Invalid Wi-Fi configuration exists with 'HMG-MOHEMM', please forget the Wi-Fi from settings.", "en": "Invalid Wi-Fi configuration exists with 'HMG-MOHEMM', please forget the network from settings.",
"ar": "فشل الاتصال بشبكة 'HMG-MOHEMM' الرجاء اختيار نسيت الاتصال من اعدادت الشبكة" "ar": "الرجاء اختيار نسيان الشبكه من اعدادت الشبكة 'HMG-MOHEMM'فشل الاتصال بشبكة "
}, },
"qr-text": { "qr-text": {
"en": "QR Code", "en": "QR Code",
@ -943,7 +947,7 @@
}, },
"wifi-connect-message": { "wifi-connect-message": {
"en": "Connecting", "en": "Connecting",
"ar": "توصيل" "ar": "جاري الإتصال"
}, },
"success-attendance": { "success-attendance": {
"en": "Your attendance is marked successfully.", "en": "Your attendance is marked successfully.",
@ -956,6 +960,50 @@
"appreciate-service": { "appreciate-service": {
"en": "We appreciate you for completing the service of", "en": "We appreciate you for completing the service of",
"ar": "نحن نقدر لك استكمال خدمة" "ar": "نحن نقدر لك استكمال خدمة"
},
"basic-details":{
"en":"Basic Details",
"ar":"المعلومات الاساسية"
},
"full-name":{
"en":"Full Name",
"ar":"الاسم كامل"
},
"marital-status":{
"en":"Marital Status",
"ar":"الاحالة الاجتماعية"
},
"civil-identity-number":{
"en":"Civil identity number",
"ar":"رقم الهوية المدنية"
},
"effective-date":{
"en":"Effective Date",
"ar":"تاريخ الفعالية "
},
"gender":{
"en":"Gender",
"ar":"النوع"
},
"education-level":{
"en":"Education Level",
"ar":"المستوى التعليمي"
},
"main-address":{
"en":"Main Address",
"ar":"العنوان الرئيسي"
},
"correct-or-complete":{
"en":"correct or complete the current details",
"ar":"تعديل او اكمال التفاصيل الحالية"
},
"new-info":{
"en":"enter new Information because of a real change to the current details (e.g because of a change in marital status)",
"ar":"أدخل معلومات جديدة بسبب تغيير حقيقي في التفاصيل الحالية (على سبيل المثال بسبب تغيير في الحالة الاجتماعية)"
},
"type-of-change":{
"en":" Select the type of change you want to make.",
"ar":" حدد نوع التغيير الذي تريد القيام به."
} }
}, },
"home": { "home": {
@ -988,8 +1036,8 @@
"ar": "طلبات قيد الانتظار" "ar": "طلبات قيد الانتظار"
}, },
"missing-swipes": { "missing-swipes": {
"en": "Missing Swipes", "en": "Missing Swipes",
"ar": "فقدان البصمة" "ar": "تسجيل بصمة حضور سابقة "
}, },
"leave-balance": { "leave-balance": {
"en": "Leave Balance", "en": "Leave Balance",
@ -1054,8 +1102,8 @@
}, },
"work-list": { "work-list": {
"open-analysis": { "open-analysis": {
"en": "Open Request Analysis", "en": "Open Request Analysis",
"ar": "فتح تحليل الطلب" "ar": "تحليل الطلبات المفتوحة"
}, },
"total": { "total": {
"en": "Total", "en": "Total",
@ -1078,8 +1126,8 @@
"ar": "بحث متقدم" "ar": "بحث متقدم"
}, },
"No-data-available": { "No-data-available": {
"en": "No History Available", "en": "No History Available",
"ar": "لا يوجد محفوظات متاحة" "ar": "لايوجد سجل بيانات سابقة "
} }
}, },
"userProfile": { "userProfile": {
@ -1095,6 +1143,54 @@
"en": "Edit Profile", "en": "Edit Profile",
"ar": "تعديل المعلومات" "ar": "تعديل المعلومات"
}, },
"ServiceType": {
"en": "Service Type",
"ar": "نوع الخدمة"
},
"DeptName": {
"en": "Department Name",
"ar": "اسم القسم"
},
"refrence": {
"en": "Tiket Reference",
"ar": "مرجع التذكره"
},
"section": {
"en": "Section",
"ar": " القسم"
},
"topic": {
"en": "Topic",
"ar": "العنوان"
},
"postedDate": {
"en": "Posted on",
"ar": "نشر في"
},
"RelatedSection": {
"en": "Related Section",
"ar": "قسم ذو صله"
},
"RelatedTopic": {
"en": "Related Topic",
"ar": "عنوان ذو صله"
},
"SupportingDocument": {
"en": "Supporting Document",
"ar": "ارفاق ملف"
},
"Description": {
"en": "Description",
"ar": "الوصف"
},
"MyHR-request": {
"en": "MY HR REQUEST",
"ar": "طلباتي"
},
"createHR-Request": {
"en": "CREATE HR REQUEST",
"ar": "انشاء طلب"
},
"performance-evaluation": { "performance-evaluation": {
"en": "Performance Evaluation", "en": "Performance Evaluation",
"ar": "تقييم الاداء" "ar": "تقييم الاداء"
@ -1149,7 +1245,7 @@
}, },
"payrol": { "payrol": {
"en": "Payroll", "en": "Payroll",
"ar": "المشروع" "ar": "سجل الرواتب"
}, },
"orgEmail": { "orgEmail": {
"en": "Organization Email Address", "en": "Organization Email Address",
@ -1194,6 +1290,62 @@
"successChange": { "successChange": {
"en": "Profile Photo changed successfully ", "en": "Profile Photo changed successfully ",
"ar": "تم تغيير الصورة الشخصية بنجاح" "ar": "تم تغيير الصورة الشخصية بنجاح"
},
"personal-informaion":{
"en":"Personal Informaion",
"ar":"المعلومات الشخصية"
},
"family-name":{
"en":"Family Name",
"ar":"اسم العائلة"
},
"preferred-name":{
"en":"Preferred Name",
"ar":"الاسم المفضل"
},
"previous-family-name":{
"en":"Previous Family Name",
"ar":"اسم العائلة السابق"
},
"father-name":{
"en":"Father Name<",
"ar":"اسم الاب"
},
"grand-father-name":{
"en":"GrandFather Name",
"ar":"اسم الجد"
},
"arabic-first-name":{
"en":"Arabic First Name",
"ar":"الاسم الاول بالعربي"
},
"arabic-father-name":{
"en":"Arabic Father Name",
"ar":"اسم الاب بالعربي"
},
"arabic-grand-father-name":{
"en":"Arabic GrandFather Name",
"ar":"اسم الجد بالعربي"
},
"street":{
"en":"Street",
"ar":"شارع"
},
"area":{
"en":"Area",
"ar":"المنطقة"
},
"p-o-box":{
"en":"P.O Box",
"ar":"صندوق البريد"
},
"city":{
"en":"City",
"ar":"المدينة"
},
"postal-code":{
"en":"Postal Code",
"ar":"الرمز البريدي"
} }
}, },
"changePassword": { "changePassword": {
@ -1263,7 +1415,7 @@
"vacation-rule": { "vacation-rule": {
"vacationRule": { "vacationRule": {
"en": "Vacation Rule", "en": "Vacation Rule",
"ar": "الإنابة بالإجازات" "ar": "الإنابة بالإجازات"
}, },
"apply-for-vacation-rule": { "apply-for-vacation-rule": {
"en": "Apply for vacation Rule", "en": "Apply for vacation Rule",
@ -1342,8 +1494,8 @@
"ar": "التالى" "ar": "التالى"
}, },
"notification-type": { "notification-type": {
"en": "Notification Type", "en": "Notification Type",
"ar": "نوع إعلام" "ar": "نوع الإشعار"
}, },
"notification-tip": { "notification-tip": {
"en": "Indicate the <span class=\"boldTxtNav\">notification format </span>that will activate this rule", "en": "Indicate the <span class=\"boldTxtNav\">notification format </span>that will activate this rule",
@ -1439,7 +1591,7 @@
}, },
"confirmation": { "confirmation": {
"en": "Confirmation", "en": "Confirmation",
"ar": "البريد الإلكتروني" "ar": "تأكيد"
}, },
"rule-success": { "rule-success": {
"en": "Rule created successfully", "en": "Rule created successfully",
@ -1455,11 +1607,11 @@
}, },
"confirm-msg-success": { "confirm-msg-success": {
"en": "Are you sure, you want to Apply for Vacation Rule?", "en": "Are you sure, you want to Apply for Vacation Rule?",
"ar": " تريد التقديم على قواعد الاجازات ؟, هل انت متأكد" "ar": " هل أنت متأكد من رغبتك في التقديم على قواعد الإجازات ؟"
}, },
"update-msg-success": { "update-msg-success": {
"en": "Are you sure, you want to Update this Vacation Rule?", "en": "Are you sure, you want to Update this Vacation Rule?",
"ar": "تريد تحديث قواعد الاجازات ؟, هل انت متأكد" "ar": "هل أنت متأكد من رغبتك في تحديث قاعدة الإجازات هذه ؟"
} }
}, },
"absenceList": { "absenceList": {
@ -2342,23 +2494,23 @@
"ar": "رمز" "ar": "رمز"
}, },
"itemReq": { "itemReq": {
"en": "Items Requsted", "en": "Requsted Items",
"ar": "العناصر المطلوبة" "ar": "العناصر المطلوبة"
}, },
"approveMsg": { "approveMsg": {
"en": "<p class=\"boldP\"> Are you sure to <span class=\"boldText\"> Approve </span>this request ?</p>", "en": "Requsted Items",
"ar": "العناصر المطلوبة" "ar": "العناصر المطلوبة"
}, },
"rejectMsg": { "rejectMsg": {
"en": "<p class=\"boldP\">Are you sure to <span class=\"boldText\"> Reject </span> this request ?</p>", "en": "Requsted Items",
"ar": "العناصر المطلوبة" "ar": "العناصر المطلوبة"
}, },
"delMsg": { "delMsg": {
"en": "<p class=\"boldP\">Are you sure to <span class=\"boldText\"> Delete </span> this request ?</p>", "en": "Requsted Items",
"ar": "العناصر المطلوبة" "ar": "العناصر المطلوبة"
}, },
"closeMsg": { "closeMsg": {
"en": "<p class=\"boldP\">Are you sure to <span class=\"boldText\"> Close </span>this request ?</p>", "en": "Requsted Items",
"ar": "العناصر المطلوبة" "ar": "العناصر المطلوبة"
}, },
"Supplier": { "Supplier": {
@ -2921,7 +3073,7 @@
}, },
"shift-time": { "shift-time": {
"en": "Shift Time", "en": "Shift Time",
"ar": "وقت التناوب" "ar": "وقت المناوبة "
}, },
"shift-type": { "shift-type": {
"en": "Shift Type", "en": "Shift Type",

Loading…
Cancel
Save