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.
mohemm_srca/Mohem/src/app/home/wifi-model/wifi-modal.component.ts

186 lines
6.3 KiB
TypeScript

This file contains invisible Unicode characters!

This file contains invisible Unicode characters that may be processed differently from what appears below. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to reveal hidden characters.

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