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("nfc status >>>>>>>>>>" + nfcStatus); if (nfcStatus === "NFC_OK") { this.deviceNFC = true; if (checkValue === "two") { this.startNFC(); } } if (nfcStatus === null && 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")); } } else if (checkValue === "two") { this.common.presentAlert(this.ts.trPK("general", "nfc-error")); } } } 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(); } }