import { Component, OnInit, NgZone } from '@angular/core'; import { CommonService } from 'src/app/hmg-common/services/common/common.service'; import { attendanceSwipeScannerRequest } from 'src/app/home/models/attendanceSwipe.Request'; import { Device } from '@ionic-native/device/ngx'; import { AuthenticatedUser } from '../../hmg-common/services/authentication/models/authenticated-user'; import { AttendanceService } from 'src/app/home/services/attendance.services'; import { Response } from 'src/app/hmg-common/services/models/response'; import { ModalController } from '@ionic/angular'; import { TranslatorService } from 'src/app/hmg-common/services/translator/translator.service'; import { Platform } from "@ionic/angular"; import { WifiWizard2 } from "@ionic-native/wifi-wizard-2/ngx"; import { OpenNativeSettings } from '@ionic-native/open-native-settings/ngx'; @Component({ selector: 'app-wifi-modal', templateUrl: './wifi-modal.component.html', styleUrls: ['./wifi-modal.component.scss'], }) export class WifiModalComponent implements OnInit { public userData: any = {}; public gifStatus = false; private ssid = CommonService.MOHEMM_WIFI_SSID; private password = CommonService.MOHEMM_WIFI_PASSWORD; private algo = 'WPA'; constructor( public common: CommonService, private device: Device, private attendance_service: AttendanceService, public modalController: ModalController, public ts: TranslatorService, public ngZone: NgZone, private wifiWizard2: WifiWizard2, private openNativeSettings: OpenNativeSettings, private platform: Platform, ) { } ngOnInit() { this.userData = this.common.sharedService.getSharedData(AuthenticatedUser.SHARED_DATA, false); setTimeout(() => { this.startWifiConnection(); }, 1000); } async startWifiConnection() { const isAndroid = this.platform.is("android"); const isIOS = this.platform.is("ios"); if (isAndroid) { let isWifiAvailable = await this.isWifiAvailable(this.ssid); console.debug("isWifiAvailable: " + isWifiAvailable); if(isWifiAvailable){ console.debug("Wifi Credientials: " + this.ssid + " | " + this.password); this.wifiWizard2.connect(this.ssid, true, this.password, this.algo).then(async (value) =>{ let ssid_ = await this.wifiWizard2.getConnectedSSID(); if(ssid_ == this.ssid){ console.debug("Wifi Connected: Verified Access | " + value + " | " + ssid_); setTimeout(() => { this.swipeAttendanceWifi(ssid_); },2000); }else{ this.showErrorInvalidWorkspace(); } }) .catch((err) => { console.debug(err); this.showErrorForgetWifiConfiguration(); }); }else{ console.debug("Wifi is not available considered your device is not in range"); this.showErrorInvalidWorkspace(); } } else if (isIOS) { this.wifiWizard2.iOSConnectNetwork(this.ssid,this.password).then(async (value) => { let ssid_ = await this.wifiWizard2.getConnectedSSID(); if(ssid_ == this.ssid){ console.debug("Wifi Connected: Verified Access | " + value + " | " + ssid_); setTimeout(() => { this.swipeAttendanceWifi(ssid_); },6000); }else{ this.showErrorInvalidWorkspace(); } }) .catch((err) => { console.debug(err); this.showErrorInvalidWorkspace(); }); if(this.wifiWizard2.isWifiEnabled){ } else{ this.showWifiNotEnabled(); } } }​ showWifiNotEnabled(){ this.common.showErrorMessageDialog(()=>{ this.openNativeSettings.open('wifi').then(()=>{}); }, this.ts.trPK("general", "ok"), this.ts.trPK("general","wifi-not-enable-text")); } showErrorInvalidWorkspace() { this.closeModal(); this.common.showErrorMessageDialog(()=>{ }, this.ts.trPK("general", "ok"), this.ts.trPK("general","wifi-connection-failed-text")); this.disconnectWifi(); } showErrorForgetWifiConfiguration() { this.closeModal(); this.common.confirmAlertDialog(() => { this.openNativeSettings.open('wifi').then(()=>{}); }, this.ts.trPK('general', 'settings'), () => { }, this.ts.trPK('general', 'cancel'), this.ts.trPK('vacation-rule', 'confirmation'), this.ts.trPK("general","forget-wifi-connection-text")); this.disconnectWifi(); } async disconnectWifi() { const isAndroid = this.platform.is("android"); const isIOS = this.platform.is("ios"); if(isAndroid){ await this.wifiWizard2.disconnect(this.ssid).catch((error)=>{ console.error(error) }); await this.wifiWizard2.remove(this.ssid).catch((error)=>{ console.error(error) }); console.debug("Wifi Removed"); }else if(isIOS){ await this.wifiWizard2.iOSDisconnectNetwork(this.ssid); } } async swipeAttendanceWifi(code:any) { const request: attendanceSwipeScannerRequest = new attendanceSwipeScannerRequest(); request.PointType = 3; request.Latitude = 0; request.Longitude = 0; request.QRValue = ""; request.NFCValue = ""; request.WifiValue = "100"; request.UID = this.device.uuid; request.UserName = this.userData.EMPLOYEE_NUMBER; request.IsGpsRequired = false; this.attendance_service .attendanceSwipeScanner(request, () => { console.debug("Error inside in swipe attendance"); this.closeModal(); this.disconnectWifi(); }) .subscribe((result: Response) => { this.disconnectWifi(); if (this.common.validResponse(result)) { this.ngZone.run(() => { this.gifStatus = true; }); setTimeout(() => { this.closeModal(); // this.common.openAttenTrackingpage(); }, 4000); }else{ console.debug(result); this.closeModal(); } }); } public closeModal() { this.modalController.dismiss(); } async isWifiAvailable(ssid:string){ let avaialble_wifi = await this.wifiWizard2.scan(); let find = avaialble_wifi.find(element => { return element.SSID == ssid; }); if (find === undefined) { return false; } else { return find.SSID == ssid; } } }