import { Component, OnInit } from '@angular/core'; import { NFC } from "@ionic-native/nfc/ngx" import { CommonService } from 'src/app/hmg-common/services/common/common.service'; import { Platform } from '@ionic/angular'; import {AttendScanService} from '../../hmg-common/services/attend-services/attend-scan.service'; import { TranslatorService } from 'src/app/hmg-common/services/translator/translator.service'; import { ModalController } from '@ionic/angular'; import { NfcModalComponent } from '../nfc-modal/nfc-modal.component'; import { AuthenticatedUser } from '../../hmg-common/services/authentication/models/authenticated-user'; import { AuthenticationService } from 'src/app/hmg-common/services/authentication/authentication.service'; import { attendanceSwipeScannerRequest } from 'src/app/home/models/attendanceSwipe.Request'; import { Device } from '@ionic-native/device/ngx'; import { AttendanceService } from 'src/app/home/services/attendance.services'; import { Response } from 'src/app/hmg-common/services/models/response'; @Component({ selector: 'app-attendance-options', templateUrl: './attendance-options.component.html', styleUrls: ['./attendance-options.component.scss'], }) export class AttendanceOptionsComponent implements OnInit { public location: boolean; public direction: string; public userData: any = {}; public priviligeList: any; public serviceEnableNFC = false; public serviceEnableQR = false; public deviceNFC = false; public nfcIOSSuccess = false; constructor( private nfc: NFC, public common: CommonService, public platform: Platform, public attendScanService: AttendScanService, public ts: TranslatorService, public modalController: ModalController, private device: Device, private attendance_service: AttendanceService ) { } ngOnInit() { this.direction = TranslatorService.getCurrentLanguageName(); this.userData = this.common.sharedService.getSharedData(AuthenticatedUser.SHARED_DATA, false); this.priviligeList = AuthenticationService.servicePrivilage; this.setServicesPrivilage(); this.checkNFCStatus('one'); } async checkNFCStatus(checkValue: string) { try { let nfcStatus = await this.nfc.enabled(); console.log(nfcStatus); if (nfcStatus === 'NFC_OK') { this.deviceNFC = true; if (checkValue === 'two') { this.startNFC(); } } } catch (err) { console.log("Error reading tag", err); if (err === 'NO_NFC') { this.deviceNFC = false; } else if (err === 'NFC_DISABLED') { this.deviceNFC = true; if (checkValue === 'two') { this.common.presentAlert(this.ts.trPK('general', 'nfc-settings')); } } } }​ public setServicesPrivilage() { for (const servicePrivilage of AuthenticationService.servicePrivilage) { if (servicePrivilage.Previlege && servicePrivilage.ServiceName === 'enableNFC') { this.serviceEnableNFC = true; } if (servicePrivilage.Previlege && servicePrivilage.ServiceName === 'enableQR') { this.serviceEnableQR = true; } } } async startIOSNfc() { try { let tag = await this.nfc.scanTag(); console.log(JSON.stringify(tag)); const serialNumber = this.nfc.bytesToHexString(tag.id); this.swipeAttendanceNFC(serialNumber); } catch (err) { this.common.presentAlert(this.ts.trPK('general', 'nfc-error')); console.log("Error reading tag", err); } }​ public async nfcModal() { const modal = await this.modalController.create({ component: NfcModalComponent, showBackdrop: true, backdropDismiss: true }); modal.cssClass = 'nfc-modal'; await modal.present(); } public swipeAttendanceNFC (nfcSerialCode: any) { const request: attendanceSwipeScannerRequest = new attendanceSwipeScannerRequest(); request.PointType = 2; request.Latitude = 0; request.Longitude = 0; request.QRValue = ""; request.NFCValue = nfcSerialCode; request.UID = this.device.uuid; request.UserName = this.userData.EMPLOYEE_NUMBER; this.attendance_service.attendanceSwipeScanner(request, () => { console.log('Error inside in swipe attendance'); }).subscribe((result: Response) => { if (this.common.validResponse(result)) { this.nfcIOSSuccess = true; setTimeout(() => { this.common.openHome(); }, 1000); } }); } public startNFC() { const isAndroid = this.platform.is('android'); const isIOS = this.platform.is('ios'); if (isAndroid) { this.nfcModal(); } else if (isIOS) { this.startIOSNfc(); } } public startQRCode() { this.attendScanService.getDeviceLocation(); } }