Merge branch 'enad-Q1' of https://gitlab.com/haroon6138/mohemmionic5 into enad-Q1

# Conflicts:
#	Mohem/src/app/mowadhafi/my-request/my-request.component.ts
MOHEMM-SFH-COLORS
enadhilal 5 years ago
commit 5561ca7e97

@ -22,50 +22,68 @@
<!-- colorBG -->
<div class="contentEit" style="background: #f3f1f1;">
<div class="header-div">
<!-- <ion-buttons slot="end">
<button class="headerBtn" (click)="AccrualBalances()">
<img class="headerImg" src="../assets/imgs/accubalance.png">
</button>
</ion-buttons> -->
<!-- <ion-buttons slot="start">
<ion-back-button color="light" class="btnBack" defaultHref="/home"></ion-back-button>
</ion-buttons>
<p class="Title">{{ts.trPK('absenceList','absenceList')}}</p> -->
</div>
<div class="">
<div >
<div>
<ion-grid class="headerGrid">
<div >
<ion-datetime [(ngModel)]="Sdate" class="datetime" displayFormat="DD MMMM YYYY"
placeholder="DD MMMM YYYY" cancelText="{{ts.trPK('general','cancel')}}"
doneText="{{ts.trPK('general','done')}}" (ionChange)="getAccrualBalance()"></ion-datetime>
<ion-icon class="iconCalendar" ios="ios-calendar" md="md-calendar"></ion-icon>
</div>
<div style="position: relative;">
<!-- <div [ngClass]=" direction == 'ltr' ? 'subTitle' : 'subTitle-ar'" >{{ts.trPK('absenceList','AccrualUsed')}} </div> -->
<div class="label-container">
<ion-row [ngClass]=" direction == 'ltr' ? 'green-label-container' : 'green-label-container-ar'" >
<label class="current-label"> </label>
<span [ngClass]=" direction == 'ltr' ? 'span-one' : 'span-one-ar'" >{{ts.trPK('absenceList','currentBalance')}}</span>
<span class="span-two">{{accrualNet}}</span>
</ion-row>
<!-- <div [ngClass]=" direction == 'ltr' ? 'yearLabel' : 'yearLabel-ar'">2021</div> -->
</div>
<!-- <div class="label-container">
<ion-row [ngClass]=" direction == 'ltr' ? 'black-label-container' : 'black-label-container-ar'" >
<label class="current-label-container"> </label>
<span [ngClass]=" direction == 'ltr' ? 'black-span1' : 'black-span1-ar'" >{{ts.trPK('absenceList','currentBalance')}}</span>
<span class="black-span2">{{accrualNet}}</span>
</ion-row>
<div [ngClass]=" direction == 'ltr' ? 'yearLabel' : 'yearLabel-ar'" > {{ts.trPK('absenceList','PreviousYears')}}</div>
</div> -->
<div class="label-container">
<ion-row [ngClass]=" direction == 'ltr' ? 'black-label-container' : 'black-label-container-ar'" >
<label class="used-label-container"> </label>
<span [ngClass]=" direction == 'ltr' ? 'red-span1' : 'red-span1-ar'" >{{ts.trPK('absenceList','usedBalance')}}</span>
<span class="red-span2">{{accrualUsed}}</span>
</ion-row>
</div>
<div class="graph-container">
<p-chart [ngClass]=" direction == 'ltr' ? 'today-graph' : 'today-graph-ar'" type="doughnut" [data]="data" [options]="options" ></p-chart>
</div>
</div>
</ion-grid>
<ion-grid class="headerGrid">
<!-- <ion-grid class="headerGrid">
<div style="color: black;">
<div class="result-graph">
<div >
<!-- <ion-item> -->
<!-- <ion-label class="datelabel">{{request.P_EFFECTIVE_DATE}}</ion-label> -->
<ion-datetime [(ngModel)]="Sdate" class="datetime" displayFormat="DD MMMM YYYY"
placeholder="DD MMMM YYYY" cancelText="{{ts.trPK('general','cancel')}}"
doneText="{{ts.trPK('general','done')}}" (ionChange)="getAccrualBalance()"></ion-datetime>
<!-- <ion-datetime [(ngModel)]="Sdate" class="datetime" displayFormat="DD MMMM YYYY"
placeholder="DD MMMM YYYY" (ionChange)="getAccrualBalance()"></ion-datetime> -->
<ion-icon class="iconCalendar" ios="ios-calendar" md="md-calendar"></ion-icon>
<!-- </ion-item> -->
</div>
<div style=" border-bottom: 1px solid #a7a4a4; margin-bottom: 12px;
margin-top: -10px; margin-right: -9px;"></div>
<div class="result-text-container">
<!-- <h2>{{totalnumber}}</h2> -->
<!-- <h2>{{accrualNet + accrualUsed + accrualYearly}}</h2> -->
<!-- <span>{{ts.trPK('absenceList','totalNumber')}}</span> -->
</div>
@ -94,38 +112,10 @@
</ion-row>
</ion-col>
</div>
<!-- <div [ngClass]=" direction == 'ltr' ? 'div-orng' : 'div-orng-ar'">
<ion-col>
<ion-row>
<label class="orng-label">{{ts.trPK('absenceList','annualBalance')}}</label>
</ion-row>
<ion-row>
<label class="orng-amount" for="">{{accrualYearly}}</label>
</ion-row>
</ion-col>
</div> -->
<!-- <div style="position: relative;
left: 59%;
bottom: 73px;
color: black;
background-color: #269DB8;
width: 16%;
height: 6px;">
<ion-col>
<ion-row>
<label class="blue-label">text</label>
</ion-row>
<ion-row> -->
<!-- <label class="blue-amount" for="">{{getleaveAccrualBalance.ACCRUAL_YEARLY_ENTITLEMENT}}</label> -->
<!-- </ion-row>
</ion-col>
</div> -->
</div>
</ion-grid>
</div>
</ion-grid> -->
</div>

@ -56,13 +56,9 @@
.header-div {
background-color: #269DB8;
text-transform: capitalize;
height: 160px;
/* position: relative; */
/* display: block; */
margin-bottom: -28px;
height: 100px;
}
.header-toolbar-new{
@ -107,7 +103,7 @@
// margin-left: 111px;
text-align: center;
font-family: WorkSans-Bold;
margin-left: 47px;
margin-left: -142px;
margin-top: -19px;
}
@ -119,52 +115,40 @@
.iconCalendar{
// margin-left: -241px;
// margin-top: 5px;
margin-left: 30px !important;
margin-left: -12px !important;
width: 22% !important;
height: 26px !important;
margin-top: -69px !important;
margin-bottom: 20px !important;
margin-top: -50px !important;
margin-bottom: 23px !important;
}
.today-graph{
// display:block !important;
// height: 150px !important;
// width: 300 !important;
// margin-left: -70px !important;
display: block !important;
height: 196px;
width: 385px;
padding-left: 51px;
// padding-top: 29px;
margin-left: -70px !important;
}
.today-graph-ar{
// display: block !important;
// height: 196px;
// width: 385px;
// padding-left: 51px;
/* margin-left: -70px !important; */
// font-size: 14px;
// margin-left: -48px;
// margin-right: 63px;
// margin-bottom: -30px;
display: block !important;
height: 175px;
width: 320px;
padding-left: 51px;
font-size: 14px;
margin-right: 75px;
margin-bottom: -30px;
}
// .today-graph{
// display: block !important;
// height: 196px;
// width: 385px;
// padding-left: 51px;
// // padding-top: 29px;
// margin-left: -70px !important;
// }
// .today-graph-ar{
// display: block !important;
// height: 175px;
// width: 320px;
// padding-left: 51px;
// font-size: 14px;
// margin-right: 75px;
// margin-bottom: -30px;
// }
.headerGrid{
background-color: white !important;
border: 1px solid #cac8c8 !important;
border-radius: 20px !important;
padding-top: 28px;
padding-bottom: 14px;
padding-bottom: 26px;
margin-left: 13px;
margin-right: 13px;
margin-top: -136px;
margin-top: -93px;
margin-bottom: 10px;
}
@ -310,3 +294,214 @@ margin-top: -13px;
height: 6px;
right: 16px;
}
.subTitle{
margin-top: -10px;
margin-left: 10px;
font-family: WorkSans-Bold;
font-size: 16px;
}
.subTitle-ar{
margin-top: -10px;
margin-right: 10px;
font-family: WorkSans-Bold;
font-size: 16px;
}
.today-graph {
max-height: 4cm;
display: block;
height: 124px;
width: 249px;
margin-left: -39px;
}
.today-graph-ar {
max-height: 4cm;
display: block;
height: 132px;
width: 264px;
margin-right: 105px;
}
.graph-container{
margin-left: 160px;
position: relative;
margin-top: -98px;
}
// .label-container{
// position: absolute;
// // width: 20%;
// // right: 30px;
// top: 50%;
// margin-top: -27px;
// left: 20px;
// }
.green-label-container{
margin-top: 20px; margin-left: 12px;
}
.green-label-container-ar{
margin-top: 20px; margin-right: 12px;
}
.black-label-container{
margin-left: 12px;
}
.black-label-container-ar{
margin-right: 12px;
}
.used-label-container{
// border-top: 5px solid #292F42;
// padding: 1px 0px;
// margin: 15px 0px
width: 12px;
height: 12px;
padding-right: -10px;
border-radius: 100%;
background-color: #b60c0c;
margin-top: 30px;
}
.current-label-container{
width: 12px;
height: 12px;
padding-right: -10px;
border-radius: 100%;
background-color: black;
margin-top: 21px;
}
.current-label{
width: 12px;
height: 12px;
padding-right: -10px;
border-radius: 100%;
background-color: #269DB8;
// margin-top: 30px;
}
.span-one{
// display: block;
// font-size: 12px;
// color: black;
display: block;
font-size: 12px;
color: #269DB8;
margin-left: 6px;
margin-top: -2px;
font-weight: bold;
}
.span-one-ar{
display: block;
font-size: 12px;
color: #269DB8;
margin-right: 6px;
margin-top: -2px;
font-weight: bold;
}
.span-two{
// display: block;
// font-size: 22px;
display: block;
font-size: 12px;
color: #269DB8;
margin-left: 6px;
margin-top: -2px;
font-weight: bold;
font-family: WorkSans-Bold;
}
.black-span1{
// display: block;
// font-size: 12px;
// color: black;
display: block;
font-size: 12px;
color: black;
margin-left: 6px;
margin-top: 20px;
font-weight: bold;
}
.black-span1-ar{
// display: block;
// font-size: 12px;
// color: black;
display: block;
font-size: 12px;
color: black;
margin-right: 6px;
margin-top: 20px;
font-weight: bold;
}
.black-span2{
// display: block;
// font-size: 22px;
display: block;
font-size: 12px;
color: black;
margin-left: 6px;
margin-top: 20px;
font-weight: bold;
font-family: WorkSans-Bold;
}
.red-span1{
// display: block;
// font-size: 12px;
// color: black;
display: block;
font-size: 12px;
color: #b60c0c;
margin-left: 6px;
margin-top: 28px;
font-weight: bold;
}
.red-span1-ar{
// display: block;
// font-size: 12px;
// color: black;
display: block;
font-size: 12px;
color: #b60c0c;
margin-right: 6px;
margin-top: 28px;
font-weight: bold;
}
.red-span2{
// display: block;
// font-size: 22px;
display: block;
font-size: 12px;
color: #b60c0c;
margin-left: 6px;
margin-top: 28px;
font-weight: bold;
font-family: WorkSans-Bold;
}
.yearLabel{
font-size: 13px;
color: gray;
font-family: WorkSans-Bold;
margin-left: 29px;
margin-top: 5px;
}
.yearLabel-ar{
font-size: 13px;
color: gray;
font-family: WorkSans-Bold;
margin-right: 29px;
margin-top: 5px;
}

