fixed sfh issues

MOHEMM-PHASE-2-SFH
umasoodch 3 years ago
parent 63dadc3d81
commit a4bc173c7b

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 KiB

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 952 B

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.4 KiB

After

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.6 KiB

After

Width:  |  Height:  |  Size: 9.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.2 KiB

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.3 KiB

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 7.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 61 KiB

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 93 KiB

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 129 KiB

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.3 KiB

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 7.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 61 KiB

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 89 KiB

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 123 KiB

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 75 KiB

After

Width:  |  Height:  |  Size: 121 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 204 KiB

After

Width:  |  Height:  |  Size: 188 KiB

@ -263,8 +263,8 @@ export class HomeComponent implements OnInit {
this.balance = result.GetAccrualBalancesList;
}
if (this.balance) {
this.accrualNet = this.balance[1].ACCRUAL_NET_ENTITLEMENT;
this.accrualUsed = this.balance[1].ACCRUAL_USED_ENTITLEMENT;
this.accrualNet = this.balance[0].ACCRUAL_NET_ENTITLEMENT;
this.accrualUsed = this.balance[0].ACCRUAL_USED_ENTITLEMENT;
// this.accrualYearly = this.balance[0].ACCRUAL_YEARLY_ENTITLEMENT;
// this.totalnumber= this.accrualNet + this.accrualUsed + this.accrualYearly;
this.totalnumber = this.accrualNet + this.accrualUsed;

@ -99,7 +99,7 @@
</ion-item> -->
<!-- <ion-item (click)="openChangePassword()"> -->
<!-- <ion-item (click)="openChangePassword()">
<ion-item (click)="openChangePassword()">
<ion-thumbnail slot="start" class="menu-thumb">
<img style= "height: 25px !important;" src="../assets/imgs/lock_icon.png" item-left>
</ion-thumbnail>
@ -107,7 +107,7 @@
{{ts.trPK('login','changepassword')}}
<ion-badge class="start-badge main-badge" slot="end" color="danger">{{notBadge}}</ion-badge>
</ion-label>
</ion-item> -->
</ion-item>
<ion-item (click)="openDigitalId()">
<ion-thumbnail slot="start" class="menu-thumb">
@ -136,9 +136,20 @@
</div> -->
<div class="" style="text-align:center">
<img src="../assets/imgs/SFH-EN.png" class="CompanyImg logoImg">
<!-- <p class="companyTxt">{{companyDesc}}</p> -->
</div>
<div class="menuFooter" >
<div> <img src="../assets/imgs/CSLogo.png" class="CompanyImg" ></div>
<p class="companyTxt">{{companyDesc}}</p>
</div>
</ion-content>
<ion-footer style="padding: 0px;">
<!-- <ion-footer style="padding: 0px;">
<ion-row>
<div class="footer-container">
<ion-col class="colPad" size="9" style="visibility: hidden">
@ -154,7 +165,7 @@
<div class="menuFooter" >
<p class="companyTxt">{{companyDesc}}</p>
</div>
</ion-footer>
</ion-footer> -->
</ion-menu>
<ion-menu [swipeGesture]="false" side='end' *ngIf="direction ==='rtl'">
@ -252,7 +263,7 @@
{{ts.trPK('myTeam','help')}}
</ion-label>
</ion-item> -->
<!-- <ion-item (click)="openChangePassword()">
<ion-item (click)="openChangePassword()">
<ion-thumbnail slot="start" class="menu-thumb">
<img style= "height: 25px !important;" src="../assets/imgs/lock_icon.png" item-left>
</ion-thumbnail>
@ -260,13 +271,8 @@
{{ts.trPK('login','changepassword')}}
<ion-badge [ngClass]=" direction === 'rtl' ? 'end-badge' : 'start-badge'" slot="end" color="danger" class="main-badge">{{notBadge}}</ion-badge>
</ion-label> -->
<!-- <button class="menu-item" ion-item menuClose ion-item (click)="goToWorkListPage()" >
</button> -->
<!-- </ion-item> -->
</ion-label>
</ion-item>
<ion-item (click)="openDigitalId()">
<ion-thumbnail slot="start" class="menu-thumb">
@ -315,9 +321,18 @@
<!-- <p class="companyTxt">{{companyDesc}}</p> -->
<!-- </div> -->
<div class="" style="text-align:center">
<img src="../assets/imgs/SFH-AR.png" class="CompanyImg logoImg">
<!-- <p class="companyTxt">{{companyDesc}}</p> -->
</div>
<div class="menuFooter" >
<div> <img src="../assets/imgs/CSLogo.png" class="CompanyImg" ></div>
<p class="companyTxt">{{companyDesc}}</p>
</div>
</ion-content>
<ion-footer style="padding: 0px;" dir="ltr">
<!-- <ion-footer style="padding: 0px;" dir="ltr">
<ion-row>
<div class="footer-container">
<ion-col class="colPad" size="9" style="visibility: hidden">
@ -333,7 +348,7 @@
<div class="menuFooter" >
<p class="companyTxt">{{companyDesc}}</p>
</div>
</ion-footer>
</ion-footer> -->
</ion-menu>
<ion-router-outlet main></ion-router-outlet>
</ion-split-pane>

@ -81,9 +81,9 @@ hr {
.logout {
background-color: #99B8C6;
background-color: #c2a16b;
border: none;
color: #004D71;
color: #000000;
text-align: center;
text-decoration: none;
display: inline-block;
@ -99,9 +99,9 @@ hr {
}
.logout-ar {
background-color: #99B8C6;
background-color: #c2a16b;
border: none;
color: #004D71;
color: #000000;
text-align: center;
text-decoration: none;
display: inline-block;
@ -293,7 +293,7 @@ button.menu-item.item.item-block.item-ios {
.TxtPlace {
font-size: 20px;
color: #004D71;
color: #000000;
font-weight: bold;
text-overflow: ellipsis;
overflow: hidden;
@ -305,7 +305,7 @@ button.menu-item.item.item-block.item-ios {
.TxtPlaces {
font-size: 14px;
color: #004D71;
color: #000000;
font-weight: bold;
// font-family: 'Inter' !important;
text-overflow: ellipsis;
@ -321,8 +321,6 @@ button.menu-item.item.item-block.item-ios {
text-align: center;
margin: auto;
width: 100%;
position: absolute;
top: 40px
}
@ -332,10 +330,17 @@ button.menu-item.item.item-block.item-ios {
margin: auto;
}
.menuFooter .CompanyImg {
width: 65%;
height: 60%;
margin-bottom: -21px;
// .menuFooter .CompanyImg {
// width: 65%;
// height: 60%;
// margin-bottom: -21px;
// }
.menuFooter .CompanyImg{
width: 80%;
height: 80%;
margin-bottom: -21px;
}
.logoImgWithMyTeam {
@ -351,7 +356,7 @@ button.menu-item.item.item-block.item-ios {
.companyTxt {
font-size: 12px;
color: #004D71;
color: #000000;
text-align: center;
font-family: 'Inter' !important;
}
@ -363,13 +368,13 @@ ion-thumbnail.menu-thumb {
}
.changepassword {
color: black !important;
color: #85836f !important;
font-weight: bolder !important;
}
.profile {
color: #5C6F79 !important;
color: #85836f !important;
font-weight: bolder !important;
}

@ -29,7 +29,7 @@ export class AppComponent implements OnInit {
menuSide = 'left';
notBadge: number;
companyUrl = '../assets/imgs/CSLogo.png';
companyDesc = '';
companyDesc = 'Powered By Cloud Solutions';
direction = 'ltr';
User_Job_name: string;
public logoutFlage: any = false;
@ -156,7 +156,7 @@ export class AppComponent implements OnInit {
localStorage.setItem("digitalIDUser", JSON.stringify(user));
this.digitalIDUser = user//JSON.stringify(user);
this.companyUrl = user.CompanyImageURL ? user.CompanyImageURL : '../assets/imgs/CSLogo.png';
this.companyDesc = user.CompanyImageDescription ? user.CompanyImageDescription : '';
this.companyDesc = user.CompanyImageDescription ? user.CompanyImageDescription : 'Powered By Cloud Solutions';
this.User_name_Emp = user.EMPLOYEE_DISPLAY_NAME;
@ -205,9 +205,10 @@ export class AppComponent implements OnInit {
this.user_image = user.EMPLOYEE_IMAGE ? 'data:image/png;base64,' + user.EMPLOYEE_IMAGE : '../assets/imgs/profile.png';
}
// this.User_Job_name = user.JOB_NAME;
let jobTitle = user.POSITION_NAME;
// let jobTitle = user.POSITION_NAME;
// if (jobTitle && jobTitle.length > 1) {
this.User_Job_name = jobTitle;
// this.User_Job_name = jobTitle;
this.User_Job_name = user.JOB_NAME;
// }
//erm channel
// if (!CommonService.SKIP)

@ -8,16 +8,16 @@ import { StatusBar } from '@ionic-native/status-bar/ngx';
import { AppComponent } from './app.component';
import { AppRoutingModule } from './app-routing.module';
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
// import { ZBar } from '@ionic-native/zbar/ngx';
// import { Geolocation } from '@ionic-native/geolocation/ngx';
import { ZBar } from '@ionic-native/zbar/ngx';
import { Geolocation } from '@ionic-native/geolocation/ngx';
import {Camera, CameraOptions, PictureSourceType} from '@ionic-native/Camera/ngx';
import { FilePath } from '@ionic-native/file-path/ngx';
import { File } from '@ionic-native/file/ngx';
import { Base64 } from '@ionic-native/base64/ngx';
import { FirebaseX } from '@ionic-native/firebase-x/ngx';
import { NgCalendarModule } from 'ionic2-calendar';
// import { NFC, Ndef} from "@ionic-native/nfc/ngx"
// import { WifiWizard2 } from "@ionic-native/wifi-wizard-2/ngx";
import { NFC, Ndef} from "@ionic-native/nfc/ngx"
import { WifiWizard2 } from "@ionic-native/wifi-wizard-2/ngx";
import { DigitalIdComponent } from './authentication/digital-id/digital-id.component';
import { BusinessCardComponent } from './authentication/business-card/business-card.component';
import { AppUpdateComponent } from './authentication/app-update/app-update.component';
@ -38,17 +38,17 @@ import { AppUpdateComponent } from './authentication/app-update/app-update.compo
providers: [
StatusBar,
SplashScreen,
// ZBar,
// Geolocation,
ZBar,
Geolocation,
Camera,
File,
FilePath,
Base64,
FirebaseX,
{ provide: RouteReuseStrategy, useClass: IonicRouteStrategy },
// NFC,
// Ndef,
// WifiWizard2
NFC,
Ndef,
WifiWizard2
],
bootstrap: [AppComponent]
})

@ -1,6 +1,6 @@
import { Component, OnInit } from '@angular/core';
// import { Geolocation } from '@ionic-native/geolocation/ngx';
// import { ZBar, ZBarOptions } from '@ionic-native/zbar/ngx';
import { Geolocation } from '@ionic-native/geolocation/ngx';
import { ZBar, ZBarOptions } from '@ionic-native/zbar/ngx';
import { TranslatorService } from 'src/app/hmg-common/services/translator/translator.service';

@ -376,7 +376,7 @@ export class ConfirmLoginComponent implements OnInit {
request.activationCode = '';
request.P_USER_NAME = data.P_USER_NAME;
request.MobileNumber = data.MobileNumber;
request.IsDeviceNFC = this.isNFCAvailable;
request.IsDeviceNFC = true;
this.authService.checkSMS(request, () => { }, this.ts.trPK('general', 'ok'))
.subscribe((result: SMSCheckResponse) => {
if (this.cs.validResponse(result)) {

@ -1,6 +1,6 @@
.button-login{
--background: #c1272d !important;
background: #c1272d !important;
--background: #34b9c1 !important;
background: #34b9c1 !important;
white-space: normal;
color: var(--light);
text-transform: capitalize;

@ -321,7 +321,7 @@ img.centerDiv {
.companyTxt {
font-size: 12px;
color: #004D71;
color: #000000;
text-align: center;
font-family: 'Inter' !important;
}

@ -415,7 +415,7 @@ export class SmsPageComponent implements OnInit {
request.MobileNumber = data.MobileNumber;
request.IsDeviceNFC = this.isNFCAvailable;
request.IsDeviceNFC = true;
request.P_PASSWORD = localStorage.getItem('password');

@ -348,6 +348,6 @@ z-index: 1;
.terms {
text-align: center;
color: #004D71;
color: #000000;
font-weight: bold;
}

@ -99,7 +99,7 @@ import { ConfirmLoginComponent } from '../authentication/confirm-login/confirm-l
import { WelcomeComponent } from './ui/welcome-login/welcome.component'
import { FabButtonComponent } from './ui/fab-button/fab-button.component'
import { AttendScanService } from './services/attend-services/attend-scan.service';
// import { BarcodeScanner } from '@ionic-native/barcode-scanner/ngx';
import { BarcodeScanner } from '@ionic-native/barcode-scanner/ngx';
import { NgCircleProgressModule } from 'ng-circle-progress';
import { CardFilterComponent } from './ui/card-filter/card-filter.component';
import { EmployeeInformationComponent } from './ui/employee-information/employee-information.component';
@ -109,7 +109,7 @@ import { NgCalendarModule } from 'ionic2-calendar';
import { DateInfoModalComponent } from './ui/circle-calendar/date-info-modal/date-info-modal.component';
import { ChartModule } from 'primeng/chart';
import { GenericHeaderComponent } from './ui/generic-header/generic-header.component';
// import { BackgroundGeolocation } from '@ionic-native/background-geolocation/ngx';
import { BackgroundGeolocation } from '@ionic-native/background-geolocation/ngx';
import { AttendanceOptionsComponent } from '../home/attendance-options/attendance-options.component';
import { CardCalendarComponent } from './ui/card-calendar/card-calendar.component';
import { WorklistSettingComponent } from '../notification/worklist-setting/worklist-setting.component';
@ -318,8 +318,8 @@ import { SanitizeHtmlPipe } from '../itemforsale/services/domsafe';
File,
MenuService,
OpenNativeSettings,
// BarcodeScanner,
// BackgroundGeolocation,
BarcodeScanner,
BackgroundGeolocation,
FileOpener,
FilePath,
FileChooser,

@ -1,9 +1,9 @@
import { Injectable } from "@angular/core";
// import { BackgroundGeolocation } from '@ionic-native/background-geolocation/ngx';
import { BackgroundGeolocation } from '@ionic-native/background-geolocation/ngx';
import { CommonService } from "src/app/hmg-common/services/common/common.service";
import { TranslatorService } from "src/app/hmg-common/services/translator/translator.service";
import { DevicePermissionsService } from 'src/app/hmg-common/services/device-permissions/device-permissions.service';
// import { Geolocation } from '@ionic-native/geolocation/ngx';
import { Geolocation } from '@ionic-native/geolocation/ngx';
import { Platform } from "@ionic/angular";
declare const cordova: any;
@ -13,10 +13,10 @@ declare const cordova: any;
})
export class HMGUtils {
constructor(
// public backgroundGeolocation: BackgroundGeolocation,
public backgroundGeolocation: BackgroundGeolocation,
public common: CommonService,
public ts: TranslatorService,
// private geolocation: Geolocation,
private geolocation: Geolocation,
public platform: Platform,
public devicePermissionsService:DevicePermissionsService,
) { }
@ -26,11 +26,11 @@ export class HMGUtils {
this.devicePermissionsService.requestLocationAutherization().then( async granted => {
if(granted == true) {
if (this.platform.is('android')) {
if ((await this.isHuaweiDevice())) {
this.getHMSLocation(callBack);
} else {
// if ((await this.isHuaweiDevice())) {
// this.getHMSLocation(callBack);
// } else {
this.getGMSLocation(callBack);
}
// }
} else {
this.getIOSLocation(callBack);
}
@ -98,32 +98,32 @@ export class HMGUtils {
}
private getGMSLocation(callBack: Function) {
// this.backgroundGeolocation.getCurrentLocation({ timeout: 10000, enableHighAccuracy: true, maximumAge: 3000 }).then((resp) => {
// if (resp && (resp.latitude && resp.longitude)) {
// const isFakeLocation = resp.isFromMockProvider || resp.mockLocationsEnabled;
// const lat = resp.latitude;
// const long = resp.longitude;
// callBack({"latitude":lat, "longitude":long, "isfake":isFakeLocation})
// } else {
// this.common.presentAlert(this.ts.trPK('home', 'position-error'));
// }
// }, (error) => {
// this.common.presentAlert(this.ts.trPK('home', 'position-error'));
// });
this.backgroundGeolocation.getCurrentLocation({ timeout: 10000, enableHighAccuracy: true, maximumAge: 3000 }).then((resp) => {
if (resp && (resp.latitude && resp.longitude)) {
const isFakeLocation = resp.isFromMockProvider || resp.mockLocationsEnabled;
const lat = resp.latitude;
const long = resp.longitude;
callBack({"latitude":lat, "longitude":long, "isfake":isFakeLocation})
} else {
this.common.presentAlert(this.ts.trPK('home', 'position-error'));
}
}, (error) => {
this.common.presentAlert(this.ts.trPK('home', 'position-error'));
});
}
private getIOSLocation(callBack: Function) {
// this.geolocation.getCurrentPosition({ maximumAge: 3000, timeout: 10000, enableHighAccuracy: true }).then(resp => {
// if (resp && resp.coords.latitude && resp.coords.longitude) {
// const lat = resp.coords.latitude;
// const long = resp.coords.longitude;
// callBack({"latitude":lat, "longitude":long, "isfake":false})
// } else {
// this.common.presentAlert(this.ts.trPK('home', 'position-error'));
// }
// }).catch(error => {
// this.common.presentAlert(this.ts.trPK('home', 'position-error'));
// });
this.geolocation.getCurrentPosition({ maximumAge: 3000, timeout: 10000, enableHighAccuracy: true }).then(resp => {
if (resp && resp.coords.latitude && resp.coords.longitude) {
const lat = resp.coords.latitude;
const long = resp.coords.longitude;
callBack({"latitude":lat, "longitude":long, "isfake":false})
} else {
this.common.presentAlert(this.ts.trPK('home', 'position-error'));
}
}).catch(error => {
this.common.presentAlert(this.ts.trPK('home', 'position-error'));
});
}

@ -2,10 +2,10 @@ import { Injectable } from '@angular/core';
// import { DevicePermissionsService } from '../device-permissions/device-permissions.service';
import { DomSanitizer } from '@angular/platform-browser';
import { SharedDataService } from '../shared-data-service/shared-data.service';
// import { BarcodeScanner } from '@ionic-native/barcode-scanner/ngx';
import { BarcodeScanner } from '@ionic-native/barcode-scanner/ngx';
import { AttendanceService } from 'src/app/home/services/attendance.services';
// import { ZBar } from '@ionic-native/zbar/ngx';
// import { Geolocation } from '@ionic-native/geolocation/ngx';
import { ZBar } from '@ionic-native/zbar/ngx';
import { Geolocation } from '@ionic-native/geolocation/ngx';
import { attendanceSwipeScannerRequest } from 'src/app/home/models/attendanceSwipe.Request';
import { AuthenticatedUser } from '../authentication/models/authenticated-user';
import { CommonService } from '../common/common.service';
@ -14,7 +14,7 @@ import { Response } from 'src/app/hmg-common/services/models/response';
import { Camera, CameraOptions, PictureSourceType} from '@ionic-native/Camera/ngx';
import { DevicePermissionsService } from '../../services/device-permissions/device-permissions.service';
import { Device } from '@ionic-native/device/ngx';
// import { BackgroundGeolocation } from '@ionic-native/background-geolocation/ngx';
import { BackgroundGeolocation } from '@ionic-native/background-geolocation/ngx';
import { Platform } from '@ionic/angular';
import { ModalController } from '@ionic/angular';
import { FirebaseX } from '@ionic-native/firebase-x/ngx';
@ -37,17 +37,17 @@ export class AttendScanService {
public collection = 'CS';
constructor(private device: Device,
// private zbar: ZBar,
// private geolocation: Geolocation,
private zbar: ZBar,
private geolocation: Geolocation,
private attendance_service: AttendanceService,
// private barcodeScanner: BarcodeScanner,
private barcodeScanner: BarcodeScanner,
private cameraController: Camera,
public sharedData: SharedDataService,
private sanitizer: DomSanitizer,
private permissions: DevicePermissionsService,
public common: CommonService,
public ts: TranslatorService,
// public backgroundGeolocation: BackgroundGeolocation,
public backgroundGeolocation: BackgroundGeolocation,
public platform: Platform,
public modalController: ModalController,
public firebasex: FirebaseX,
@ -135,22 +135,22 @@ export class AttendScanService {
}
scanCode() {
// this.barcodeScanner
// .scan()
// .then(barcodeData => {
// if (!barcodeData.cancelled) {
// this.scannedResult = barcodeData;
// this.deviceID = this.device.uuid;
// if (this.isFakeLocationUsed) {
// this.fakeSwipeAttendance();
// } else {
// this.swipeAttendance();
// }
// }
// })
// .catch(err => {
// console.log('Error', err);
// });
this.barcodeScanner
.scan()
.then(barcodeData => {
if (!barcodeData.cancelled) {
this.scannedResult = barcodeData;
this.deviceID = this.device.uuid;
if (this.isFakeLocationUsed) {
this.fakeSwipeAttendance();
} else {
this.swipeAttendance();
}
}
})
.catch(err => {
console.log('Error', err);
});
}
fakeSwipeAttendance() {

@ -1213,6 +1213,9 @@ export class CommonService {
public openEITPage() {
this.nav.navigateForward(['/eit/homepage']);
}
public openSITPage() {
this.nav.navigateForward(['/sit/homepage']);
}
public openMyTeamPage() {
this.nav.navigateForward(['/my-team/home']);
}

@ -30,6 +30,10 @@ export class ConnectorService {
// public static host = 'https://uat.hmgwebservices.com/';
// public static host = 'https://hmgwebservices.com/';
public static host = 'https://erpuat.sfh.med.sa/'; //UAR SFHP
// public static host = 'http://10.201.204.124:6085/'; //UAR SFHP
// public static host = 'https://uat.hmgwebservices.com/';

@ -119,7 +119,7 @@
background-color: #db5b6a !important;
}
.bt{
background-color: #004D71 !important;
background-color: #000000 !important;
}
.holiday{
background-color: #43a6a0 !important;

@ -21,7 +21,7 @@
.iconBox img {
margin: 0px auto 10px !important;
display: block;
width: 35px;
width: 30px;
height: 33px;
// max-width: 35%;
}
@ -35,7 +35,7 @@
font-size: 8px;
text-align: center;
margin-top: 10px;
color: #004D71;
color: #000000;
font-weight: bold;
letter-spacing: 0px;
}

@ -5,8 +5,8 @@
<div class="iconBox" *ngIf="link === '0'">
<ion-icon class="iconFab" name="finger-print"></ion-icon>
</div>
<div class="titleBox" [ngStyle]="link === '0' ? {'margin-left': '5px'} : {}">
<div class="titleBox">
<span [ngStyle]="link === '4' ? {'visibility': 'hidden'} : {}">{{statsValue}}</span>
<p class="pClass" [ngStyle]="link === '0' ? {'width': '105%', 'margin-top': '12px'} : {}">{{returnTitle(title)}}</p>
<p class="pClass">{{returnTitle(title)}}</p>
</div>
</div>

@ -36,7 +36,7 @@
span {
font-size: 25px;
font-weight: bold;
color: #004D71;
color: #000000;
text-align: center;
display: block;
}
@ -47,7 +47,7 @@ ion-app[dir="rtl"] .titleBox {
}
.pClass {
// color: #004D71;
// color: #000000;
// width: 85%;
// margin-top: 5px;
// font-weight: bold;
@ -56,7 +56,7 @@ ion-app[dir="rtl"] .titleBox {
// font-size: 15px !important;
color: #004D71;
color: #000000;
width: 100%;
margin-top: 5px;
font-weight: bold;
@ -67,7 +67,7 @@ ion-app[dir="rtl"] .titleBox {
}
.iconFab {
margin-left: -20px;
// margin-left: -20px;
margin-top: 10px;
width: 100px;
height: 70px;

@ -9,10 +9,15 @@
<ion-grid class="main-container contentBg">
<ion-row *ngIf="showStaticServices" class="slideFullWidth">
<ion-slides [options]="slideOptsOne" class="padding-slide slide">
<ion-slide>
<app-stats-button
[title]="ts.trPK('attendance-tracking', 'title')"
link="0"
show="true"
(click)="openStatsButton('0')">
</app-stats-button>
</ion-slide>
<ion-slide *ngFor="let button of statsButtons; let i=index;">
<!-- <div class="loader" *ngIf="i === 1 && showLoader">
<img src="../assets/icon/progress-loading.gif" />
</div> -->
<app-stats-button
[title]="button.title"
[statsValue]="button.statsValue"

@ -43,7 +43,7 @@ ion-title {
ion-label {
display: block;
color: #004D71 !important;
color: #000000 !important;
font-size: 16px;
font-weight: bold;
letter-spacing: 0.16px;

@ -45,6 +45,8 @@ import { BusinessCardComponent } from "src/app/authentication/business-card/busi
import * as moment from "moment";
import { count } from 'console';
import { HomeComponent } from "src/app/notification/home/home.component";
import { TerminationServiceService } from 'src/app/termination/service/termination-service.service';
@Component({
selector: 'app-home',
templateUrl: './home.page.html',
@ -99,21 +101,21 @@ export class HomePage implements OnInit {
icon: 'assets/icon/new-design/leave_balance.png',
link: '3',
show: true,
},
{
title: this.ts.trPK('home', 'business-balance'),
statsValue: 0,
icon: 'assets/icon/new-design/BusinessTrip.png',
link: '5',
show: true,
},
{
title: this.ts.trPK('eit', 'my-reports'),
statsValue: 0,
icon: 'assets/icon/new-design/ticket_balance.png',
link: '4',
show: true
}
// {
// title: this.ts.trPK('home', 'business-balance'),
// statsValue: 0,
// icon: 'assets/icon/new-design/BusinessTrip.png',
// link: '5',
// show: true,
// },
// {
// title: this.ts.trPK('eit', 'my-reports'),
// statsValue: 0,
// icon: 'assets/icon/new-design/ticket_balance.png',
// link: '4',
// show: true
// }
];
public slideOptsOne = {};
@ -528,7 +530,7 @@ export class HomePage implements OnInit {
if (result.GetMenuEntriesList[i].FUNCTION_NAME == 'HMG_TKT_NEW_EIT_SS') {
this.ticketRequestObject = result.GetMenuEntriesList[i];
// tslint:disable-next-line: triple-equals
} else if (result.GetMenuEntriesList[i].FUNCTION_NAME == 'XXX_HR_EIT_LOA_CREATE_SS') {
} else if (result.GetMenuEntriesList[i].FUNCTION_NAME == 'HR_LOA_SS') {
this.leaveRequestObject = result.GetMenuEntriesList[i];
// tslint:disable-next-line: triple-equals
} else if (result.GetMenuEntriesList[i].FUNCTION_NAME == 'HMG_OTL_MISSING_SWIPE_EIT_SS') {
@ -815,7 +817,7 @@ export class HomePage implements OnInit {
selMenu.GetMenuEntriesList,
'menuEntries'
);
this.common.openEITPage();
this.common.openSITPage();
} else if (subMenu.REQUEST_TYPE === 'BASIC_DETAILS') {
this.common.openProfile('basicDetails');
} else if (subMenu.REQUEST_TYPE === 'ADDRESS' || subMenu.REQUEST_TYPE === 'PHONE_NUMBERS') {
@ -827,6 +829,10 @@ export class HomePage implements OnInit {
} else if (subMenu.REQUEST_TYPE === 'CCP') {
this.common.sharedService.setSharedData(subMenu, MenuResponse.SELECTED_MENU);
this.common.openConcurrentReport(true);
} else if (subMenu.FUNCTION_NAME == 'HR_TERM_SS' || subMenu.FUNCTION_NAME == 'HR_TERM_EMP_SS') {
this.common.sharedService.setSharedData(subMenu, TerminationServiceService.TERMINATION_PAGE);
this.common.openTermination();
}
if (subMenu.REQUEST_TYPE === 'TIME_CARD') {
this.common.openTimeCardPage();
@ -851,7 +857,7 @@ export class HomePage implements OnInit {
let totalOldAvailable = 0;
this.accrualBalancesList = result.GetAccrualBalancesList;
for (const accrualBalance of result.GetAccrualBalancesList) {
if (accrualBalance.ACCURAL_PLAN_NAME === 'Annual Vacation Accrual' || accrualBalance.ACCURAL_PLAN_NAME == " خطة استحقاق الاجازة الاعتيادية") {
if (accrualBalance.ACCURAL_PLAN_NAME === 'SFHP Annual Leave Plan' || accrualBalance.ACCURAL_PLAN_NAME == " خطة استحقاق الاجازة الاعتيادية") {
totalAccuralAvailable = accrualBalance.ACCRUAL_NET_ENTITLEMENT === null ? 0 : Number(accrualBalance.ACCRUAL_NET_ENTITLEMENT.toFixed(2));
} else if (accrualBalance.ACCURAL_PLAN_NAME === 'Business Trip Accrual' || accrualBalance.ACCURAL_PLAN_NAME == "خطة استحقاق الإنتدابات") {
this.statsButtons[2].statsValue = accrualBalance.ACCRUAL_NET_ENTITLEMENT === null ? 0 : Number(accrualBalance.ACCRUAL_NET_ENTITLEMENT.toFixed(2));

@ -941,7 +941,7 @@ $actionBtnSize : 36px;
.name {
text-align: center;
letter-spacing: -0.84px;
color: #004D71;
color: #000000;
font-weight: bold;
opacity: 1;
font-family: 'Inter' !important;
@ -963,7 +963,7 @@ $actionBtnSize : 36px;
.subTitle {
text-align: center;
letter-spacing: -0.56px;
color: #004D71;
color: #000000;
font-weight: bold;
opacity: 1;
font-family: var(--fontFamilyPoppins-SemiBold, inherit);
@ -977,7 +977,7 @@ $actionBtnSize : 36px;
line-height: 20px;
font-size: 20px;
letter-spacing: -0.8px;
color: #004D71;
color: #000000;
font-weight: bold;
opacity: 1;
margin-top: 20px;
@ -998,10 +998,10 @@ $actionBtnSize : 36px;
.label2 {
text-align: left;
font-family: var(--fontFamilyPoppins-SemiBold, inherit);
line-height: 5px;
// line-height: 5px;
font-size: 16px;
letter-spacing: -0.64px;
color: #004D71;
color: #000000;
font-weight: bold;
opacity: 1;
}
@ -1012,7 +1012,7 @@ $actionBtnSize : 36px;
line-height: 20px;
font-size: 20px;
letter-spacing: -0.8px;
color: #004D71;
color: #000000;
font-weight: bold;
opacity: 1;
margin-top: 20px;
@ -1036,10 +1036,10 @@ $actionBtnSize : 36px;
.label2-ar {
text-align: right;
font-family: var(--fontFamilyPoppins-SemiBold, inherit);
line-height: 5px;
// line-height: 5px;
font-size: 18px;
letter-spacing: -0.64px;
color: #004D71;
color: #000000;
font-weight: bold;
opacity: 1;
padding: 1px 5px 1px 5px;

@ -334,7 +334,7 @@ ion-content {
width: 25px;
height: 25px;
border-radius: 100%;
background-color: #004D71;
background-color: #29B5BF;
z-index: 9;
margin-top: 25px;
text-align: center;
@ -361,7 +361,7 @@ ion-content {
width: 25px;
height: 25px;
border-radius: 100%;
background-color: #004D71;
background-color: #29B5BF;
z-index: 9;
margin-top: 25px;
text-align: center;

@ -429,7 +429,7 @@ ion-content {
border-radius: 50%;
width: 15px;
height: 15px;
background-color: #004D71;
background-color: #c2a16b;
top: 1px;
}
@ -448,7 +448,7 @@ ion-content {
border-radius: 50%;
width: 15px;
height: 15px;
background-color: #29B5BF;
background-color: #c2a16b;
top: 1px;
}

@ -27,6 +27,7 @@ import { UserItemTypes } from "../models/userItemTypeRequest";
@Injectable()
export class WorklistMainService {
public static getEITNotificationBody = "Services/ERP.svc/REST/GET_EIT_NOTIFICATION_BODY";
public static getSITNotificationBody = "Services/ERP.svc/REST/GET_SIT_NOTIFICATION_BODY";
public static getOPMNotificationBody = "Services/ERP.svc/REST/GET_OPM_NOTIFICATION_BODY";
public static getOLMNotificationBody = "Services/ERP.svc/REST/GET_OLM_NOTIFICATION_BODY";
public static getAbsenceNotificationBody = "Services/ERP.svc/REST/GET_ABSENCE_NOTIFICATION_BODY";
@ -185,6 +186,21 @@ export class WorklistMainService {
);
}
public getSITNotificationBody(
WorkListBodyRequest: any,
onError?: any,
errorLabel?: string
): Observable<EITNotificatonBodyResponse> {
const request = WorkListBodyRequest;
this.authService.authenticateRequest(request);
return this.api.post(
WorklistMainService.getSITNotificationBody,
request,
onError,
errorLabel
);
}
public getStampMSNotificationBody(
WorkListBodyRequest: any,
onError?: any,

@ -227,7 +227,6 @@ export class WorklistMainComponent implements OnInit {
);
console.log(this.selectedFilter);
if (this.selectedFilter === 'HRSSA' || this.selectedFilter === 'STAMP') {
console.log("ENAD")
this.arr_hr_req_only = [];
this.sortRequests();
}
@ -274,8 +273,8 @@ export class WorklistMainComponent implements OnInit {
this.getAttachmentNotification(this.WorkListAttachObj);
this.getActionHistory(this.WorkListActionHistoryObj);
if (this.getPassNotificationDetails.REQUEST_TYPE == "EIT") {
this.getEITNotificationDetails(this.WorkListBodyObj);
if (this.getPassNotificationDetails.REQUEST_TYPE == "SIT") {
this.getSITNotificationDetails(this.WorkListBodyObj);
} else if (this.getPassNotificationDetails.REQUEST_TYPE == "ABSENCE") {
this.getAbsenceNotificationDetails(this.WorkListBodyObj);
} else if (this.getPassNotificationDetails.REQUEST_TYPE == "PO") {
@ -307,6 +306,15 @@ export class WorklistMainComponent implements OnInit {
}
}
getSITNotificationDetails(notificationBodyObj) {
this.notificationBodyRes = []
this.worklistMainService
.getSITNotificationBody(notificationBodyObj)
.subscribe((result: EITNotificatonBodyResponse) => {
this.handleWorkListBodyResult(result, "SIT");
});
}
getStampMSNotification(notificationBodyObj) {
this.worklistMainService
.getStampMSNotificationBody(notificationBodyObj)

@ -3,153 +3,37 @@
[headerText]="'payslip,monthly-payslip' | translate">
</app-generic-header>
<ion-content class="colorBG">
<div class="header-div">
<!-- <ion-buttons slot="start">
<ion-back-button color="light" class="btnBack" defaultHref="/home"></ion-back-button>
</ion-buttons>
<p class="Title">{{ts.trPK('payslip','monthly-payslip')}}</p>
<div class="Imgdiv">
<img class="Imgsrc">
</div> -->
</div>
<!-- <ion-img class="profileImg" [src]="imageSrc"></ion-img> -->
<div class="">
<div >
<!-- <p style="position: absolute; left: 40%; bottom: 65%;">{{currentMonth}}</p> -->
<div class="header">
<!-- <ion-row *ngIf="direction == 'ltr'">-->
<ion-row >
<ion-col>
<button ion-button icon-start class="slidBtn" (click)="slidePrev(sliderOne,slideWithNav)">
<!-- <ion-icon [ngClass]=" payslipIndex === GetPayslipList.length-1 ? 'disabledArrow' : 'activeArrow'" ios="ios-arrow-dropleft-circle" md="md-arrow-dropleft-circle">
</ion-icon> -->
<ion-icon
[ngClass]=" {'disabledArrow-ar' : payslipIndex === GetPayslipList.length-1 && direction != 'en',
'disabledArrow' : payslipIndex === GetPayslipList.length-1 && direction === 'en' ,
'activeArrow-ar' : payslipIndex != GetPayslipList.length-1 && direction != 'en' ,
'activeArrow' : payslipIndex != GetPayslipList.length-1 && direction === 'en' }"
ios="ios-arrow-dropleft-circle" md="md-arrow-dropleft-circle">
</ion-icon>
<ion-content>
<ion-row class="ion-justify-content-center" style="margin-top: 30px;">
<ion-col [size]="11">
<div [ngClass]=" direction === 'en' ? 'custom-text-area-element Field-en' : 'custom-text-area-element Field-ar'" >
<label class="label" position='floating' class="colBold requiredClass">{{ 'general,select-year' | translate}} </label>
<select name="selectAbsenceType" class="label-Select" #selectAbsenceType="ngModel" [(ngModel)]="selectedYear" (change)="callPayslipData()" required>
<option value="noType" selected hidden selected><p>{{ts.trPK('absenceList','selectType')}}</p></option>
<option *ngFor="let transaction of paySlipYearsData" [value]="transaction.YEARS">{{ transaction.YEARS}} </option>
</select>
</div>
</ion-col>
</ion-row>
<!-- <ion-icon [ngClass]="{'disabledArrow-ar' : direction != 'en' ,'disabledArrow' : direction == 'en'}" class="activeArrow" ios="ios-arrow-dropleft-circle" md="md-arrow-dropleft-circle">
</ion-icon> -->
</button>
</ion-col>
<ion-col>
<p class="label" *ngIf="direction==='en'"><b style="font-family: WorkSans-Bold;">{{ (showPaySlip.PAYSLIP_CHOICE)?.substring(15,23) }}</b></p>
<p class="label" *ngIf="direction==='ar'"><b style="font-family: WorkSans-Bold;">{{ (showPaySlip.PAYSLIP_CHOICE)?.substring(23,17) }}</b></p>
</ion-col>
<ion-col>
<button ion-button icon-end class="slidbtn" (click)="slideNext(sliderOne,slideWithNav)">
<ion-icon
<ion-row class="ion-justify-content-center">
<ion-col [size]="11">
<div [ngClass]=" direction === 'en' ? 'custom-text-area-element Field-en' : 'custom-text-area-element Field-ar'" >
<label class="label" position='floating' class="colBold requiredClass">{{ 'general,select-month' | translate}} </label>
<select name="selectAbsenceType" class="label-Select" #selectAbsenceType="ngModel" [(ngModel)]="selectedMonth" (change)="callPayslipData()" required>
<option value="noType" selected hidden selected><p>{{ts.trPK('absenceList','selectType')}}</p></option>
<option *ngFor="let transaction of paySlipMonthsData" [value]="transaction.MONTH_CODE">{{ transaction.MONTH_NAME}} </option>
</select>
</div>
</ion-col>
</ion-row>
[ngClass]=" {
'activeArrow-ar' : payslipIndex != 0 && direction != 'en' ,
'activeArrow' : payslipIndex != 0 && direction === 'en' ,
'disabledArrow-ar' : payslipIndex == 0 && direction != 'en',
'disabledArrow' : payslipIndex == 0 && direction === 'en'
}"
ios="ios-arrow-dropright-circle" md="md-arrow-dropright-circle">
</ion-icon>
<!-- <ion-icon [ngClass]="{'disabledArrow' : payslipIndex === 0 , 'activeArrow' : payslipIndex != 0 , 'disabledArrow-ar' : direction != 'en' ,'disabledArrow' : direction == 'en'}" ios="ios-arrow-dropright-circle" md="md-arrow-dropright-circle">
</ion-icon> -->
</button>
</ion-col>
</ion-row>
<!-- <ion-row *ngIf="direction == 'rtl'">
<ion-col>
<button ion-button icon-start class="slidBtn" (click)="slidePrev(sliderOne,slideWithNav)">
<ion-icon [ngClass]=" payslipIndex === GetPayslipList.length-1 ? 'disabledArrow-ar' : 'activeArrow-ar'" ios="ios-arrow-dropright-circle" md="md-arrow-dropright-circle">
</ion-icon>
</button>
</ion-col>
<ion-col>
<p class="label"><b style="font-family: WorkSans-Bold;">{{ (showPaySlip.PAYSLIP_CHOICE)?.substring(15,23) }}</b></p>
</ion-col>
<ion-col>
<button ion-button icon-end class="slidbtn" (click)="slideNext(sliderOne,slideWithNav)">
<ion-icon [ngClass]=" payslipIndex === 0 ? 'disabledArrow-ar' : 'activeArrow-ar'" ios="ios-arrow-dropleft-circle" md="md-arrow-dropleft-circle">
</ion-icon>
</button>
</ion-col>
</ion-row> -->
</div>
<ion-slides [options]="slideOptsOne" #slideWithNav>
<ion-slide >
<ion-grid class="headerGrid">
<ion-row >
<label class="date" for="">{{showPaySlip.PERIOD_START_DATE}}</label>
<label class="label date-label" for="">{{showPaySlip.PERIOD_END_DATE}}</label>
</ion-row>
<div style="color: black;">
<!-- <ngx-gauge
*ngFor="let s of showPaySlip"
[type]="gaugeType"
[value]="gaugeValue"
[label]="gaugeLabel">
</ngx-gauge> -->
<div class="result-graph">
<!-- <div class="request-heading">
<span>Open Request Analysis</span>
</div> -->
<div class="result-text-container">
<h2>{{GetSummaryOfPaymentList.TOTAL_PAY_AMOUNT}}</h2>
<!-- <span>TOTAL <br> OPEN REQUEST</span> -->
<span>{{ts.trPK('payslip','total')}} <br> {{ts.trPK('payslip','salary')}}</span>
</div>
<p-chart #chart class="today-graph" type="doughnut" [data]="data" [options]="options"></p-chart>
</div>
<div [ngClass]=" direction == 'en' ? 'div-green':'div-green-ar'">
<ion-col>
<ion-row>
<label class="green-label">{{ts.trPK('payslip','earnings-key')}}</label>
</ion-row>
<ion-row>
<label class="green-amount">{{GetSummaryOfPaymentList.TOTAL_EARNINGS_AMOUNT}}</label>
</ion-row>
</ion-col>
</div>
<div [ngClass]=" direction == 'en' ? 'div-blue' : 'div-blue-ar'">
<ion-col>
<ion-row>
<label class="blue-label">{{ts.trPK('payslip','deductions-key')}}</label>
</ion-row>
<ion-row>
<label class="blue-amount" for="">{{GetSummaryOfPaymentList.TOTAL_DEDUCTIONS_AMOUNT}}</label>
</ion-row>
</ion-col>
</div>
</div>
</ion-grid>
</ion-slide>
</ion-slides>
</div>
</div>

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

@ -42,6 +42,8 @@ export class HomeComponent implements OnInit {
sliderOne: any;
payslipIndex: any;
data: any;
public paySlipYearsData: any;
public paySlipMonthsData: any;
public direction: string;
@ViewChild('slides') slides: IonSlides;
@ViewChild('slideWithNav') slideWithNav: IonSlides;
@ -52,6 +54,9 @@ export class HomeComponent implements OnInit {
autoplay: true
};
public userData: any;
public selectedYear: any;
public selectedMonth: any;
@ViewChild(IonInfiniteScroll) infiniteScroll: IonInfiniteScroll;
public options = {
@ -61,8 +66,6 @@ export class HomeComponent implements OnInit {
};
gaugeType = "full";
// gaugeValue = 11.200;
// gaugeLabel = "";
constructor(
@ -74,9 +77,7 @@ export class HomeComponent implements OnInit {
public cs: CommonService,
) {
this.direction = TranslatorService.getCurrentDirection();
}
) {}
ngOnInit() {
@ -84,128 +85,37 @@ export class HomeComponent implements OnInit {
this.userData = this.common.sharedService.getSharedData(AuthenticatedUser.SHARED_DATA, false);
this.getPayslip();
// this.getProfile();
}
ngOnChanges(changes: SimpleChanges): void {
if (changes.inputData.currentValue) {
// update this.data here
// then chart is getting updated
setTimeout(() => {
this.chart.reinit();
}, 100);
}
}
slideNext(object, slideView) {
if (this.payslipIndex != 0) {
this.payslipIndex = this.payslipIndex - 1;
this.showInfo();
}
}
slidePrev(object, slideView) {
if (this.payslipIndex < this.GetPayslipList.length - 1) {
// console.log(this.payslipIndex);
this.payslipIndex = this.payslipIndex + 1;
this.showInfo();
public callPayslipData() {
console.log(this.selectedYear);
console.log(this.selectedMonth);
if (this.selectedYear && this.selectedMonth) {
this.getDeduction();
this.getEarings();
}
}
getPayslip() {
this.respID = -999;
const request = {
P_SELECTED_EMPLOYEE_NUMBER: this.userData.EMPLOYEE_NUMBER,//'125346',//this.selEmp,
P_MENU_TYPE: "E",// 'E',//this.selMenu.List_Menu.MENU_TYPE,
P_SELECTED_RESP_ID: this.respID//"-999" //this.respID,
// P_PAGE_NUM: this.P_PAGE_NUM,
// P_PAGE_LIMIT: this.P_PAGE_LIMIT
};
this.payslipService.getPayslip(request, () => { }, this.ts.trPK('general', 'retry')).subscribe((result) => {
this.handleRespondGetPayslipResult(result);
const request = {};
this.payslipService.getPayslipPeriods(request, () => { }, this.ts.trPK('general', 'retry')).subscribe((result) => {
this.handleRespondGetPayslipResult(result.GetPayslipPeriodsList);
}
);
}
handleRespondGetPayslipResult(result) {
if (result.GetPayslipList != null) {
this.GetPayslipList = result.GetPayslipList;
this.firstPayslip = this.GetPayslipList[0]
this.defultSelected = this.firstPayslip.PAYSLIP_CHOICE
}
this.showPaySlip = this.GetPayslipList[0];
this.payslipIndex = 0;
this.getAllPayslipData(this.GetPayslipList[0].ACTION_CONTEXT_ID);
}
showInfo() {
//console.log(event.detail.value);
//const index = parseInt(event.detail.value);
this.showPaySlip = this.GetPayslipList[this.payslipIndex];
this.ActionContextID = this.GetPayslipList[this.payslipIndex].ACTION_CONTEXT_ID;
this.getAllPayslipData(this.ActionContextID);
}
getAllPayslipData(ActionContextID) {
this.common.sharedService.setSharedData(ActionContextID, HomeComponent.ACTION_CONTEXT_ID);
this.getSummeryOfPayment(ActionContextID);
this.getPaymentInfo(ActionContextID);
this.getDeduction(ActionContextID);
this.getEarings(ActionContextID);
}
getSummeryOfPayment(ActionContextID) {
const request = {
P_ACTION_CONTEXT_ID: ActionContextID,
};
this.payslipService.getSummeryOFPayment(request, () => { }, this.ts.trPK('general', 'retry')).subscribe((result) => {
this.handleSummeryOfPaymentResult(result);
}
);
}
handleSummeryOfPaymentResult(result) {
if (result.GetSummaryOfPaymentList != null) {
this.GetSummaryOfPaymentList = result.GetSummaryOfPaymentList[0];
this.earingTotal = this.GetSummaryOfPaymentList.TOTAL_EARNINGS_AMOUNT;
this.deductionTotal = this.GetSummaryOfPaymentList.TOTAL_DEDUCTIONS_AMOUNT;
this.data = {
labels: ['earingTotal', 'deductionTotal'],
datasets: [
{
data: [this.earingTotal, this.deductionTotal],
backgroundColor: [
'#43A6A0',
'#29B5BF',],
borderWidth: 2
}
]
};
if (result != null) {
this.paySlipYearsData = result.GetPayslipsYearList;
this.paySlipMonthsData = result.GetPayslipsMonthList
}
}
getPaymentInfo(ActionContextID) {
const request = {
P_ACTION_CONTEXT_ID: ActionContextID,
};
this.payslipService.getPaymentInfo(request, () => { }, this.ts.trPK('general', 'retry')).subscribe((result) => {
this.handleGetPaymentInfoResult(result);
}
);
}
handleGetPaymentInfoResult(result) {
if (result.GetPaymentInformationList != null) {
this.GetPaymentInformationList = result.GetPaymentInformationList;
@ -214,22 +124,17 @@ export class HomeComponent implements OnInit {
openEarings() {
this.common.openEarningsPage();
}
openDeductions() {
this.common.openDeductionsPage();
}
getEarings(ActionContextID) {
console.log("getEarings");
// this.deductionReq.P_ACTION_CONTEXT_ID=ActionContextID;
// this.deductionReq.P_PAGE_NUM=1;
// this.deductionReq.P_PAGE_LIMIT=100;
getEarings() {
const request = {
P_ACTION_CONTEXT_ID: ActionContextID,
P_PAGE_NUM: 1,
P_PAGE_LIMIT: 100
P_PAGE_LIMIT: 100,
P_MON: this.selectedMonth,
P_YEAR: this.selectedYear
}
this.doinfinitEarReq = request;
this.payslipService.getEarings(request, () => { }, this.ts.trPK('general', 'retry')).subscribe((result) => {
@ -242,22 +147,16 @@ export class HomeComponent implements OnInit {
if (result.GetEarningsList != null) {
this.GetEarningsList = result.GetEarningsList;
}
}
getDeduction(ActionContextID) {
getDeduction() {
console.log("getDeduction");
const request = {
P_ACTION_CONTEXT_ID: ActionContextID,
P_PAGE_NUM: 1,
P_PAGE_LIMIT: 100
P_PAGE_LIMIT: 100,
P_MON: this.selectedMonth,
P_YEAR: this.selectedYear
}
// this.deductionReq.P_ACTION_CONTEXT_ID=ActionContextID;
// this.deductionReq.P_PAGE_NUM=1;
// this.deductionReq.P_PAGE_LIMIT=100;
this.doinfiniteDedReq = request;
this.payslipService.getDeduction(request, () => { }, this.ts.trPK('general', 'retry')).subscribe((result) => {
this.handleGetDeductionResult(result);
@ -271,68 +170,4 @@ export class HomeComponent implements OnInit {
}
}
doInfiniteDeduction(infiniteScroll) {
//this.pageNum= this.pageNum + 1;
if (!this.IsReachEnd) {
this.payslipService.getDeduction(this.doinfiniteDedReq).subscribe(
(result: any) => {
if (this.common.validResponse(result)) {
this.doinfiniteDedReq.P_PAGE_NUM++;
if (this.common.hasData(result.GetDeductionsList)) {
result.GetDeductionsList.forEach(element => {
if (element.ROW_NUM == element.NO_OF_ROWS) {
this.IsReachEnd = true;
} else {
this.IsReachEnd = false;
}
this.GetDeductionsList.push(element);
});
} // if list length >0
else {
this.IsReachEnd = true;
}
} // if response == 1
//this.pageNum++;
this.infiniteScroll.complete();
}
);
} else {
if (this.infiniteScroll) this.infiniteScroll.complete();
}
} //end infiniteScroll
doInfiniteEarning(infiniteScroll) {
//this.pageNum= this.pageNum + 1;
if (!this.IsReachEnd) {
this.payslipService.getEarings(this.doinfinitEarReq).subscribe(
(result: any) => {
if (this.common.validResponse(result)) {
this.doinfinitEarReq.P_PAGE_NUM++;
if (this.common.hasData(result.GetEarningsList)) {
result.GetEarningsList.forEach(element => {
if (element.ROW_NUM == element.NO_OF_ROWS) {
this.IsReachEnd = true;
} else {
this.IsReachEnd = false;
}
this.GetEarningsList.push(element);
});
} // if list length >0
else {
this.IsReachEnd = true;
}
} // if response == 1
//this.pageNum++;
this.infiniteScroll.complete();
}
);
} else {
if (this.infiniteScroll) this.infiniteScroll.complete();
}
}
}

@ -8,7 +8,7 @@ import { Observable } from 'rxjs';
providedIn: 'root'
})
export class PayslipService {
public static getPayslip ="Services/ERP.svc/REST/GET_PAYSLIP";
public static getPayslipPeriods ="Services/ERP.svc/REST/GET_PAYSLIP_PERIODS";
public static getSummaryOFPayment ="Services/ERP.svc/REST/GET_SUMMARY_OF_PAYMENT";
public static getPaymentInfo ="Services/ERP.svc/REST/GET_PAYMENT_INFORMATION";
public static getEarnings ="Services/ERP.svc/REST/GET_EARNINGS";
@ -20,10 +20,10 @@ export class PayslipService {
) { }
public getPayslip(PayslipRequest: any , onError?: any,errorLabel?: string): Observable<any> {
public getPayslipPeriods(PayslipRequest: any , onError?: any,errorLabel?: string): Observable<any> {
const request = PayslipRequest;
this.authService.authenticateRequest(request);
return this.api.post(PayslipService.getPayslip, request, onError, errorLabel);
return this.api.post(PayslipService.getPayslipPeriods, request, onError, errorLabel);
}
public getSummeryOFPayment(PayslipRequest: any, onError?: any,errorLabel?: string): Observable<any> {
const request = PayslipRequest;

@ -1315,7 +1315,7 @@ $actionBtnSize: 36px;
.name {
text-align: center;
letter-spacing: -0.84px;
color: #004D71;
color: #000000;
opacity: 1;
font-weight: bold;
line-height: 21px;
@ -1328,7 +1328,7 @@ $actionBtnSize: 36px;
font-size: 13px;
line-height: 6px;
letter-spacing: -0.52px;
color: #004D71;
color: #000000;
opacity: 1;
font-family: 'Inter' !important;
}
@ -1337,7 +1337,7 @@ $actionBtnSize: 36px;
.subTitle {
text-align: center;
letter-spacing: -0.52px;
color: #004D71;
color: #000000;
opacity: 1;
font-weight: bold;
font-size: 16px;
@ -1372,7 +1372,7 @@ $actionBtnSize: 36px;
line-height: 30px;
font-size: 20px;
letter-spacing: -0.8px;
color: #004D71;
color: #000000;
font-weight: bold;
opacity: 1;
margin-top: 12px;
@ -1385,7 +1385,7 @@ $actionBtnSize: 36px;
line-height: 30px;
font-size: 20px;
letter-spacing: -0.8px;
color: #004D71;
color: #000000;
font-weight: bold;
opacity: 1;
margin-top: -3px;
@ -1411,7 +1411,7 @@ $actionBtnSize: 36px;
line-height: 20px;
font-size: 16px;
letter-spacing: -0.64px;
color: #004D71;
color: #000000;
font-weight: bold;
opacity: 1;
}
@ -1423,7 +1423,7 @@ $actionBtnSize: 36px;
line-height: 30px;
font-size: 20px;
letter-spacing: -0.8px;
color: #004D71;
color: #000000;
font-weight: bold;
opacity: 1;
margin-top: 12px;
@ -1436,7 +1436,7 @@ $actionBtnSize: 36px;
line-height: 30px;
font-size: 20px;
letter-spacing: -0.8px;
color: #004D71;
color: #000000;
font-weight: bold;
opacity: 1;
margin-top: -3px;
@ -1461,7 +1461,7 @@ $actionBtnSize: 36px;
line-height: 20px;
font-size: 16px;
letter-spacing: -0.64px;
color: #004D71;
color: #000000;
font-weight: bold;
opacity: 1;
font-family: 'Inter' !important;

@ -132,25 +132,45 @@ export class HomeComponent implements OnInit {
let personalInformationChildren: any;
let personalInfoNestedChildren: any;
console.log(this.menuEntries);
//if (this.targetValue === 'sideMenu') {
for (let i = 0; i < this.menuEntries.length; i++) {
if (this.menuEntries[i].MENU_NAME === 'XXX_EMP_PROFILE_SS') {
personalInformationChildren = this.menuEntries[i].children;
for (let j = 0; j < personalInformationChildren.length; j++) {
if (personalInformationChildren[j].REQUEST_TYPE === 'BASIC_DETAILS') {
this.basicDetailsSubMenu = personalInformationChildren[j];
}
if (personalInformationChildren[j].REQUEST_TYPE === 'ADDRESS') {
this.addressSubMenu = personalInformationChildren[j];
}
if (personalInformationChildren[j].REQUEST_TYPE === 'CONTACT') {
this.dependentDetails = personalInformationChildren[j];
}
if (personalInformationChildren[j].REQUEST_TYPE === 'PHONE_NUMBERS') {
this.phoneSubMenu = personalInformationChildren[j];
if (this.targetValue === 'sideMenu') {
for (let i = 0; i < this.menuEntries.length; i++) {
if (this.menuEntries[i].MENU_NAME === 'MBL_E_HR_SS') {
personalInformationChildren = this.menuEntries[i].children;
for (let j = 0; j < personalInformationChildren.length; j++) {
if (personalInformationChildren[j].MENU_NAME = 'MBL_PERINFO_SS' && personalInformationChildren[j].ENTRY_SEQUENCE === 5) {
personalInfoNestedChildren = personalInformationChildren[j].children;
for (let k = 0; k < personalInfoNestedChildren.length; k++) {
if (personalInfoNestedChildren[k].REQUEST_TYPE === 'BASIC_DETAILS') {
this.basicDetailsSubMenu = personalInfoNestedChildren[k];
}
if (personalInfoNestedChildren[k].REQUEST_TYPE === 'ADDRESS') {
this.addressSubMenu = personalInfoNestedChildren[k];
}
if (personalInfoNestedChildren[k].REQUEST_TYPE === 'CONTACT') {
this.dependentDetails = personalInfoNestedChildren[k];
}
if (personalInfoNestedChildren[k].REQUEST_TYPE === 'PHONE_NUMBERS') {
this.phoneSubMenu = personalInfoNestedChildren[k];
}
}
}
}
}
}
} else {
const menuEntriesLocalArray: any = this.menuEntries.children;
for (let i = 0; i < menuEntriesLocalArray.length; i++) {
if (menuEntriesLocalArray[i].REQUEST_TYPE === 'BASIC_DETAILS') {
this.basicDetailsSubMenu = menuEntriesLocalArray[i];
}
if (menuEntriesLocalArray[i].REQUEST_TYPE === 'ADDRESS') {
this.addressSubMenu = menuEntriesLocalArray[i];
}
if (menuEntriesLocalArray[i].REQUEST_TYPE === 'CONTACT') {
this.dependentDetails = menuEntriesLocalArray[i];
}
if (menuEntriesLocalArray[i].REQUEST_TYPE === 'PHONE_NUMBERS') {
this.phoneSubMenu = menuEntriesLocalArray[i];
}
}
}

@ -53,7 +53,7 @@ export class DateTimeInput extends UiElement {
"<ion-item class='dynamicField ion-item-position'>" +
" <ion-label position='floating' style='font-size: medium !important;' class='daynamicForm-Label " + requiredClass + "' id='title' >" + this.label + "</ion-label>" +
// " <div class='daynamicForm-DateTime " + disaledClass + "' id='" + this.elementId + "' data-dtvalue='" + this.value + "' " + this.disabled + ">" + this.value + "</div>" +
"<ion-datetime style='width: 85%; color: #004D71;' min='1900' max='2100' displayFormat='DD/MM/YYYY' value='" + this.value + "' done-text='" + doneText + "' cancel-text='" + cancelText + "' id='" + this.elementId + "' data-dtvalue='" + this.value + "' " + this.disabled + "></ion-datetime>" +
"<ion-datetime style='width: 85%; color: #000000;' min='1900' max='2100' displayFormat='DD/MM/YYYY' value='" + this.value + "' done-text='" + doneText + "' cancel-text='" + cancelText + "' id='" + this.elementId + "' data-dtvalue='" + this.value + "' " + this.disabled + "></ion-datetime>" +
// " <input class='daynamicForm-DateTime' type='text' id='" + this.elementId + "' value='" + this.value + "' "+this.disabled+" (click)='showDateTimePicker()'/>"+
// " <input class='daynamicForm-DateTime' type='date' id='" + this.elementId + "' value='" + dateValue+ "' "+this.disabled+" />"+
// " <input class='daynamicForm-DateTime' type='time' id='" + this.elementId + "Time' value='" + timeValue + "' "+this.disabled+" />"+

@ -50,7 +50,7 @@ export class DateInput extends UiElement {
"<ion-item class='dynamicField ion-item-position'>" +
" <ion-label position='floating' style='font-size: medium !important;' class='dynamiclable-float " + requiredClass + "' id='title' >" + this.label + "</ion-label>" +
// " <div class='daynamicForm-DateTime " + disaledClass + "' id='" + this.elementId + "' data-dtvalue='" + this.value + "' " + this.disabled + ">" + this.value + "</div>" +
"<ion-datetime style='width: 85%; color: #004D71;' min='1900' max='2100' class='onic-date' (ionChange)='setDate()' displayFormat='MMM/DD/YYYY' value='" + this.value + "' done-text='" + doneText + "' cancel-text='" + cancelText + "' id='" + this.elementId + "' data-dtvalue='" + this.value + "' " + this.disabled + " ></ion-datetime>" +
"<ion-datetime style='width: 85%; color: #000000;' min='1900' max='2100' class='onic-date' (ionChange)='setDate()' displayFormat='MMM/DD/YYYY' value='" + this.value + "' done-text='" + doneText + "' cancel-text='" + cancelText + "' id='" + this.elementId + "' data-dtvalue='" + this.value + "' " + this.disabled + " ></ion-datetime>" +
// " <input class='daynamicForm-DateTime' type='text' id='" + this.elementId + "' value='" + this.value + "' "+this.disabled+" (click)='showDateTimePicker()'/>"+
// " <input class='daynamicForm-DateTime' type='date' id='" + this.elementId + "' value='" + dateValue+ "' "+this.disabled+" />"+
// " <input class='daynamicForm-DateTime' type='time' id='" + this.elementId + "Time' value='" + timeValue + "' "+this.disabled+" />"+

@ -31,7 +31,7 @@ export class NumberInput extends UiElement {
"<ion-item style='" + this.hidden + "' class='dynamicField ion-item-position'> " +
"<ion-label position='floating' style='font-size: medium !important;' class='" + requiredClass + " dynamiclable-float'>" + this.label + "</ion-label>" +
"<ion-input style='width: 85%; color: #004D71;' type='number' id='" + this.elementId + "' value='" + this.value + "' " + this.disabled + "> </ion-input>" +
"<ion-input style='width: 85%; color: #000000;' type='number' id='" + this.elementId + "' value='" + this.value + "' " + this.disabled + "> </ion-input>" +
" <div style='" + hideToolTipClass + "' data-tooltip='" + this.toolTipText + "' class='toolTip'><ion-icon style='font-size: 20px' name='information-circle-outline'></ion-icon> </div>" +
"</ion-item> ";

@ -28,7 +28,7 @@ export class TextInput extends UiElement {
// "<div class='custom-text-area-element' style='" + this.hidden + "'>" +
"<ion-item style='" + this.hidden + "' class='dynamicField ion-item-position'>" +
" <ion-label position='floating' style='font-size: medium;' class='" + requiredClass + " dynamiclable-float'>" + this.label + "</ion-label>" +
" <ion-input style='width: 85%; color: #004D71;' type='text' data-colm-text='" + this.value + "' id='" + this.elementId + "' value='" + this.textVal + "' " + this.disabled + "></ion-input>" +
" <ion-input style='width: 85%; color: #000000;' type='text' data-colm-text='" + this.value + "' id='" + this.elementId + "' value='" + this.textVal + "' " + this.disabled + "></ion-input>" +
" <div style='" + hideToolTipClass + "' data-tooltip='" + this.toolTipText + "' class='toolTip'><ion-icon style='font-size: 20px' name='information-circle-outline'></ion-icon> </div>" +
"</ion-item> ";

@ -46,7 +46,7 @@ export class TimeInput extends UiElement {
const template =
"<ion-item class='dynamicField ion-item-position' style='" + this.hidden + "'>" +
" <ion-label position='floating' style='font-size: medium !important;' class='dynamiclable-float " + requiredClass + "' id='title' >" + this.label + "</ion-label>" +
"<ion-datetime style='width: 85%; color: #004D71;' display-format='HH:mm' picker-format='HH:mm' class='onic-date' value='" + this.value + "' done-text='" + doneText + "' cancel-text='" + cancelText + "' id='" + this.elementId + "' data-dtvalue='" + this.value + "' " + this.disabled + " ></ion-datetime>" +
"<ion-datetime style='width: 85%; color: #000000;' display-format='HH:mm' picker-format='HH:mm' class='onic-date' value='" + this.value + "' done-text='" + doneText + "' cancel-text='" + cancelText + "' id='" + this.elementId + "' data-dtvalue='" + this.value + "' " + this.disabled + " ></ion-datetime>" +
" <div style='" + hideToolTipClass + "' data-tooltip='" + this.toolTipText + "' class='toolTip'><ion-icon style='font-size: 20px' name='information-circle-outline'></ion-icon> </div>" +
"</ion-item>"
return template;

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.5 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 984 B

After

Width:  |  Height:  |  Size: 671 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 984 B

After

Width:  |  Height:  |  Size: 671 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 759 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 74 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 74 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

@ -1,14 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="15.663" height="17.821" viewBox="0 0 15.663 17.821">
<g id="user_19_" data-name="user (19)" transform="translate(-31)">
<g id="Group_7233" data-name="Group 7233" transform="translate(34.133)">
<g id="Group_7232" data-name="Group 7232">
<path id="Path_16" data-name="Path 16" d="M125.7,0a4.7,4.7,0,1,0,4.7,4.7A4.7,4.7,0,0,0,125.7,0Z" transform="translate(-121)" fill="#fff"/>
</g>
</g>
<g id="Group_7235" data-name="Group 7235" transform="translate(31 10.442)">
<g id="Group_7234" data-name="Group 7234">
<path id="Path_17" data-name="Path 17" d="M44.678,302.026a6.7,6.7,0,0,0-4.8-2.026H37.787a6.7,6.7,0,0,0-4.8,2.026A6.848,6.848,0,0,0,31,306.857a.522.522,0,0,0,.522.522H46.141a.522.522,0,0,0,.522-.522A6.848,6.848,0,0,0,44.678,302.026Z" transform="translate(-31 -300)" fill="#fff"/>
</g>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 912 B

@ -249,6 +249,14 @@
}
},
"general": {
"select-year": {
"en": "Select Year",
"ar": "حدد السنة"
},
"select-month": {
"en": "Select Month",
"ar": "اختر الشهر"
},
"current": {
"en": "Current",
"ar": "تيار"

@ -1430,7 +1430,7 @@ div.no-dataDiv {
.active-Segment {
border-radius: 25px !important;
// font-size: 0.3cm !important;
background: #004C70 !important;
background: #c2a16b !important;
color: var(--light) !important;
font-weight: bold !important;
text-transform: none;
@ -1659,7 +1659,7 @@ div.no-dataDiv {
color: #fff !important;
&:before {
background-color: #004D71 !important;
background-color: #000000 !important;
}
}
@ -1920,7 +1920,7 @@ ion-app[dir="rtl"] {
}
.ion-color-secondary {
--ion-color-base: #004D71 !important;
--ion-color-base: #000000 !important;
}
ion-app[dir="ltr"] {

Loading…
Cancel
Save