import { EitService } from './../eit/services/eit.service'; import { Component, OnInit } from '@angular/core'; import { TranslatorService } from 'src/app/hmg-common/services/translator/translator.service'; import { MenuController, Events, ActionSheetController } from '@ionic/angular'; import { AuthenticationService } from 'src/app/hmg-common/services/authentication/authentication.service'; import { AuthenticatedUser } from 'src/app/hmg-common/services/authentication/models/authenticated-user'; import { MenuService } from 'src/app/hmg-common/services/menu/menuservice.service'; import { MenuResponse } from 'src/app/hmg-common/services/menu/models/menu-response'; import { CommonService } from 'src/app/hmg-common/services/common/common.service'; import { Geolocation } from '@ionic-native/geolocation/ngx'; import { ZBar, ZBarOptions } from '@ionic-native/zbar/ngx'; import { BarcodeScanner } from '@ionic-native/barcode-scanner/ngx'; import { Device } from '@ionic-native/device/ngx'; import { attendanceSwipeScannerRequest } from './models/attendanceSwipe.Request'; import { Response } from 'src/app/hmg-common/services/models/response'; import { AttendanceService } from './services/attendance.services'; import { LoginRequest } from '../hmg-common/services/authentication/models/login.request'; import {FileUploaderComponent} from '../hmg-common/ui/file-uploader/file-uploader.component' import { Camera, CameraOptions,PictureSourceType} from '@ionic-native/Camera/ngx'; import { File } from '@ionic-native/file/ngx'; import { DomSanitizer } from '@angular/platform-browser'; import {FileUploderProfileComponent} from '../hmg-common/ui/file-uploder-profile/file-uploder-profile.component' import { SharedDataService } from '../hmg-common/services/shared-data-service/shared-data.service'; import { DevicePermissionsService } from '../hmg-common/services/device-permissions/device-permissions.service'; import { DashboredService } from '../hmg-common/services/dashbored/dashbored.service'; import { OrganizationSalariesResponse } from '../hmg-common/services/dashbored/organization-salaries.response'; import { OpenMissingSwipesResponse} from '../hmg-common/services/dashbored/open-missing-swipes.response'; import {PerformanceAppraisalResponse} from '../hmg-common/services/dashbored/performance-appraisal.response'; import { AttendanceTrackingResponse } from '../hmg-common/services/dashbored/attendance-tracking.response'; import { OpenPeriodDatesResponse } from '../hmg-common/services/dashbored/models/openPeriodDatesResponse'; import {GetSubordinatesAttdStatusRequest} from '../hmg-common/services/dashbored/models/GetSubordinatesAttdStatusRequest'; import {GetSubordinatesLeavesRequest} from '../hmg-common/services/dashbored/models/GetSubordinatesLeavesRequest' import {GetOpenNotificationsResponse}from '../hmg-common/services/dashbored/models/GetOpenNotificationsResponse' import {GetSubordinatesAttdStatusResponse}from '../hmg-common/services/dashbored/models/GetSubordinatesAttdStatusResponse' import {GetSubordinatesLeavesResponse}from '../hmg-common/services/dashbored/models/GetSubordinatesLeavesResponse' @Component({ selector: 'app-home', templateUrl: './home.page.html', styleUrls: ['./home.page.scss'] }) export class HomePage implements OnInit { userData: any = {}; user_image: any = '../assets/imgs/profile.png'; menuList: any = []; zbarOptions: any; scannedResult: any; notBadge: any; lat: any; longt: any; deviceID: string; public maxFileSize = 10 * 1024 * 1024; public fileUploder: FileUploaderComponent; // public fileUploderProfile:FileUploderProfileComponent location: boolean; camera: boolean; public statsButtons = [ { title: 'Work List', statsValue: '79', icon: 'assets/icon/new-design/work_list.png' }, { title: 'Pending Request', statsValue: '13', icon: 'assets/icon/new-design/pending_request.png' }, { title: 'Missing Swipes', statsValue: '99', icon: 'assets/icon/new-design/missing_swipe.png' }, { title: 'Leave Balance', statsValue: '02', icon: 'assets/icon/new-design/leave_balance.png' }, { title: 'Ticket Balance', statsValue: '01', icon: 'assets/icon/new-design/ticket_balance.png' } ]; public employeeServicesButtons = [ { title: 'Leave Management', icon: 'assets/icon/new-design/leave_management.png' }, { title: 'Advance Payments', icon: 'assets/icon/new-design/advance_payments.png' }, { title: 'Medical Insurance', icon: 'assets/icon/new-design/medical_insurance.png' }, { title: 'Pay Slip', icon: 'assets/icon/new-design/pay_slip.png' } ]; public slideOptsOne = { slidesPerView: 3.5, spaceBetween: 10 }; public slideOptsTwo = { slidesPerView: 3.2, spaceBetween: 10 }; public timeInSeconds: any = .15 * 60 * 60; public time: any; public runTimer = false; public hasStarted = false; public hasFinished = false; public remainingTime: any; public displayTime: any; public menuEntries: any; public percent: any = 100 - ((this.timeInSeconds / 32400) * 100); constructor( public ts: TranslatorService, public menu: MenuController, public authService: AuthenticationService, public menuService: MenuService, public common: CommonService, public events: Events, private device: Device, private zbar: ZBar, private geolocation: Geolocation, private attendance_service: AttendanceService, private eitService: EitService, private barcodeScanner: BarcodeScanner, public actionSheetCtrl: ActionSheetController, private cameraController: Camera, public sharedData: SharedDataService, private sanitizer: DomSanitizer, // private transfer: Transfer, private file: File, // private filePath: FilePath private permissions: DevicePermissionsService, public DS: DashboredService ) { this.events.subscribe('img-change', displayImg => { this.user_image = this.sanitizer.bypassSecurityTrustUrl('data:Image/*;base64,'+displayImg); console.log('html saved img: ' + this.user_image); }); } ngOnInit() { this.getUserDetails(); this.getMenu(); this.setServicesPrivilage(); // this.getCount(); console.log(this.percent); this.initTimer(); // this.events.subscribe('getNotCount', badge => { // this.notBadge = badge; // }); } initTimer() { this.time = this.timeInSeconds; this.runTimer = false; this.hasStarted = false; this.hasFinished = false; this.remainingTime = this.timeInSeconds; this.displayTime = this.getSecondsAsDigitalClock(this.remainingTime); this.startTimer(); } startTimer() { this.runTimer = true; this.hasStarted = true; this.timerTick(); } timerTick() { setTimeout(() => { if (!this.runTimer) { return; } this.remainingTime--; this.displayTime = this.getSecondsAsDigitalClock(this.remainingTime); console.log(this.remainingTime); console.log(Math.floor((this.remainingTime / 32400) * 100)); if (this.remainingTime > 0) { const newPercent: any = ((this.remainingTime / 32400) * 100).toFixed(2); console.log(newPercent); this.percent = 100 - newPercent; console.log('umar:' + this.percent); this.timerTick(); } else { this.hasFinished = true; } }, 1000); } getSecondsAsDigitalClock(inputSeconds: number) { const secNum = parseInt(inputSeconds.toString(), 10); // don't forget the second param const hours = Math.floor(secNum / 3600); const minutes = Math.floor((secNum - (hours * 3600)) / 60); const seconds = secNum - (hours * 3600) - (minutes * 60); let hoursString = ''; let minutesString = ''; let secondsString = ''; hoursString = (hours < 10) ? '0' + hours : hours.toString(); minutesString = (minutes < 10) ? '0' + minutes : minutes.toString(); secondsString = (seconds < 10) ? '0' + seconds : seconds.toString(); return hoursString + ':' + minutesString + ':' + secondsString; } getDeviceLocation() { const isVirtual = this.device.isVirtual; if (isVirtual === true){ alert('emulater>>>>>>>' + isVirtual); alert('You are using virtual device'); return false; } this.permissions.requestLocationAutherization().then(granted => { this.location = granted as boolean; if (this.location) { this.geolocation .getCurrentPosition({ maximumAge: 3000, timeout: 10000, enableHighAccuracy: true }) .then(resp => { // console.log(resp.coords.latitude); // console.log(resp.coords.longitude); this.lat = resp.coords.latitude; this.longt = resp.coords.longitude; this.attendance(); }) .catch(error => { console.log('Error getting location', error); }); } else { return false; } }); } setServicesPrivilage() { for (let i = 0; i < AuthenticationService.servicePrivilage.length; i++) if (AuthenticationService.servicePrivilage[i].Previlege == false) { document.getElementById(AuthenticationService.servicePrivilage[i].ServiceName).setAttribute('disabled', 'disabled'); document.getElementById(AuthenticationService.servicePrivilage[i].ServiceName).style.filter = 'grayscale(1)' } } getCount() { // const req: any = {}; // this.menuService.getNotificationCount(req).subscribe((result: any) => { // if (this.common.validResponse(result)) { // this.notBadge = // result.GetOpenNotificationsNumList.P_OPEN_NOTIFICATIONS_NUM; // if (this.notBadge <= 0) { // this.notBadge = null; // } // this.events.publish("getNotCount", this.notBadge); // } // }); } // ionViewDidLoad() { // this.geolocation // .getCurrentPosition() // .then(resp => { // // resp.coords.latitude // // resp.coords.longitude // console.log(resp.coords.latitude); // console.log(resp.coords.longitude); // }) // .catch(error => { // console.log("Error getting location", error); // }); // this.geolocation.getCurrentPosition().then((resp) => { // // resp.coords.latitude // // resp.coords.longitude // console.log(resp.coords.latitude); // console.log(resp.coords.longitude); // }).catch((error) => { // console.log('Error getting location', error); // }); // } ionViewDidLoad() { this.getUserDetails(); console.log('getUserDetails'); this.geolocation .getCurrentPosition() .then(resp => { // resp.coords.latitude // resp.coords.longitude console.log(resp.coords.latitude); console.log(resp.coords.longitude); this.lat = resp.coords.latitude; this.longt = resp.coords.longitude; }) .catch(error => { console.log('Error getting location', error); }); } private openMenu() { this.menu.toggle(); } private getUserDetails() { this.authService .loadAuthenticatedUser() .subscribe((user: AuthenticatedUser) => { if (user) { this.events.publish('setMenu'); this.userData = user; // set User Info this.sharedData.setSharedData(this.userData, AuthenticatedUser.SHARED_DATA); this.user_image = user.EMPLOYEE_IMAGE ? 'data:image/png;base64,' + user.EMPLOYEE_IMAGE : this.user_image; console.log(user); } else { console.log(user); } }); } public Vacation_Rule() { this.common.navigateForward('/vacation-rule/home'); } private getMenu() { this.menuService.getMenu().subscribe((result: MenuResponse) => { this.handleMenuResult(result); }); } private handleMenuResult(result) { if (this.common.validResponse(result)) { if (this.common.hasData(result.List_Menu)) { console.log('list menu'); this.menuList = result.List_Menu; console.log('umar: ' + this.menuList); this.getMenuDetails(); } } } private accrualBalance() { this.common.openAccuralPage(); } private changeImage() { this.common.openChangeImagePage(); } public getMenuDetails() { const item = this.menuList[0]; const selMenu: MenuResponse = new MenuResponse(); selMenu.List_Menu = item; selMenu.userid = this.userData.EMPLOYEE_NUMBER; console.log('menu: ' + selMenu.List_Menu); this.common.sharedService.setSharedData(selMenu, MenuResponse.SHARED_DATA); this.getMenuEntries(item); // if (item.MENU_TYPE === 'M') { // this.common.openMyTeamPage(); // // this.navCtrl.push("MySubordinatePage"); // } else if (item.MENU_TYPE === 'S') { // this.common.sharedService.setSharedData(item, 'mySpecList'); // this.common.openMySpecialistPage(); // // this.navCtrl.push('MySpecialistPage',{"mySpecList":item}); // } else { // this.getMenuEntries(item); // } } getMenuEntries(item) { console.log('umar I am clicked2'); const request: any = {}; let selEmpNo: string = null; let nationality: string = null; request.P_SELECTED_RESP_ID = -999; if (item.MENU_TYPE === 'S') { request.P_SELECTED_RESP_ID = item.RESP_ID; } else { selEmpNo = this.common.sharedService.getSharedData( LoginRequest.SHARED_DATA, false ); } nationality = this.common.sharedService.getSharedData( LoginRequest.NATIONALITY_CODE, false ); request.P_SELECTED_EMPLOYEE_NUMBER = selEmpNo; request.P_MENU_TYPE = item.MENU_TYPE; request.NationalityCode = nationality; // set emp and resp id console.log('set data'); this.common.sharedService.setSharedData( selEmpNo, MenuResponse.SHARED_SEL_EMP ); this.common.sharedService.setSharedData( request.P_SELECTED_RESP_ID, MenuResponse.SHARED_SEL_RESP_ID ); this.eitService .getMenuEntries(request) .subscribe((result: MenuResponse) => { this.handleMenuEntiresResult(result); }); } sortMenuEntires(list) { const tree = this.common.list_to_tree(list); this.menuEntries = tree; console.log(this.menuEntries); this.common.sharedService.setSharedData(tree, 'menuEntries'); // this.common.navigateForward("/eit/homepage"); // this.common.openEITPage(); } private handleMenuEntiresResult(result) { if (this.common.validResponse(result)) { if (this.common.hasData(result.GetMenuEntriesList)) { this.sortMenuEntires(result.GetMenuEntriesList); } } } private Change_password() { this.common.openChangePassword(); } private openPayslip() { this.common.openPayslipPage(); } private attendance() { // this.zbarOptions = { // flash: "off", // drawSight: false // }; // console.log("your currnt location is"); // console.log("Loc"); this.permissions.requestCameraAutherization().then(granted => { this.camera = granted as boolean; if (this.camera) { this.scanCode(); } } ); } scanCode() { // this.zbar // .scan(this.zbarOptions) // .then(result => { // console.log(result); // Scanned code // let strResult = JSON.parse(result); // console.log(strResult.QRValue); // this.scannedResult = result; // this.deviceID = this.device.uuid; // this.swipeAttendance(); // }) // .catch(error => { // alert(error); // Error message // }); this.barcodeScanner.scan().then(barcodeData => { console.log('Barcode data', barcodeData); // let strResult = JSON.parse(barcodeData); // console.log(strResult.QRValue); this.scannedResult = barcodeData; this.deviceID = this.device.uuid; this.swipeAttendance(); }).catch(err => { console.log('Error', err); }); } swipeAttendance() { const request: attendanceSwipeScannerRequest = new attendanceSwipeScannerRequest(); request.Latitude = this.lat; request.Longitude = this.longt; request.QRValue = this.scannedResult.text; request.UID = this.deviceID; request.UserName = this.userData.EMPLOYEE_NUMBER; console.log('request'); console.log(JSON.stringify(request)); this.attendance_service .attendanceSwipeScanner(request, () => { console.log('Error inside in swipe attendance'); }) .subscribe((result: Response) => { if (this.common.validResponse(result)) { console.log('response'); console.log(result); this.common.presentAlert(this.ts.trPK('home', 'swipeAlertSuccess')); } else { this.common.presentAlert(this.ts.trPK('home', 'swipeAlertFailed')); } }); } openPersonalInfo() { this.common.openProfile(); } /*************************************Dashboards Services**********************************************************8 */ showOrganizationSalaries(){ this.DS.getOrganizationSalaries() .subscribe((result: OrganizationSalariesResponse ) => { });; } showOpenMissingSwipes(){ this.DS.getOpenMissingSwipes() .subscribe((result: OpenMissingSwipesResponse) => { });; } showPerformanceAppraisal(){ this.DS.getPerformanceAppraisal() .subscribe((result: PerformanceAppraisalResponse) => { }); } showAttendanceTracking(){ this.DS.getAttendanceTracking() .subscribe((result: AttendanceTrackingResponse) => { });; } openPeriodDateDashbored(){ this.DS.getOpenPeriodDates( ()=> {console.log("Error ");} ).subscribe((result:OpenPeriodDatesResponse)=>{ if (this.common.validResponse(result)) { console.log("response"); } }); } openNotificationsDashbored(){ this.DS.getOpenNotifications( ()=> {console.log("Error ");} ).subscribe((result:GetOpenNotificationsResponse)=>{ if (this.common.validResponse(result)) { console.log("response"); console.log(result); } }); } getSubordinatesLeaves(){ let request:GetSubordinatesLeavesRequest=new GetSubordinatesLeavesRequest(); request.P_DATE_FROM="/Date(1578603600000+0300)/"; //test request.P_DATE_TO="/Date(1576011600000+0300)/"; //test this.DS.getSubordinatesLeaves( request,()=> {console.log("Error ");} ).subscribe((result:GetSubordinatesLeavesResponse)=>{ if (this.common.validResponse(result)) { console.log("response"); console.log(result); } }); } getSubordinatesAttStatus(){ let request: GetSubordinatesAttdStatusRequest = new GetSubordinatesAttdStatusRequest(); request.P_SCHEDULE_DATE_FROM="/Date(1578603600000+0300)/"; //test request.P_SCHEDULE_DATE_TO="/Date(1576011600000+0300)/";//test this.DS.getSubordinatesAttStatus( request,()=> {console.log("Error ");} ).subscribe((result:GetSubordinatesAttdStatusResponse)=>{ if (this.common.validResponse(result)) { console.log("response"); console.log(result); } }); } }