@ -66,6 +66,7 @@ export class HomeComponent implements OnInit {
this.Sdate = new Date().toISOString();
this.getUserDetails();
this.getAccrualBalance();
}
private getUserDetails(){
this.authService.loadAuthenticatedUser().subscribe((user: AuthenticatedUser) => {
@ -113,9 +114,11 @@ export class HomeComponent implements OnInit {
{
data: [this.accrualNet,this.accrualUsed],
backgroundColor: [
'#1FA269',
'#CB3232',],
borderWidth: 2
// '#1FA269',
// '#CB3232',],
'#269DB8',
'#b60c0c',],
borderWidth: 1
}
]
};
@ -270,9 +273,9 @@ createAbsence() {
// { data: [this.accrualNet,this.accrualYearly,this.accrualUsed],
{ data: [this.accrualNet,this.accrualUsed],
backgroundColor: [
'#1FA269',
'#CB3232',],
borderWidth: 2
'#269DB8',
'#b60c0c',],
borderWidth: 1
}
]
};

@ -50,7 +50,7 @@
<img style= "height: 14px !important;" src="../assets/imgs/my_team_icon.png" item-left>
</ion-thumbnail>
<ion-label class="profile">
HR REQUEST
{{ts.trPK('userProfile','HR-Request')}}
</ion-label>
</ion-item>

@ -137,11 +137,41 @@ export class AppComponent implements OnInit {
this.authService.checkAds({
EmployeeNumber: '',
ItgEnableAt: "Before Service Initiation",
ItgEnableAt: "Before Service Initiation", //After Service Submission
ItgServiceName: "Ticket"
}, () => { }, this.ts.trPK('general', 'ok')).subscribe(res => {
console.log("Check Ads")
console.log(res);
var result = JSON.parse(res.Mohemm_ITG_ResponseItem).result.data;
this.cs.sharedService.setSharedData(
result,
AuthenticationService.SERVEY_DATA
)
if (!CommonService.SKIP && result) {
if (result.notificationType == 'Survey') {
this.cs.navigateForward('/erm-channel/survey');
} else {
this.authService.adsDetails({
"ItgNotificationMasterId": result['notificationMasterId']
},
() => { }, this.ts.trPK('general', 'ok')
).subscribe((result) => {
var data = result.Mohemm_ITG_ResponseItem;
if (data) {
this.cs.sharedService.setSharedData(
JSON.parse(data),
AuthenticationService.ADS_DATA
);
this.cs.navigateForward('/erm-channel/home');
}
})
}
}
});
if (this.cs.getUpdateImage().status) {
@ -151,8 +181,8 @@ export class AppComponent implements OnInit {
}
this.User_Job_name = user.JOB_NAME;
//erm channel
if (!CommonService.SKIP)
this.cs.navigateForward('/erm-channel/survey');
// if (!CommonService.SKIP)
// this.cs.navigateForward('/erm-channel/survey');
} else {
console.log(user);
}
@ -200,8 +230,8 @@ export class AppComponent implements OnInit {
}
public openMyRequestPage() {
this.cs.openMyRequestPage();
this.menu.toggle();
this.cs.openMyRequestPage();
}
public profile() {

@ -206,6 +206,7 @@ export class SmsPageComponent implements OnInit {
if (this.platform.is('cordova')) {
this.insertMobileLogin();
}
this.common.sharedService.setSharedData(result.MemberInformationList[0].PAYROLL_CODE, "projcet-code");
this.activeType =this.common.setActiveTypeLogin(0);
this.common.openHome();
});

@ -1,13 +1,19 @@
<div class="full-ads" style="background-image: url(https://i.pinimg.com/564x/a8/b4/42/a8b442181f7c004f98d4eef842a76e76.jpg);">
<div class="full-ads" >
<div class="skip-btn" (click)="skip()" *ngIf="isSkip ==true">{{ts.trPK('worklistMain','skip')}}</div>
<div class="seconds" *ngIf="isSkip ==false">{{setTime}}</div>
<img [src]="advertisement.base64String" *ngIf="advertisement.contentType =='image/jpeg'"/>
<iframe *ngIf="advertisement.contentType =='video/mp4'" [src]="sanitizer.bypassSecurityTrustResourceUrl(advertisement.fileName)" allow="autoplay;" frameborder="0"
allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
<!-- <div class="skip-btn" (click)="skip()" *ngIf="isSkip ==true">{{ts.trPK('worklistMain','skip')}}</div> -->
<div class="info-container">
<ion-icon name="thumbs-down" class="red"></ion-icon>
<ion-icon name="information" class="white"></ion-icon>
<ion-icon name="thumbs-up" class="green"></ion-icon>
<div class="seconds" *ngIf="isSkip ==false">{{setTime}}</div>
<div *ngIf="setTime ==0">
<ion-icon name="thumbs-down" class="red" (click)="setView('Dislike')"></ion-icon>
<ion-icon name="information" class="white" (click)="setView('Info')"></ion-icon>
<ion-icon name="thumbs-up" class="green" (click)="setView('Like')"></ion-icon>
</div>
</div>
</div>

@ -41,4 +41,8 @@
background: #fff;
color: #000;
}
.seconds{
font-size: 28px;
font-weight: bold;
}

@ -1,6 +1,9 @@
import { Component, OnInit } from '@angular/core';
import { NavController } from '@ionic/angular';
import { AuthenticationService } from 'src/app/hmg-common/services/authentication/authentication.service';
import { CommonService } from 'src/app/hmg-common/services/common/common.service';
import { DomSanitizer } from '@angular/platform-browser';
import { TranslatorService } from 'src/app/hmg-common/services/translator/translator.service';
@Component({
selector: 'app-home',
@ -10,9 +13,19 @@ import { CommonService } from 'src/app/hmg-common/services/common/common.service
export class HomeComponent implements OnInit {
isSkip: boolean = false;
setTime: number = 5;
constructor(public nav: NavController,) { }
advertisement: any;
data: any;
constructor(public nav: NavController, public cs: CommonService, public sanitizer: DomSanitizer, public authService: AuthenticationService, public ts: TranslatorService) { }
ngOnInit() { }
ngOnInit() {
this.data = this.cs.sharedService.getSharedData(
AuthenticationService.ADS_DATA,
false
);
this.advertisement = this.data.result.data.advertisement.viewAttachFileColl[0];
this.setTime = this.data.result.data.advertisement.durationInSeconds;
this.setTimer();
}
skip() {
this.nav.pop();
CommonService.SKIP = true;
@ -27,4 +40,29 @@ export class HomeComponent implements OnInit {
}
}, 1000);
}
setView(status) {
// var request =
// {
// "ItgSurveyId": data.serviceId, "ItgNotificationMasterId": data.notificationMasterId, "ItgComments": this.note, "ItgQuestionResponses": [
// { "questionId": 1, "optionId": null, "starRating": parseInt(this.rate) },
// { "questionId": 2, "optionId": 4, "starRating": parseInt(this.satisfied) }
// ]
// };
this.authService.setViewAds({
"ItgNotificationMasterId": this.data.result.data.notificationMasterId,
"ItgAdvertisement": {
"advertisementId": this.data.result.data.advertisementId,
"acknowledgment": status
}
}, (
) => { }, this.ts.trPK('general', 'ok')).subscribe((result) => {
CommonService.SKIP = true;
this.cs.openHome();
})
}
}

@ -1,6 +1,6 @@
<ion-content padding class="survey-content">
<div class="skip-btn" (click)="skip()" *ngIf="isSkip ==true">{{ts.trPK('worklistMain','skip')}} </div>
<div class="seconds" *ngIf="isSkip ==false">{{setTime}}</div>
<!-- <div class="skip-btn" (click)="skip()" *ngIf="isSkip ==true">{{ts.trPK('worklistMain','skip')}} </div>
<div class="seconds" *ngIf="isSkip ==false">{{setTime}}</div> -->
<ion-grid class="ion-no-padding grid-parent">
<ion-row>
<ion-text class="title-text">
@ -57,7 +57,7 @@
<ion-col [size]="12">
<ion-textarea rows="6" cols="20" [(ngModel)]="Note" [placeholder]="ts.trPK('replacementRoll','enterNote')"></ion-textarea>
<ion-textarea rows="6" cols="20" [(ngModel)]="note" [placeholder]="ts.trPK('replacementRoll','enterNote')"></ion-textarea>
</ion-col>
</ion-row>
</ion-card>
@ -65,7 +65,7 @@
</ion-content>
<ion-footer >
<div class="centerDiv">
<ion-button class="footer-button" ion-button (click)="submit()" [disabled]="!rate || (rate==1 && !Note)">
<ion-button class="footer-button" ion-button (click)="saveSurvey()" [disabled]="!rate || (rate==1 && !note)">
{{'general,submit' | translate}} </ion-button>
</div>

