You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
mohemmionic5/Mohem/src/app/home/attendance-options/attendance-options.componen...

142 lines
4.7 KiB
TypeScript

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();
}
}