@ -14,7 +14,7 @@ export class SurveyComponent implements OnInit {
isSkip: boolean = false;
setTime: number = 5;
satisfied: any = '5';
note: any;
constructor(public ts: TranslatorService, public cs: CommonService, public nav: NavController, public authService: AuthenticationService) { }
ngOnInit() {
@ -34,11 +34,26 @@ export class SurveyComponent implements OnInit {
}
}, 1000);
}
saveSruvey() {
saveSurvey() {
var request = {}
this.authService.saveAdsStatus(request, () => { }, this.ts.trPK('general', 'ok')).subscribe((result) => {
var data = this.cs.sharedService.getSharedData(
AuthenticationService.SERVEY_DATA,
false
)
var request =
{
"ItgSurveyId": data.serviceId, "ItgNotificationMasterId": data.notificationMasterId, "ItgComments": this.note, "ItgQuestionResponses": [
{ "questionId": 1, "optionId": null, "starRating": parseInt(this.rate) },
{ "questionId": 2, "optionId": 4, "starRating": parseInt(this.satisfied) }
]
};
this.authService.saveAdsStatus(request, () => { }, this.ts.trPK('general', 'ok')).subscribe((result) => {
CommonService.SKIP = true;
this.cs.openHome();
})
}
select(rating) {

@ -79,7 +79,7 @@ export class AuthenticationService {
public static getITGPageNotification = 'Services/COCWS.svc/REST/Mohemm_ITG_GetPageNotification';
public static getITGPageNotificationDetails = 'Services/COCWS.svc/REST/Mohemm_ITG_GetPageNotificationDetails';
public static saveSurveyAds = 'Services/COCWS.svc/REST/Mohemm_ITG_Survey_Response';
public static setViewAdvertisement = 'Services/COCWS.svc/REST/Mohemm_ITG_UpdateAdvertisementAsViewed';
public static LOGIN_EVENT = 'user-login-event';
@ -89,8 +89,8 @@ export class AuthenticationService {
public static DEVICE_TOKEN = "device_token";
public static LAST_LOGIN = 'last-login';
public static IMEI_USER_DATA = "imei-user-data";
public static SERVEY_DATA = "survey-data";
public static ADS_DATA = "ads-data";
// private static user: AuthenticatedUser;
constructor(
public con: ConnectorService,
@ -756,6 +756,13 @@ export class AuthenticationService {
return this.con.post(AuthenticationService.saveSurveyAds, request, onError, errorLabel);
}
setViewAds(request, onError, errorLabel) {
request = this.authenticateRequest(request);
request.EmployeeNumber = request.UserName;
return this.con.post(AuthenticationService.setViewAdvertisement, request, onError, errorLabel);
}
//**************************//

@ -1124,6 +1124,9 @@ export class CommonService {
public openHRRequestPage() {
this.nav.navigateForward(['/mowadhafi/hr-request']);
}
public openHRRequestFormPage() {
this.nav.navigateForward(['/mowadhafi/hr-request-form']);
}
public openRequestDetailsPage() {
this.nav.navigateForward(['/mowadhafi/request-details']);
}

@ -33,9 +33,9 @@ export class NavButtonsComponent implements OnInit {
this.isIOS = this.platform.is('ios');
this.direction = TranslatorService.getCurrentDirection();
this.platform.backButton.subscribeWithPriority(0 , () => {
this.backButtonClicked({});
});
// this.platform.backButton.subscribeWithPriority(0 , () => {
// this.backButtonClicked({});
// });
});
}

@ -638,7 +638,7 @@ export class HomePage implements OnInit {
}
openNotificationsDashbored() {
this.DS.getOpenNotifications('', '', this.isPostNoLoad).subscribe((result: GetOpenNotificationsResponse) => {
this.DS.getOpenNotifications('', '', false).subscribe((result: GetOpenNotificationsResponse) => {
if (this.common.validResponse(result)) {
const key = 'P_OPEN_NTF_NUMBER';
this.countAllNotification = result[key];
@ -788,7 +788,7 @@ export class HomePage implements OnInit {
offersDiscount() {
this.common.navigateForward('/offersdiscount/home');
}
openAnnouncement(){
openAnnouncement() {
this.common.openAnnouncement();
}
}

@ -1,12 +1,18 @@
<ion-content>
<div class="head-title">
<ion-toolbar class="header-toolbar">
<!-- <ion-toolbar class="header-toolbar">
<ion-buttons slot="start">
<ion-back-button color="light" class="btnBack" defaultHref="/home"></ion-back-button>
</ion-buttons>
<ion-title color="light" >{{ts.trPK('itemforsale','title')}}</ion-title>
</ion-toolbar>
</ion-toolbar> -->
<app-generic-header
showImage="false"
showBack="true"
[headerText]="'itemforsale,title' | translate">
</app-generic-header>
</div>
<div class="header"></div>
<div class="bottom"></div>

@ -1,6 +1,6 @@
.md-stepper-horizontal {
width: 90%;
width: 95%;
margin: 0 auto;
background-color: #FFFFFF;
box-shadow: 0 3px 8px -6px #DDDDDD;

@ -1,11 +1,11 @@
<ion-content>
<div class="head-title">
<ion-toolbar class="header-toolbar">
<ion-buttons slot="start">
<ion-back-button color="light" class="btnBack" defaultHref="/home"></ion-back-button>
</ion-buttons>
<ion-title color="light" >{{ts.trPK('itemforsale','title')}}</ion-title>
</ion-toolbar>
<app-generic-header
showImage="false"
showBack="true"
[headerText]="'itemforsale,title' | translate">
</app-generic-header>
</div>
<div class="header"></div>
<div class="bottom"></div>

@ -1,11 +1,10 @@
<ion-content>
<div class="head-title">
<ion-toolbar class="header-toolbar">
<ion-buttons slot="start">
<ion-back-button color="light" class="btnBack" defaultHref="/home"></ion-back-button>
</ion-buttons>
<ion-title color="light" >{{ts.trPK('itemforsale','title')}}</ion-title>
</ion-toolbar>
<app-generic-header
showImage="false"
showBack="true"
[headerText]="'itemforsale,title' | translate">
</app-generic-header>
</div>
<div class="segments-container">
<ion-segment (ionChange)="segmentChanged($event)" value="1" class="item-for-sale-indicator">

@ -132,4 +132,7 @@ ion-footer .footer-button{
}
ion-segment{
height:40px
}
ion-card{
margin:5px;
}

@ -0,0 +1,152 @@
<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','createHR-Request')}}</ion-title>
</ion-toolbar>
</ion-header>
<ion-content>
<!-- <form [formGroup] = "form" (ngSubmit) = "submitRequest(form.value)"> -->
<div >
<ion-card class="result-serviceType">
<ion-card-content>
<div class="request-heading">
<span>{{ts.trPK('userProfile','ServiceType')}}</span>
</div>
<div>
<ion-row class="custom-radio">
<ion-radio-group [(ngModel)]="SelectedServiceType" class="radio-list">
<ion-radio value="HR Services" [color]="myColor">{{HR}}</ion-radio>
<ion-label class="text-label" >{{HR}}</ion-label>
<ion-radio value="Complaints" [color]="myColor" >{{complaints}}</ion-radio>
<ion-label class="text-label">{{complaints}}</ion-label>
<ion-radio value="Inquiry" [color]="myColor" >{{inquiry}}</ion-radio>
<ion-label class="text-label">{{inquiry}}</ion-label>
</ion-radio-group>
</ion-row>
</div>
<!-- /////////////////////////////////////////// -->
<div>
<div>
<ion-list>
<label class="labels">{{ts.trPK('userProfile','DeptName')}}</label>
<ion-item lines="none" class="filed-container">
<select class="filed1" placeholder="Select Department" type="text" [(ngModel)]="depType">
<option [selected]="x.departmentName" value="{{i}}"
*ngFor="let x of departTypeList; let i=index;">
{{x.departmentName}} </option>
</select>
<!-- <select class="filed1" placeholder="Select Department" type="text">
<option >{{EmpRelations}}</option>
<option >{{Hr}}</option>
<option >{{Payroll}}</option>
<option >{{GovRelation}}</option>
</select> -->
</ion-item>
<label class="labels">{{ts.trPK('userProfile','RelatedSection')}}</label>
<ion-item lines="none" class="filed-container">
<select [(ngModel)]="secType" class="filed2" placeholder="Select Sectiont" type="text">
<option [selected]="x.projectName" value="{{i}}"
*ngFor="let x of sectionTypeList; let i=index;">
{{x.sectionName}} </option>
</select>
</ion-item>
<label class="labels">{{ts.trPK('userProfile','RelatedTopic')}}</label>
<ion-item lines="none" class="filed-container">
<select [(ngModel)]="topicType" class="filed3" placeholder="Select Topic" type="text">
<option [selected]="x.topicName" value="{{i}}"
*ngFor="let x of topicTypeList; let i=index;">
{{x.topicName}} </option>
</select>
</ion-item>
</ion-list>
</div>
<div class="request-heading">
<span>{{ts.trPK('userProfile','SupportingDocument')}}</span>
</div>
<div>
<div class="fileUpload btn btn-primary">
<img slot="start" style=" height: 55px;"src="../assets/imgs/add-photo.svg">
<input end class="upload" type="file" ng2FileSelect [uploader]="uploader"(change)="onFileSelected($event)" />
</div>
<ion-slides>
<ion-slide>
<ion-grid class=" gridAH" *ngIf="uploader?.queue?.length > 0">
<ion-col class="rowAH" *ngFor="let item of uploader.queue">
<ion-col size="4">
<label for="">{{ item?.file?.name }}</label>
</ion-col>
<!-- <ion-col size="4">
<label *ngIf="uploader.options.isHTML5">{{ item?.file?.size/1024/1024 | number:'.2' }}
MB</label>
</ion-col> -->
<ion-col size="2">
<button class="iconButton" ion-button (click)="removeFile(item)">
<ion-icon style="color: red;" name="close"></ion-icon>
<!-- <img class="imgSize" src="../assets/imgs/close_menu_icon.png "> -->
</button>
</ion-col>
</ion-col>
</ion-grid>
</ion-slide>
</ion-slides>
<!-- <div>
<button class="iconButton" ion-button (click)="removeFile(item)">
<img class="imgSize" src="../assets/imgs/close_menu_icon.png "></button>
</div>
<div class="fileUpload btn btn-primary">
<img slot="start" style=" height: 55px;"src="../assets/imgs/add-photo.svg">
<input type="file" class="upload" ng2FileSelect [uploader]="uploader"
(change)="onFileSelected($event)" (click)="onFileSelectedclick($event)" />
</div> -->
</div>
<div class="request-heading">
<span>{{ts.trPK('userProfile','Description')}}</span>
</div>
<ion-col size="12">
<ion-item style="margin-left: -20px;margin-right: -13px;margin-top: -24px;" lines="none">
<ion-input [(ngModel)]="Description" [ngClass]="direction == 'en' ? 'filedDesc':'filedDesc-ar' " placeholder="{{ts.trPK('userProfile','Description')}}" type="text"></ion-input>
</ion-item>
</ion-col>
</div>
</ion-card-content>
</ion-card>
</div>
<!-- </form> -->
</ion-content>
<ion-footer >
<div class="centerDiv">
<button class="gridCancelBtn" ion-button (click)="cancelRequest()">{{ts.trPK('general','cancel')}}</button>
<button class="gridSubmitBtn" ion-button (click)="getCreateTicket()">{{ts.trPK('general','submit')}}</button>
</div>
</ion-footer>

@ -0,0 +1,485 @@
.header-toolbar-new{
--background: #269DB8;
}
.contentBg{
padding: 0px 20px;
}
.contentBg:before {
position: absolute;
content: "";
background: #269DB8;
height: 140px;
width: 100%;
left: 0;
top: 0px;
z-index: 1;
}
@media screen and (min-width: 1px) and (max-width:767px){
.result-graph {
position: relative;
background: white;
// margin-top: 20px;
padding-bottom: 20px;
border-radius: 20px;
z-index: 1;
margin-bottom: 10px;
margin-top: 56px;
border-radius: 20px;
border: 1px solid #ccc;
padding-top: 12px;
}}
@media screen and (min-width: 768px) and (max-width:1024px){
.result-graph {
position: relative;
background: white;
// margin-top: 20px;
padding-bottom: 20px;
border-radius: 20px;
z-index: 1;
margin-bottom: 10px;
margin-top: 89px;
border-radius: 20px;
border: 1px solid #ccc;
padding-top: 114px !important;
}}
.user-info{
text-align: center;
margin-bottom: 3px;
.user-image-container{
position: relative;
width: 100%;
height: 24px;
justify-content: space-between;
display: flex;
margin: 0 auto;
align-items: center;
}}
.Boldtext{
font-size: 13px;
font-family: WorkSans-Bold;
color: black !important;
display: block !important;
// line-height: 0px !important;
}
.Nametext{
font-size: 15px;
font-family: WorkSans-Bold;
color: black !important;
display: block !important;
// line-height: 0px !important;
}
.employee-information-indetail{
background: white;
margin-top: 15px;
border-radius: 20px;
margin-bottom: 15px;
border-radius: 20px;
border: 1px solid #ccc;
ion-col{
padding: 15px;
// border-bottom: 1px solid #ccc;
}
h2{
font-size: 13px;
// font-family: WorkSans-Bold;
margin: 0;
font-weight: bold;
color: rgb(128, 124, 124);
}
p{
font-size: 13px;
margin: 0;
font-family: WorkSans-Bold;
// margin-bottom: 10px;
}
}
@media screen and (min-width: 1px) and (max-width:767px){
.user-image{
position: relative;
display: block;
width: 95%;
height: 100%;
border-radius: 80px;
/* border: 1px solid #ccc; */
margin-top: -125px;
}}
@media screen and (min-width: 768px) and (max-width:1024px){
.user-image{
position: relative;
display: block;
width: 95%;
height: 100%;
border-radius: 80px;
margin-bottom: 371px;
}}
.img{
width: 100px;
height: 100px;
display: inline-flex;
overflow: hidden;
background: transparent;
border-radius: 70% !important;
position: relative;
top: 3px;
}
.sendCodeBtn{
--background: #269DB8;
color: white;
text-align: center;
text-decoration: none;
display: inline-block;
font-size: 12px;
margin-left: 5px !important;
margin-top: 15px !important;
margin-bottom: 20px !important;
/* border-radius: 4px; */
height: 26px;
/* padding: 6px 24px; */
font-size: 15px;
width: 322px;
}
.verify-code{
position: relative;
background: white;
border-radius: 20px;
z-index: 1;
border-radius: 20px;
border: 1px solid #ccc;
padding: 21px 3px 34px 14px;
margin: 25px 22px 2px 22px;
}
// .sms_code{
// margin: 0px;
// text-align: center;
// }
ion-input {
margin: 0 5px;
text-align: center;
line-height: 0;
font-size: 32px;
//border: solid 1px #ccc;
border: 1px solid #ccc !important;
//box-shadow: 0 0 5px #ccc inset;
outline: none;
width: 20%;
transition: all .2s ease-in-out;
border-radius: 3px;
display: inline-block;
&:focus {
border-color:var(--ion-color-secondary) !important;
box-shadow: 0 0 5px var(--ion-color-secondary) !important;
}
&::selection {
background: transparent;
}
}
.sendVerifyBtn{
--background: #269DB8;
color: white;
text-align: center;
text-decoration: none;
display: inline-block;
font-size: 12px;
margin-top: 15px !important;
margin-bottom: 20px !important;
/* border-radius: 4px; */
height: 26px;
font-size: 15px;
width: 322px;
margin-left: 22px;
}
.custom-radio .radio-icon {
margin: 0px;
border-radius: 50%;
border-width: var(--border-width);
border-style: var(--border-style);
border-color: #dcdcdc;
margin-top: 6px !important;
border-color: #d8d4d4 !important;
margin-bottom: 18px;}
.text-label{
color: black !important;
font-size: 10px;
margin-left: 15px;
margin-right: 18px;
font-family: 'WorkSans-Bold';
}
// .radio-list{
// background: white;
// margin-left: 18px;
// /* margin-right: 10px; */
// margin-top: 12px;
// }
.result-serviceType{
position: relative;
background: white;
border-radius: 20px;
z-index: 1;
border-radius: 25px;
border: 1px solid #ccc;
margin: 15px;
}
.request-heading {
span {
display: block;
margin-bottom: 15px;
// padding-top: 8px;
// padding-left: 15px;
/* font-weight: bold; */
font-size: 14px;
font-family: 'WorkSans-Bold';
}
}
.filed1{
border-radius: 30px;
border: 1px solid #d3d5d5 !important;
margin: 10px;
padding-left: 11px !important;
padding-top: 6px !important;
color: #636161;
padding-bottom: 15px;
// padding-right: 252px;
padding-right: 115px;
}
.filed2{
border-radius: 30px;
border: 1px solid #d3d5d5 !important;
margin: 10px;
padding-left: 11px !important;
padding-top: 6px !important;
color: #636161;
padding-bottom: 15px;
padding-right: 44px;
}
.filed3{
border-radius: 30px;
border: 1px solid #d3d5d5 !important;
margin: 10px;
padding-left: 11px !important;
padding-top: 6px !important;
color: #636161;
padding-bottom: 15px;
padding-right: 30px;
}
.filedDesc{
border-radius: 30px;
border: 1px solid #d3d5d5 !important;
// margin: 10px;
padding-left: 20px !important;
padding-top: 6px !important;
color: #636161;
--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{
display: block;
padding-top: 8px;
padding-left: 15px;
font-size: 14px;
font-weight: bold;
color: #adabab;
}
.selectLabel{
display: block;
padding-top: 8px;
padding-left: 15px;
font-size: 14px;
/* font-family: 'WorkSans-Bold'; */
font-weight: bold;
color: black;
}
// .cancelRequest{
// padding: 10px 7px 10px 0px;
// ion-button{
// border-radius: 7px;
// padding: 12px 30px 12px 30px;
// background: #d00a0a;
// --background: transparent;
// --box-shadow: none !important;
// height: auto;
// min-height: inherit;
// font-size: 16px;
// font-weight: bold;
// margin-top: -5px;
// }}
// .submitRequest{
// padding: 10px 7px 10px 0px;
// ion-button{
// 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;
color: white;
// margin-left: 15px;
// margin-right: 5px;
font-family: 'WorkSans-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;
}
ion-footer .footer-button{
--background: #259CB8;
width: 80%;
}
.fileUpload {
position: relative;
overflow: hidden;
margin: 10px;
margin-left: -233px;
}
.fileUpload input.upload {
position: absolute;
top: 0;
right: 0;
margin: 0;
padding: 0;
font-size: 20px;
cursor: pointer;
opacity: 0;
filter: alpha(opacity=0);
}
.iconButton .imgSize{
width: 10px !important;
height: 10px;
}
button.iconButton.button.button-ios.button-default.button-default-ios,
button.iconButton.button.button-md.button-default.button-default-md {
padding: 0px;
}

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

@ -0,0 +1,407 @@
import { Component, OnInit } from '@angular/core';
import { Platform, Events, MenuController } from '@ionic/angular';
import { CommonService } from 'src/app/hmg-common/services/common/common.service';
import { TranslatorService } from 'src/app/hmg-common/services/translator/translator.service';
import { AuthenticationService } from 'src/app/hmg-common/services/authentication/authentication.service';
import { AuthenticatedUser } from 'src/app/hmg-common/services/authentication/models/authenticated-user';
import { SharedDataService } from 'src/app/hmg-common/services/shared-data-service/shared-data.service';
import { MowadhafiService } from '../mowadhafi.service';
import { Location } from '@angular/common';
import { MenuResponse } from 'src/app/hmg-common/services/menu/models/menu-response';
import { LoginModel } from 'src/app/authentication/models/LoginModel';
import { SendActivationByType } from 'src/app/authentication/models/sendActivationByType';
import { FileUploader } from 'ng2-file-upload';
@Component({
selector: 'app-hr-request-form',
templateUrl: './hr-request-form.component.html',
styleUrls: ['./hr-request-form.component.scss'],
})
export class HrRequestFormComponent implements OnInit {
public EmpName: string;
public EmpNum: string;
public EmpGroup: string;
public EmpMobile: string;
public EmpJob: string;
public EmpOrgName: string;
public EmpPayrol: string;
public EmpPosition: string;
public EmpEmail: string;
public EmpCatMeaning: string;
public EmpGRADENAME: string;
public EmpLocation: string;
public EmpImg: string;
public userImage: any = '../assets/imgs/profile.png';
public loginData = new LoginModel();
public searchKeySelect = 'Complaints';
myColor: string = 'secondary';
public showRequestDetails = false;
public proID = "CS"
public inquiry: string;
public HR: string;
public complaints: string;
public Projectresult: any;
public EmpRelations: any;
public Hr: any;
public Payroll: any;
public GovRelation: any;
public projName: any;
public topicName: any;
public departTypeList: any;
public topicTypeList: any;
public sectionTypeList: any;
public projectDetial: any;
public projectDep: any;
public sectionDep: any;
public projectCode;
public SelectedServiceType: any;
public depType: any;
public secType: any;
public topicType: any;
indexLastObj: any;
addAttachRequest: any = [];
TransactionID: any;
public teckitDetial: any;
public teckitInfo: any;
public Description: any;
public selectedFile: any;
filterAllowedType: any = [
"application/pdf",
"image/jpeg",
"image/png",
"text/plain",
"image/jpg",
"application/vnd.ms-excel",
"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
];
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.projectCode = this.cs.sharedService.getSharedData("projcet-code");
this.getTicketsByEmployee();
this.getTicketTypes();
this.getProject();
//this.getCreateTicket();
}
goback() {
this.location.back();
}
showSelectedField() { }
getTicketTypes() {
const request = {
EmployeeNumber: "",
};
this.MowadhafiService.getTicketTypes(request, () => { }, this.ts.trPK('general', 'retry')).subscribe((result) => {
this.handlegetTicketTypesResult(result);
})
}
handlegetTicketTypesResult(result) {
this.HR = result.Mohemm_Itg_TicketTypesList[0].typeName;
this.complaints = result.Mohemm_Itg_TicketTypesList[1].typeName;
this.inquiry = result.Mohemm_Itg_TicketTypesList[2].typeName;
}
getProject() {
const request = {
EmployeeNumber: "",
ItgProjectCode: this.projectCode
};
this.MowadhafiService.getProject(request, () => { }, this.ts.trPK('general', 'retry')).subscribe((result) => {
this.handlegetProjectResult(result);
})
}
handlegetProjectResult(result) {
this.Projectresult = result.Mohemm_Itg_ProjectsList;
this.getProjectDepartments();
}
getProjectDepartments() {
const request = {
EmployeeNumber: "",
ItgProjectId: this.Projectresult[0].projectId,
};
this.MowadhafiService.getProjectDepartments(request, () => { }, this.ts.trPK('general', 'retry')).subscribe((result) => {
this.handlegetProjectDepartmentsResult(result);
})
}
handlegetProjectDepartmentsResult(result) {
this.departTypeList = result.Mohemm_ITG_ProjectDepartmentsList;
this.getDepartmentSections();
}
getDepartmentSections() {
const request = {
EmployeeNumber: "",
ItgProjectDepartmentId: this.departTypeList.projectDepartmentId,
};
this.MowadhafiService.getDepartmentSections(request, () => { }, this.ts.trPK('general', 'retry')).subscribe((result) => {
this.handlegetDepartmentSectionsResult(result);
})
}
handlegetDepartmentSectionsResult(result) {
this.sectionTypeList = result.Mohemm_ITG_DepartmentSectionsList;
this.getSectionTopics();
}
getSectionTopics() {
const request = {
EmployeeNumber: "",
ItgDepartmentSectionId: this.sectionTypeList.departmentSectionId,
};
this.MowadhafiService.getSectionTopics(request, () => { }, this.ts.trPK('general', 'retry')).subscribe((result) => {
this.handlegetSectionTopicsResult(result);
})
}
handlegetSectionTopicsResult(result) {
// this.topicName=result.Mohemm_ITG_SectionTopicsList[0].topicName
this.topicTypeList = result.Mohemm_ITG_SectionTopicsList;
}
// getTicketDetails(){
// const request = {
// EmployeeNumber:'',
// ItgTicketId:this.teckitDetial.ticketId,
// };
// this.MowadhafiService.getTicketDetails(request, ()=> {} , this.ts.trPK('general', 'retry')).subscribe((result)=>
// {
// this.handlegetTicketDetailsResult(result);
// }) }
// handlegetTicketDetailsResult(result){
// let res;
// if(this.cs.validResponse(result)){
// res = JSON.parse(result.Mohemm_ITG_ResponseItem);
// console.log(res);
// this.teckitInfo = res.result.data;
// }
// }
getTicketsByEmployee() {
const request = {
// TokenID:"xxx",
EmployeeNumber: "",
ItgPageSize: 10,
ItgPageNo: 1
};
this.MowadhafiService.getTicketsByEmployee(request, () => { }, this.ts.trPK('general', 'retry')).subscribe((result) => {
this.handlegetTicketsByEmployeeResult(result);
})
}
handlegetTicketsByEmployeeResult(result) {
let x;
if (this.cs.validResponse(result)) {
x = JSON.parse(result.Mohemm_ITG_ResponseItem);
console.log(x);
this.teckitInfo = x.result.data;
// for (let i = 0; i < this.ticketsInfo.length; i++) {
// console.log(i + ' : ' + this.ticketsInfo[i].ticketTypeName)
// }
console.log("getTicketsByEmployee()-------------------------------------------------------");
console.log(this.teckitInfo);
console.log("Type Id" + this.teckitInfo[0].ticketTypeId);
}
}
getCreateTicket() {
// const request = {
// // EmployeeNumber:"",
// // ticketTypeId:this.teckitInfo[0].ticketTypeId,
// // projectId:this.teckitInfo[0].projectId,
// // departmentId:this.teckitInfo[0].departmentId,
// // sectionId:this.teckitInfo[0].sectionId,
// // sectionTopicId:this.teckitInfo[0].topicId,
// // description:this.teckitInfo[0].description,
// // fileColl:this.
// // employeeNumber:this.teckitInfo[0].employeeNumber,
// // ticketStatus:this.teckitInfo[0].ticketStatusName,
// // channelId:this.teckitInfo.channelId,
// };
this.cs.startLoading();
var request = new FormData();
request.append('ticketTypeId', '1');
request.append('projectId', '11');
request.append('departmentId', '1');
request.append('sectionId', '1');
request.append('sectionTopicId', '1');
request.append('description', this.Description);
request.append('fileColl', this.selectedFile[0], this.selectedFile[0].name);
request.append('employeeNumber', '13777');
request.append('ticketStatus', 'new');
request.append('Channel', '31');
request.append('channelId', '1');
request.append('LogInToken', 'test');
request.append('Token', '@dm!n');
request.append('EmployeeNumber', '13777');
request.append('MobileNo', '0567');
this.MowadhafiService.getCreateTicket(request, () => { }, this.ts.trPK('general', 'retry')).subscribe((result) => {
this.cs.stopLoading();
this.handlegetCreateTicketResult(result);
})
}
handlegetCreateTicketResult(result) {
}
public cancelRequest() {
this.cs.openMyRequestPage();
// this.menu.toggle();
}
/*******************Add attchement Functions*************/
public uploader: FileUploader = new FileUploader({
allowedMimeType: [
"application/pdf",
"image/jpeg",
"image/png",
"text/plain",
"image/jpg",
"application/vnd.ms-excel",
"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
],
maxFileSize: 10 * 1024 * 1024,
formatDataFunctionIsAsync: true,
formatDataFunction: async item => {
return new Promise((resolve, reject) => {
resolve({
name: item._file.name,
length: item._file.size,
contentType: item._file.type,
date: new Date()
});
});
}
});
// onFileSelected(event) {
// //event.target.value = '';
// this.selectedFile = event;
// }
onFileSelected(input) {
if (!(this.filterAllowedType.indexOf(input.target.files[0].type) > -1)) {
let msg: string = "";
msg = this.ts.trPK("general", "noFileSelect");
this.cs.presentAlert(msg);
return;
} // todo: show alert that you tried uploading wrong files
else {
const file = input.target.files[0];
this.selectedFile = input.target.files;
// console.log(file);
this.getBase64(file).then(data =>
this.pushObject(data, file.name, file.type)
);
}
}
getBase64(file) {
return new Promise((resolve, reject) => {
const reader = new FileReader();
reader.readAsDataURL(file);
reader.onload = () => resolve(reader.result);
reader.onerror = error => reject(error);
});
}
pushObject(fileData, name, type) {
// console.log("before push: "+ this.index);
this.indexLastObj++;
try {
let array = name.split(".");
let attachType: string = array[array.length - 1];
this.addAttachRequest.push({
AttachmentID: this.indexLastObj,
P_FILE_CONTENT_TYPE: attachType, //type.split('/')[1],
P_FILE_DATA: fileData.split(",")[1],
P_FILE_NAME: name, //.split('.')[0],
P_TRANSACTION_ID: this.TransactionID
});
} catch (e) { }
}
removeFile(objectitem) {
let objIndex1 = this.uploader.queue.findIndex(item => item == objectitem);
this.uploader.queue.splice(objIndex1, 1);
let objIndex = this.addAttachRequest.findIndex(
item => item.AttachmentID == objectitem.AttachmentID
);
this.addAttachRequest.splice(objIndex, 1);
}
submitRequest() {
}
}

@ -11,7 +11,7 @@
<ion-content>
<div *ngIf="!showRequestDetails" class="contentBg">
<div class="contentBg">
<div class="result-graph" >
<div class="user-info">
<div class="user-image-container">
@ -130,106 +130,13 @@
<!-- ///////////////////////////////////////////////////////////////////next page -->
<div *ngIf="showRequestDetails" >
<ion-card class="result-serviceType">
<ion-card-content>
<div class="request-heading">
<span>{{ts.trPK('userProfile','ServiceType')}}</span>
</div>
<div>
<ion-row class="custom-radio">
<ion-radio-group (ionChange)="showSelectedField($event)" class="radio-list">
<ion-radio value="HR Services" [color]="myColor">{{HR}}</ion-radio>
<ion-label class="text-label" >{{HR}}</ion-label>
<ion-radio value="Complaints" [color]="myColor" >{{complaints}}</ion-radio>
<ion-label class="text-label">{{complaints}}</ion-label>
<ion-radio value="Inquiry" [color]="myColor" >{{inquiry}}</ion-radio>
<ion-label class="text-label">{{inquiry}}</ion-label>
</ion-radio-group>
</ion-row>
</div>
<!-- /////////////////////////////////////////// -->
<div>
<div>
<ion-list>
<label class="labels">{{ts.trPK('userProfile','DeptName')}}</label>
<ion-item lines="none" class="filed-container">
<select class="filed1" placeholder="Select Department" type="text" [(ngModel)]="index">
<option [selected]="x.departmentName" value="{{i}}"
*ngFor="let x of departTypeList; let i=index;">
{{x.departmentName}} </option>
</select>
<!-- <select class="filed1" placeholder="Select Department" type="text">
<option >{{EmpRelations}}</option>
<option >{{Hr}}</option>
<option >{{Payroll}}</option>
<option >{{GovRelation}}</option>
</select> -->
</ion-item>
<label class="labels">{{ts.trPK('userProfile','RelatedSection')}}</label>
<ion-item lines="none" class="filed-container">
<select [(ngModel)]="index" class="filed2" placeholder="Select Sectiont" type="text">
<!-- <option [selected]="projName" >{{projName}}</option> -->
<option [selected]="x.projectName" value="{{i}}"
*ngFor="let x of sectionTypeList; let i=index;">
{{x.projectName}} </option>
</select>
</ion-item>
<label class="labels">{{ts.trPK('userProfile','RelatedTopic')}}</label>
<ion-item lines="none" class="filed-container">
<select [(ngModel)]="index" class="filed3" placeholder="Select Topic" type="text">
<!-- <option value="1">{{topicName}}</option> -->
<option [selected]="x.topicName" value="{{i}}"
*ngFor="let x of topicTypeList; let i=index;">
{{x.topicName}} </option>
</select>
</ion-item>
</ion-list>
</div>
<div class="request-heading">
<span>{{ts.trPK('userProfile','SupportingDocument')}}</span>
</div>
<div>
<!-- <input type="file" ng2FileSelect [uploader]="uploader"
(change)="onFileSelected($event)" (click)="onFileSelectedclick($event)" />
<label end for="file">
<img slot="start" style=" height: 55px;"src="../assets/imgs/add-photo.svg">
</label> -->
<div class="fileUpload btn btn-primary">
<img slot="start" style=" height: 55px;"src="../assets/imgs/add-photo.svg">
<input type="file" class="upload" ng2FileSelect [uploader]="uploader"
(change)="onFileSelected($event)" (click)="onFileSelectedclick($event)" />
</div>
</div>
<div class="request-heading">
<span>{{ts.trPK('userProfile','Description')}}</span>
</div>
<ion-col size="12">
<ion-item style="margin-left: -20px;margin-right: -13px;margin-top: -24px;" lines="none">
<ion-input [ngClass]="direction == 'en' ? 'filedDesc':'filedDesc-ar' " placeholder="{{ts.trPK('userProfile','Description')}}" type="text"></ion-input>
</ion-item>
</ion-col>
</div>
</ion-card-content>
</ion-card>
</div>
</ion-content>
<ion-footer *ngIf="showRequestDetails" >
<!-- <ion-footer *ngIf="showRequestDetails" >
<div class="centerDiv">
<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>
</ion-footer>
</ion-footer> -->

@ -52,7 +52,9 @@ export class HRRequestComponent implements OnInit {
public topicTypeList:any;
public sectionTypeList:any;
filterAllowedType: any = ['application/pdf', 'image/jpeg', 'image/png', 'text/plain', 'image/jpg', 'application/vnd.ms-excel', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'];
public projectDetial:any;
public projectDep:any;
public sectionDep:any;
public direction: string;
@ -72,11 +74,7 @@ export class HRRequestComponent implements OnInit {
ngOnInit() {
this.getUserInformation();
this.getTicketTypes();
this.getProject();
this.getProjectDepartments();
this.getDepartmentSections();
this.getSectionTopics();
}
@ -119,190 +117,10 @@ export class HRRequestComponent implements OnInit {
// console.log("total no "+this.EmpTotal)
}
getTicketTypes(){
const request = {
// TokenID:"xxx",
EmployeeNumber:"121816",
};
this.MowadhafiService.getTicketTypes(request, ()=> {} , this.ts.trPK('general', 'retry')).subscribe((result)=>
{
this.handlegetTicketTypesResult(result);
}) }
handlegetTicketTypesResult(result){
this.HR = result.Mohemm_Itg_TicketTypesList[0].typeName;
this.complaints = result.Mohemm_Itg_TicketTypesList[1].typeName;
this.inquiry = result.Mohemm_Itg_TicketTypesList[2].typeName;
}
getProject(){
const request = {
// TokenID:"xxx",
EmployeeNumber:"121816",
ItgProjectCode:"CS"
};
this.MowadhafiService.getProject(request, ()=> {} , this.ts.trPK('general', 'retry')).subscribe((result)=>
{
this.handlegetProjectResult(result);
}) }
handlegetProjectResult(result){
this.Projectresult=result.Mohemm_Itg_ProjectsList[0];
}
getProjectDepartments(){
const request = {
// TokenID:"xxx",
EmployeeNumber:"121816",
ItgProjectId:11,
};
this.MowadhafiService.getProjectDepartments(request, ()=> {} , this.ts.trPK('general', 'retry')).subscribe((result)=>
{
this.handlegetProjectDepartmentsResult(result);
}) }
handlegetProjectDepartmentsResult(result){
this.departTypeList= result.Mohemm_ITG_ProjectDepartmentsList;
// this.EmpRelations= result .Mohemm_ITG_ProjectDepartmentsList[0].departmentName;
// this.Hr = result .Mohemm_ITG_ProjectDepartmentsList[1].departmentName;
// this.Payroll = result .Mohemm_ITG_ProjectDepartmentsList[2].departmentName;
// this.GovRelation = result .Mohemm_ITG_ProjectDepartmentsList[3].departmentName;
}
getDepartmentSections(){
const request = {
// TokenID:"xxx",
EmployeeNumber:"121816",
ItgProjectDepartmentId:1
};
this.MowadhafiService.getDepartmentSections(request, ()=> {} , this.ts.trPK('general', 'retry')).subscribe((result)=>
{
this.handlegetDepartmentSectionsResult(result);
}) }
handlegetDepartmentSectionsResult(result){
// this.projName=result.Mohemm_ITG_DepartmentSectionsList[0].projectName;
this.sectionTypeList= result.Mohemm_ITG_DepartmentSectionsList;
}
getSectionTopics(){
const request = {
// TokenID:"xxx",
EmployeeNumber:"121816",
ItgDepartmentSectionId:1
};
this.MowadhafiService.getSectionTopics(request, ()=> {} , this.ts.trPK('general', 'retry')).subscribe((result)=>
{
this.handlegetSectionTopicsResult(result);
}) }
handlegetSectionTopicsResult(result){
// this.topicName=result.Mohemm_ITG_SectionTopicsList[0].topicName
this.topicTypeList= result.Mohemm_ITG_SectionTopicsList;
}
createRequest(){
if(this.showRequestDetails){
this.showRequestDetails = false
}else{
this.showRequestDetails = true
}}
public cancelRequest() {
this.cs.openMyRequestPage();
this.menu.toggle();
}
/*******************Add attchement Functions*************/
public uploader: FileUploader = new FileUploader({
allowedMimeType: ['application/pdf', 'image/jpeg', 'image/png', 'text/plain', 'image/jpg', 'application/vnd.ms-excel', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'],
maxFileSize: 10 * 1024 * 1024,
formatDataFunctionIsAsync: true,
formatDataFunction: async (item) => {
return new Promise((resolve, reject) => {
resolve({
name: item._file.name,
length: item._file.size,
contentType: item._file.type,
date: new Date()
});
});
}
});
onFileSelectedclick(event){
event.target.value = '';
}
onFileSelected(input) {
// this.uploader.onWhenAddingFileFailed = function (item: any, filter: any, options: any){
if (!(this.filterAllowedType.indexOf(input.target.files[0].type) > -1)) {
let msg: string = "";
msg = this.ts.trPK("general", "notSupport");
this.cs.presentAlert(msg);
return
} // todo: show alert that you tried uploading wrong files
else {
const file = input.target.files[0];
this.getBase64(file).then(
data => this.pushObject(data, file.name, file.type)
);
}
}
getBase64(file) {
return new Promise((resolve, reject) => {
const reader = new FileReader();
reader.readAsDataURL(file);
reader.onload = () => resolve(reader.result);
reader.onerror = error => reject(error);
});
}
pushObject(fileData, name, type) {
// console.log('before push: '+ this.index);
// try {
// let array = name.split('.');
// let attachType: string = array[array.length - 1];
// this.attachListOver.push(
// AttachmentID: this.attachListOver.length,
// P_FILE_CONTENT_TYPE: attachType,//type.split('/')[1],
// P_FILE_DATA: fileData.split(',')[1],
// P_FILE_NAME: name,//.split('.')[0],
// P_TRANSACTION_ID: this.P_TransactionID
// {
// })
// } catch (e) {
// }
}
submitRequest(){}
public createRequest() {
this.cs.openHRRequestFormPage();
// this.menu.toggle();
}
}

@ -10,6 +10,7 @@ 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';
import {HrRequestFormComponent} from './hr-request-form/hr-request-form.component';
const routes: Routes = [
{
@ -26,7 +27,11 @@ const routes: Routes = [
{
path: 'request-details',
component: RequestDetailsComponent
}
},
{
path: 'hr-request-form',
component: HrRequestFormComponent
}
]
@ -41,6 +46,7 @@ const routes: Routes = [
IonicModule,
RouterModule.forChild(routes)
],
declarations: [MowadhafiPage,MyRequestComponent,HRRequestComponent,RequestDetailsComponent]
declarations: [MowadhafiPage,MyRequestComponent,HRRequestComponent
,RequestDetailsComponent,HrRequestFormComponent]
})
export class MowadhafiPageModule {}

@ -1,7 +1,7 @@
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";
import { HttpClient, HttpHeaders } from '@angular/common/http';
@Injectable({
providedIn: 'root'
})
@ -9,84 +9,113 @@ 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';
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';
public static getCreateTicket = 'Services/COCWS.svc/REST/Mohemm_ITG_CreateTicket';
constructor(
public con: ConnectorService,
private authService: AuthenticationService
private authService: AuthenticationService,
public http: HttpClient
) { }
public getEmployeeSubordinates(absence: any, onError?: any, errorLabel?: string){
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){
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){
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){
public getTicketTypes(absence: any, onError?: any, errorLabel?: string) {
const request = absence;
this.authService.authenticateRequest(request);
request.EmployeeNumber = request.P_USER_NAME;
console.log(request);
return this.con.post(MowadhafiService.getTicketTypes, request, onError, errorLabel);
}
public getProject(absence: any, onError?: any, errorLabel?: string){
public getProject(absence: any, onError?: any, errorLabel?: string) {
const request = absence;
this.authService.authenticateRequest(request);
request.EmployeeNumber = request.P_USER_NAME;
// request.ItgProjectCode = request.projectCode;
return this.con.post(MowadhafiService.getProject, request, onError, errorLabel);
}
public getProjectDepartments(absence: any, onError?: any, errorLabel?: string){
public getProjectDepartments(absence: any, onError?: any, errorLabel?: string) {
const request = absence;
this.authService.authenticateRequest(request);
request.EmployeeNumber = request.P_USER_NAME;
return this.con.post(MowadhafiService.getProjectDepartments, request, onError, errorLabel);
}
public getDepartmentSections(absence: any, onError?: any, errorLabel?: string){
public getDepartmentSections(absence: any, onError?: any, errorLabel?: string) {
const request = absence;
this.authService.authenticateRequest(request);
request.EmployeeNumber = request.P_USER_NAME;
return this.con.post(MowadhafiService.getDepartmentSections, request, onError, errorLabel);
}
public getSectionTopics(absence: any, onError?: any, errorLabel?: string){
public getSectionTopics(absence: any, onError?: any, errorLabel?: string) {
const request = absence;
this.authService.authenticateRequest(request);
request.EmployeeNumber = request.P_USER_NAME;
return this.con.post(MowadhafiService.getSectionTopics, request, onError, errorLabel);
}
public getTicketsByEmployee(absence: any, onError?: any, errorLabel?: string){
const request = absence;
public getTicketsByEmployee(absence: any, onError?: any, errorLabel?: string) {
let request = absence;
this.authService.authenticateRequest(request);
request.EmployeeNumber = request.P_USER_NAME;
return this.con.post(MowadhafiService.getTicketsByEmployee, request, onError, errorLabel);
}
public getTicketStatisticsByEmp(absence: any, onError?: any, errorLabel?: string){
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){
public getTicketTransaction(absence: any, onError?: any, errorLabel?: string) {
const request = absence;
this.authService.authenticateRequest(request);
request.EmployeeNumber = request.P_USER_NAME;
return this.con.post(MowadhafiService.getTicketTransaction, request, onError, errorLabel);
}
public getTicketDetails(absence: any, onError?: any, errorLabel?: string){
public getTicketDetails(absence: any, onError?: any, errorLabel?: string) {
const request = absence;
this.authService.authenticateRequest(request);
request.EmployeeNumber = request.P_USER_NAME;
return this.con.post(MowadhafiService.getTicketDetails, request, onError, errorLabel);
}
}
public getCreateTicket(absence: any, onError?: any, errorLabel?: string) {
const request = absence;
this.authService.authenticateRequest(request);
request.EmployeeNumber = request.P_USER_NAME;
const HttpUploadOptions = {
headers: new HttpHeaders({ "Content-Type": "multipart/form-data", })
}
// return this.con.post(MowadhafiService.getCreateTicket, request, onError, errorLabel);
return this.http.post(ConnectorService.host + MowadhafiService.getCreateTicket, absence, {
reportProgress: true,
observe: 'events'
}
)
}
}

@ -14,14 +14,14 @@
<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 *ngFor="let ticket of ticketsInfo ;let i = index" class="result-container" (click)="openRequestDetailsPage(ticket)">
<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-col class="text">{{ticket.ticketTypeName}}</ion-col>
<ion-col class="date">{{ts.trPK('userProfile','postedDate')}} {{(ticket.created)?.substring(0,10)}}</ion-col>
</ion-row>
<ion-row>There is some Complaints</ion-row>
<ion-row style="margin-top: 5px;">Pending</ion-row>
<ion-row>{{ticket.description}}</ion-row>
<ion-row style="margin-top: 5px;color: #e69f44; font-family:'WorkSans-bold';">{{ticket.ticketStatusName}}</ion-row>
</ion-card-content>
</ion-card>
</div>

@ -30,6 +30,7 @@
font-size: 15px;
margin-top: -9px;
font-family: 'WorkSans-bold';
}
.date{
margin-top: -9px;

@ -14,7 +14,8 @@ import { Location } from '@angular/common';
styleUrls: ['./my-request.component.scss'],
})
export class MyRequestComponent implements OnInit {
public direction : String;
public direction: String;
public ticketsInfo : any = [];
constructor(
@ -26,10 +27,10 @@ public direction : String;
public MowadhafiService: MowadhafiService,
private location: Location,
private menu: MenuController,
) {
this.direction = TranslatorService.getCurrentLanguageName();
}
}
ngOnInit() {
this.getTicketsByEmployee();
@ -37,35 +38,48 @@ public direction : String;
goback() {
this.location.back();
}
public openHRRequestPage() {
this.cs.openHRRequestPage();
// this.menu.toggle();
}
}
public openRequestDetailsPage() {
this.cs.openRequestDetailsPage();
// this.menu.toggle();
}
public openHRRequestPage() {
this.cs.openHRRequestPage();
// this.menu.toggle();
}
public openRequestDetailsPage(item) {
this.cs.sharedService.setSharedData(item,'ticket-info')
this.cs.openRequestDetailsPage();
// this.menu.toggle();
}
getTicketsByEmployee(){
const request = {
// TokenID:"xxx",
EmployeeNumber:"121816",
ItgPageSize:10,
ItgPageNo:1
getTicketsByEmployee() {
const request = {
// TokenID:"xxx",
EmployeeNumber: "",
ItgPageSize: 10,
ItgPageNo: 1
};
this.MowadhafiService.getTicketsByEmployee(request, ()=> {} , this.ts.trPK('general', 'retry')).subscribe((result)=>
{
this.handlegetTicketsByEmployeeResult(result);
}) }
handlegetTicketsByEmployeeResult(result){
}
};
this.MowadhafiService.getTicketsByEmployee(request, () => { }, this.ts.trPK('general', 'retry')).subscribe((result) => {
this.handlegetTicketsByEmployeeResult(result);
})
}
handlegetTicketsByEmployeeResult(result){
let x;
if(this.cs.validResponse(result)){
x = JSON.parse(result.Mohemm_ITG_ResponseItem);
console.log(x);
this.ticketsInfo=x.result.data;
for (let i = 0; i < this.ticketsInfo.length; i++) {
// console.log(i + ' : ' + this.ticketsInfo[i].ticketTypeName)
}
console.log(this.ticketsInfo);
}
}
}

@ -19,40 +19,40 @@
<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-col style="color: #e69f44;" > {{status}}</ion-col>
<ion-col class="date">{{ts.trPK('userProfile','postedDate')}}{{date}}</ion-col>
</ion-row>
<ion-col [size]="12">
<h2 class="labels">{{ts.trPK('userProfile','refrence')}}</h2>
<p class="text">453388</p>
<p class="text">{{ticketRefre}}</p>
</ion-col>
<ion-col [size]="12">
<h2 class="labels"> {{ts.trPK('userProfile','section')}}</h2>
<p class="text">Employee</p>
<p class="text">{{section}}</p>
</ion-col>
<ion-col [size]="12">
<h2 class="labels"> {{ts.trPK('userProfile','topic')}}</h2>
<p class="text">Change Tiket</p>
<p class="text">{{topic}}</p>
</ion-col>
<ion-col [size]="12">
<h2 class="labels">{{ts.trPK('userProfile','Description')}}</h2>
<p class="DescrText">descriptions</p>
<p class="DescrText">{{description}}</p>
</ion-col>
</ion-card-content>
</ion-card>
</div>
<div>
<ion-card class="result-containerList" >
<ion-card class="result-containerList" >
<ion-card-content>
<div style="position: relative;">
<div *ngFor="let action of actionInfo ;let i = index" 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>
<span [ngClass]="direction == 'en'? 'text-span':'text-span-ar'">{{ts.trPK('userProfile','actionBy')}}{{action.actionBy}}</span>
<div class="action-data">
<p >descriptions</p>
<span [ngClass]="direction == 'en'? 'date-span':'date-span-ar'">May 16,2021</span>
<p >{{action.comments}}</p>
<span [ngClass]="direction == 'en'? 'date-span':'date-span-ar'">{{(action.actionDate)?.substring(0,10)}}</span>
</div>
</div>
</div>

@ -70,7 +70,8 @@
font-size: 13px;
margin-bottom: 0px;
margin-top: -10px;
color: gray;
color: #a9a5a5;
font-family: 'WorkSans-bold';
}
.request-list-container {
@ -78,7 +79,6 @@
padding-left: 37px;
clear: both;
min-height: 200px;
margin-bottom: 80px;
padding-top: 15px;
}
.request-list-container:before{
@ -162,7 +162,7 @@
margin-bottom: 0px;
margin-top: -10px;
color: gray;
margin-left: 178px;
margin-left: 172px;
}
.date-span-ar{

@ -15,6 +15,16 @@ import { Location } from '@angular/common';
})
export class RequestDetailsComponent implements OnInit {
public direction : String;
public actionInfo:any = [];
public teckitInfo:any;
public description:any;
public section:any;
public topic:any;
public ticketRefre:any;
public date:any;
public status:any;
public teckitDetial:any;
constructor(
public ts: TranslatorService,
@ -31,8 +41,9 @@ export class RequestDetailsComponent implements OnInit {
}
ngOnInit() {
this.teckitDetial = this.cs.sharedService.getSharedData('ticket-info', true)
this.getTicketDetails();
this.getTicketTransaction();
this.getTicketDetails()
}
goback() {
@ -44,8 +55,8 @@ export class RequestDetailsComponent implements OnInit {
getTicketTransaction(){
const request = {
EmployeeNumber:"121816",
ItgTicketId:"5a10de61-c4db-4c77-e464-08d8a1beaaac",
EmployeeNumber:'',
ItgTicketId:this.teckitDetial.ticketId,
};
this.MowadhafiService.getTicketTransaction(request, ()=> {} , this.ts.trPK('general', 'retry')).subscribe((result)=>
@ -54,14 +65,23 @@ export class RequestDetailsComponent implements OnInit {
}) }
handlegetTicketTransactionResult(result){
let x;
if(this.cs.validResponse(result)){
x = JSON.parse(result.Mohemm_ITG_ResponseItem);
console.log(x);
this.actionInfo=x.result.data;
for (let i = 0; i < this.actionInfo.length; i++) {
console.log(i + ' : ' + this.actionInfo[i].ticketTypeName)
}
}
}
getTicketDetails(){
const request = {
EmployeeNumber:"121816",
TokenID:"@dm!n",
ItgTicketId:"5a10de61-c4db-4c77-e464-08d8a1beaaac",
EmployeeNumber:'',
ItgTicketId:this.teckitDetial.ticketId,
};
this.MowadhafiService.getTicketDetails(request, ()=> {} , this.ts.trPK('general', 'retry')).subscribe((result)=>
@ -70,6 +90,19 @@ export class RequestDetailsComponent implements OnInit {
}) }
handlegetTicketDetailsResult(result){
let res;
if(this.cs.validResponse(result)){
res = JSON.parse(result.Mohemm_ITG_ResponseItem);
console.log(res);
this.teckitInfo = res.result.data;
this.status =this.teckitInfo.ticketStatusName;
this.date =this.teckitInfo.created.substring(0, 10);
this.ticketRefre =this.teckitInfo.ticketReferenceNo;
this.section = this.teckitInfo.sectionName;
this.topic =this.teckitInfo.topicName;
this.description =this.teckitInfo.description;
}
}

@ -400,7 +400,7 @@
<div style="margin-top: -23px;">
<ion-row>
<ion-col><p class="text">{{ts.trPK('myTeam','my-team-members')}}</p></ion-col>
<ion-col> <div class="number"><p class="numberEmp">{{EmpTotal}}</p></div></ion-col>
<ion-col> <div class="number"><p class="numberEmp">{{EmployeeTotal}}</p></div></ion-col>
</ion-row>
</div>

@ -92,7 +92,10 @@ export class DetailsComponent implements OnInit {
public selectedFilter = '';
public itemType = '';
public monthNo: any;
isFavorite: boolean = false;
isFavorite = false;
public EmpNumer:any;
public isFavor:any;
public EmployeeTotal:any;
@ -231,7 +234,9 @@ export class DetailsComponent implements OnInit {
this.showAttendanceTracking();
// tslint:disable-next-line: max-line-length
this.currentMonthName = this.direction === 'en' ? this.common.getMonthName(this.monthIndex) : this.common.getMonthNameAr(this.monthIndex);
this.getSuborinatesAttStatus();
// this.getSuborinatesAttStatus();
// this.getFavorit();
}
@ -300,7 +305,6 @@ export class DetailsComponent implements OnInit {
this.timeCardService.getDayHoursTypeDetails(dayAndHoursReqObj, '', '', this.isPostNoLoad).subscribe((result) => {
if (this.common.validResponse(result)) {
console.log(result.GetDayHoursTypeDetailsList);
this.common.sharedService.setSharedData(result.GetDayHoursTypeDetailsList, 'RTP_IDs');
this.countAllAttendDays(result.GetDayHoursTypeDetailsList);
}
@ -308,7 +312,7 @@ export class DetailsComponent implements OnInit {
}
monthCardSliders(monthNo) {
console.log(monthNo + "__________________")
/* change
*/
@ -321,8 +325,7 @@ export class DetailsComponent implements OnInit {
//end
this.calendarConfig(this.getMonthName(monthNo), this.currentYear);
console.log("next month =" + this.nextMonth);
console.log(" Month Name =" + this.currentMonthName);
}
@ -350,7 +353,7 @@ export class DetailsComponent implements OnInit {
this.preMonth = 12;
}
this.currentDate = new Date(this.currentYear, (this.preMonth - 1), 1);
console.log(this.currentDate);
this.calendarConfig(this.getMonthName(this.preMonth), this.currentYear);
this.preMonth = this.preMonth - 1;
this.nextMonth = this.preMonth + 2;
@ -525,6 +528,8 @@ export class DetailsComponent implements OnInit {
this.isSpecialist = this.common.sharedService.getSharedData('isSpecialist', false) ? true : false;
if (this.employee) {
this.getEmpSubordinate(userID);
this.isFavorite = false;
this.getFavorit();
}
}
@ -587,7 +592,7 @@ export class DetailsComponent implements OnInit {
};
this.getEmployeeSubordinatesRequestObject = body;
this.myTeamService.getEmployeeSubordinates(body).subscribe((result: any) => {
console.log('one');
if (this.common.validResponse(result)) {
this.handleEmpResult(result.GetEmployeeSubordinatesList);
}
@ -595,6 +600,7 @@ export class DetailsComponent implements OnInit {
}
handleEmpResult(result) {
this.EmployeeTotal = result.length;
const lastItemIndex = result.length - 1;
const lastItem = result[lastItemIndex];
if (lastItem) {
@ -625,7 +631,7 @@ export class DetailsComponent implements OnInit {
doInfinite(infiniteScroll) {
if (!this.isReachEnd) {
this.myTeamService.getEmployeeSubordinates(this.getEmployeeSubordinatesRequestObject).subscribe((result: any) => {
console.log('two');
if (this.common.validResponse(result)) {
this.handleEmpResult(result.GetEmployeeSubordinatesList);
}
@ -715,37 +721,29 @@ export class DetailsComponent implements OnInit {
}
}
getSuborinatesAttStatus() {
const request = {
// VersionID:2.8,
// Channel:37,
// LanguageID:2,
// MobileType:"android",
// P_SESSION_ID:1142449920,
// MobileNumber:"0508079569",
// TokenID:"VHR_Token",
// P_USER_NAME:"111209",
// UserName:"111209",
// P_EMAIL_ADDRESS:"Faisal.AlQurashi@cloudsolutions.com.sa",
SearchMonth: "January",
SearchYear: 2021
// getSuborinatesAttStatus() {
// const request = {
// // SearchMonth: "January",
// // SearchYear: 2021
// SearchMonth: "",
// SearchYear: Number
};
// this.myTeamService.getSuborinatesAttStatus().subscribe((result: any) =>
this.myTeamService.getSuborinatesAttStatus(request, () => { }, this.ts.trPK('general', 'retry')).subscribe((result) => {
this.handleRespondSuborinatesAttStatusResult(result);
// };
// // this.myTeamService.getSuborinatesAttStatus().subscribe((result: any) =>
// this.myTeamService.getSuborinatesAttStatus(request, () => { }, this.ts.trPK('general', 'retry')).subscribe((result) => {
// this.handleRespondSuborinatesAttStatusResult(result);
})
}
// })
// }
handleRespondSuborinatesAttStatusResult(result) {
// this.EmpTotal = result.GetSubordinatesAttdStatusList.length;
this.EmpTotal = result.GetSubordinatesAttdStatusList[0].NUMBER_OF_EMPLOYEES;
console.log("total no " + this.EmpTotal)
}
// handleRespondSuborinatesAttStatusResult(result) {
// // this.EmpTotal = result.GetSubordinatesAttdStatusList.length;
// this.EmpTotal = result.GetSubordinatesAttdStatusList[0].NUMBER_OF_EMPLOYEES;
// }
activeFilter(index: number) {
console.log(this.filters);
if (this.currentActiveIndex !== index) {
this.previousActiveIndex = this.currentActiveIndex;
this.currentActiveIndex = index;
@ -804,8 +802,9 @@ export class DetailsComponent implements OnInit {
this.common.presentConfirmDialog(
confirmBoxhtml
, () => {
var request =
{ "USER_NAME": selEmp['USER_NAME'], "EMPLOYEE_DISPLAY_NAME": selEmp['EMPLOYEE_DISPLAY_NAME'], "EMAIL_ADDRESS": selEmp.EMAIL_ADDRESS, "EMPLOYEE_IMAGE": selEmp.EMPLOYEE_IMAGE, "IsFavorite": true };
[ { "USER_NAME": this.employee.EMPLOYEE_NUMBER, "EMPLOYEE_DISPLAY_NAME": this.employee.EMPLOYEE_DISPLAY_NAME, "EMAIL_ADDRESS": this.employee.EMAIL_ADDRESS, "EMPLOYEE_IMAGE": this.employee.EMPLOYEE_IMAGE, "IsFavorite": !this.isFavorite}];
this.saveUserFavruiteList(request);
// this.isFavorite = false;
@ -813,7 +812,7 @@ export class DetailsComponent implements OnInit {
}, () => {
})
this.isFavorite = false;
// if (selectValue == "1" || selectValue == "2" || selectValue == "3") {
// this.isSelect = true;
// }
@ -832,6 +831,7 @@ export class DetailsComponent implements OnInit {
if (this.common.validResponse(result)) {
this.common.stopLoading();
this.favoriteUserList = result['Mohemm_GetFavoriteReplacementsList'];
}
@ -842,10 +842,27 @@ export class DetailsComponent implements OnInit {
}).subscribe((result) => {
if (this.common.validResponse(result)) {
this.common.toastPK("replacementRoll", "favorite-saved");
this.isFavorite = true;
this.isFavorite = !this.isFavorite;
}
})
}
getFavorit(){
this.worklistService.getFavoriteMyTeam({}, () => {
}).subscribe((result) => {
this.EmpNumer = result.Mohemm_GetFavoriteReplacementsList;
this.EmpNumer.forEach(element => {
if(element.USER_NAME === this.employee.EMPLOYEE_NUMBER){
this.isFavorite = true;
}
});
});
}
}

@ -47,7 +47,7 @@
<div>
<ion-row>
<ion-col><p class="text">{{ts.trPK('myTeam','my-team-members')}}</p></ion-col>
<ion-col> <div class="number"><p class="numberEmp">{{EmpTotal}}</p></div></ion-col>
<ion-col> <div class="number"><p class="numberEmp">{{EmployeeTotal}}</p></div></ion-col>
</ion-row>
</div>

@ -31,6 +31,7 @@ export class HomeComponent implements OnInit {
public pageFirstVisit = false;
myColor: string = 'secondary';
public EmpTotal = [];
public EmployeeTotal: any;
public options = {
cutoutPercentage: 80,
@ -99,7 +100,7 @@ export class HomeComponent implements OnInit {
this.common.sharedService.setSharedData( [], DetailsComponent.opendEmployeesARR);
this.setIntitial();
this.getSuborinatesAttStatus();
// this.getSuborinatesAttStatus();
}
toggleColor() {
this.myColor = 'secondary';
@ -166,6 +167,7 @@ export class HomeComponent implements OnInit {
}
handleEmpResult(result) {
this.EmployeeTotal = result.length;
const lastItemIndex = result.length - 1;
const lastItem = result[lastItemIndex];
if (lastItem) {
@ -240,33 +242,23 @@ export class HomeComponent implements OnInit {
getSuborinatesAttStatus(){
const request = {
// VersionID:2.8,
// Channel:37,
// LanguageID:2,
// MobileType:"android",
// P_SESSION_ID:1142449920,
// MobileNumber:"0508079569",
// TokenID:"VHR_Token",
// P_USER_NAME:"111209",
// UserName:"111209",
// P_EMAIL_ADDRESS:"Faisal.AlQurashi@cloudsolutions.com.sa",
SearchMonth:"January",
SearchYear:2021
// getSuborinatesAttStatus(){
// const request = {
// // SearchMonth:"January",
// SearchYear:Number,
};
// this.myTeamService.getSuborinatesAttStatus().subscribe((result: any) =>
this.myTeamService.getSuborinatesAttStatus(request, ()=> {} , this.ts.trPK('general', 'retry')).subscribe((result)=>
{
this.handleRespondSuborinatesAttStatusResult(result);
// };
// // this.myTeamService.getSuborinatesAttStatus().subscribe((result: any) =>
// this.myTeamService.getSuborinatesAttStatus(request, ()=> {} , this.ts.trPK('general', 'retry')).subscribe((result)=>
// {
// this.handleRespondSuborinatesAttStatusResult(result);
})
}
// })
// }
handleRespondSuborinatesAttStatusResult(result){
// this.EmpTotal = result.GetSubordinatesAttdStatusList.length;
this.EmpTotal = result.GetSubordinatesAttdStatusList[0].NUMBER_OF_EMPLOYEES;
console.log("total no "+this.EmpTotal)
}
// handleRespondSuborinatesAttStatusResult(result){
// // this.EmpTotal = result.GetSubordinatesAttdStatusList.length;
// this.EmpTotal = result.GetSubordinatesAttdStatusList[0].NUMBER_OF_EMPLOYEES;
// console.log("total no "+this.EmpTotal)
// }
}

@ -7,7 +7,7 @@ import { AuthenticationService } from "src/app/hmg-common/services/authenticatio
export class MyTeamService {
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 getSuborinateStatus = 'Services/ERP.svc/REST/GET_SUBORDINATES_ATTD_STATUS';
constructor(
@ -20,11 +20,13 @@ export class MyTeamService {
return this.con.post(MyTeamService.getMyTeam, request, onError, errorLabel);
}
public getSuborinatesAttStatus(absence: any, onError?: any, errorLabel?: string){
const request = absence;
this.authService.authenticateRequest(request);
return this.con.post(MyTeamService.getSuborinateStatus, request, onError, errorLabel);
}
// public getSuborinatesAttStatus(absence: any, onError?: any, errorLabel?: string){
// const request = absence;
// this.authService.authenticateRequest(request);
// console.log("________________________________");
// console.log(request);
// return this.con.post(MyTeamService.getSuborinateStatus, request, onError, errorLabel);
// }

@ -59,7 +59,13 @@ export class WorklistService {
var req: any = {};
req['Mohemm_ChangeReplacementsInputList'] = request;
this.authService.authenticateRequest(req);
console.log(req);
return this.api.post(WorklistService.saveFavorite, req, onError, errorLabel);
}
}
public getFavoriteMyTeam(req: any, onError?: any, errorLabel?: string): Observable<any> {
this.authService.authenticateRequest(req);
return this.api.post(WorklistService.getFavorite, req, onError, errorLabel);
}
}

@ -1,11 +1,11 @@
<ion-content>
<div class="head-title">
<ion-toolbar class="header-toolbar">
<ion-buttons slot="start">
<ion-back-button color="light" class="btnBack" defaultHref="/home"></ion-back-button>
</ion-buttons>
<ion-title color="light" >{{ts.trPK('itemforsale','offersdiscount')}}</ion-title>
</ion-toolbar>
<app-generic-header
showImage="false"
showBack="true"
[headerText]="'itemforsale,offersdiscount' | translate">
</app-generic-header>
</div>
<div class="header"></div>
<div class="bottom"></div>
@ -33,12 +33,13 @@
<div class="container-icon" *ngIf="categories.length>0">
<div class="box-icon" *ngFor="let key of categories">
<div class="sale-icon" (click)="filterOffers(key)" [ngClass]="{'active':activeClass==key }">
<div class="sale-icon" (click)="filterOffers(key)" [ngClass]="{'active':activeClass==key.name }">
<div class="top">
<!-- <ion-icon name="images"></ion-icon> -->
<img [src]="key.icon" />
</div>
<div class="bottom-icon">
<p>{{key}}</p>
<p>{{key.name}}</p>
</div>
</div>
</div>
@ -65,7 +66,7 @@
<ion-col size="10" *ngIf="checkDate(item['End Date']) ==true">
<p class="offer-valid">{{ts.trPK('general','offer-valid')}}</p>
</ion-col>
<ion-col size="10">
<ion-col size="10" *ngIf="checkDate(item['End Date']) ==false">
<p class="offer-valid"> {{ts.trPK('general','expired')}}</p>
</ion-col>
<ion-col size="2" *ngIf="checkDate(item['End Date']) ==false">

@ -42,9 +42,9 @@
}
.sale-icon{
box-shadow: 1px 1px 5px 1px #cccc;
padding: 5px;
margin: 5px;
border-radius: 10px;
padding: 0px;
margin: 3px;
border-radius: 8px;
background: #fff;
position: relative;
}
@ -52,16 +52,18 @@
font-size: 25px;
}
.sale-icon p{
margin-top:5px;
margin-top: 5px;
margin-bottom: 5px;
text-transform: capitalize;
font-size: 15px;
font-size: 17px;
text-align: center;
}
.bottom-icon{
text-overflow: clip;
white-space: normal;
font-size: 14px;
padding: 4px;
padding:1px;
font-weight: bold;
}
ion-card{
@ -140,12 +142,21 @@ margin: 5px;
top: -3px;
padding: 0px;
background: #3cc353;
padding: 3px;
padding:2px 3px 4px 3px;
border-radius: 60%;
font-size: 10px;
color: #fff;
content: '';
width: 12px;
height: 12px;
text-align: center;
}
ion-content{
--background:#F5F5F5 ;
}
.top{
text-align: center;
}
.top img{
height:40px
}

@ -47,20 +47,36 @@ export class HomeComponent implements AfterViewInit {
if (data['data']) {
var parseJSON = data['data'];
var offers = JSON.parse(parseJSON)
this.categoriesObj = this.groupBy(offers, 'categoryName');
this.categories = Object.keys(this.categoriesObj);
this.categoriesObj = this.groupBy(offers, TranslatorService.getCurrentDirection() == 'ltr' ? 'categoryName_en' : 'categoryName_ar');
// = Object.keys(this.categoriesObj);
for (var x in this.categoriesObj) {
for (var y in offers) {
if (x == offers[y].categoryName_en && this.categories.filter(item => item.name.includes(x)) == false) {
this.categories.push({
name: x,
icon: offers[y].icon
})
}
}
}
this.filterOffers(this.categories[0]);
}
}
groupBy(xs, key) {
return xs.reduce((rv, x) => {
(rv[x[key]] = rv[x[key]] || []).push(x);
return rv;
(rv[x[key.trim()]] = rv[x[key]] || []).push(x);
return rv
}, {});
};
filterOffers(key) {
this.activeClass = key;
this.offersData = this.categoriesObj[key];
this.activeClass = key.name;
this.offersData = this.categoriesObj[key.name];
this.tempSearch = JSON.parse(JSON.stringify(this.offersData));
}
checkDate(date) {

@ -1,11 +1,10 @@
<ion-content>
<div class="head-title">
<ion-toolbar class="header-toolbar">
<ion-buttons slot="start">
<ion-back-button color="light" class="btnBack" defaultHref="/home"></ion-back-button>
</ion-buttons>
<ion-title color="light" >{{ts.trPK('itemforsale','offersdiscount')}}</ion-title>
</ion-toolbar>
<app-generic-header
showImage="false"
showBack="true"
[headerText]="'itemforsale,offersdiscount' | translate">
</app-generic-header>
</div>
<div class="header"></div>
<div class="bottom"></div>
@ -68,7 +67,7 @@
<ion-col size="10" *ngIf="checkDate(item['End Date']) ==true">
<p class="offer-valid">{{ts.trPK('general','offer-valid')}}</p>
</ion-col>
<ion-col size="10">
<ion-col size="10" *ngIf="checkDate(item['End Date']) ==false">
<p class="offer-valid"> {{ts.trPK('general','expired')}}</p>
</ion-col>
<ion-col size="2" *ngIf="checkDate(item['End Date']) ==false">

@ -1175,6 +1175,10 @@
"en": "Topic",
"ar": "العنوان"
},
"actionBy": {
"en": "Action By :",
"ar": " : بواسطة"
},
"postedDate": {
"en": "Posted on",
"ar": "نشر في"
@ -1205,7 +1209,7 @@
},
"HR-Request": {
"en": "HR Request",
"ar": "HR طلبات ال "
"ar": "HR طلبات"
},
"performance-evaluation": {
"en": "Performance Evaluation",
@ -1635,6 +1639,14 @@
"en": "Absence list",
"ar": "قائمة الإجازات"
},
"AccrualUsed": {
"en": "Accrual Used",
"ar": "الأستحقاق المستخدم"
},
"PreviousYears": {
"en": "Previous Years",
"ar": "السنوات السابقه"
},
"accrualBalances": {
"en": "Accrual Balances",
"ar": "رصيد حساب المستحقات"

Loading…
Cancel
Save