import { Component, OnInit, ViewChild, ChangeDetectorRef, NgZone, OnDestroy } from '@angular/core'; import { CommonService } from 'src/app/hmg-common/services/common/common.service'; import { AuthenticationService } from 'src/app/hmg-common/services/authentication/authentication.service'; import { Router } from '@angular/router'; import { AlertController } from '@ionic/angular'; import { TranslatorService } from 'src/app/hmg-common/services/translator/translator.service'; import { CheckUserAuthenticationRequest } from 'src/app/hmg-common/services/authentication/models/check-user-auth.request'; import { CheckUserAuthenticationResponse } from 'src/app/hmg-common/services/authentication/models/check-user-auth.response'; import { CheckActivationCodeResponse } from 'src/app/hmg-common/services/authentication/models/check-activation-code.response'; import { SmsReaderService } from 'src/app/hmg-common/services/sms/sms-reader.service'; import { AuthenticatedUser } from 'src/app/hmg-common/services/authentication/models/authenticated-user'; import { PATIENT_TYPE } from 'src/app/hmg-common/services/models/patient.type'; import { FingerprintAIO } from '@ionic-native/fingerprint-aio/ngx'; import { GetLoginInfoRequest } from 'src/app/hmg-common/services/authentication/models/get-login-info.request'; import { GetLoginInfoResponse } from 'src/app/hmg-common/services/authentication/models/get-login-info.response'; import { Device } from '@ionic-native/device/ngx'; import { SplashScreen } from '@ionic-native/splash-screen/ngx'; import { SharedDataService } from 'src/app/hmg-common/services/shared-data-service/shared-data.service'; import { LoginModel } from '../models/LoginModel'; @Component({ selector: 'login', templateUrl: './login.component.html', styleUrls: ['./login.component.scss'] }) export class LoginComponent implements OnInit, OnDestroy { appLang:number=1; isExpired:boolean =false; isSupportAr:boolean=false; isAppleStore:boolean=false; memberLogin: any = {}; private password: string; private language: string; private username : string; private currentLang : any = 2; private patientOutSA: boolean; private loginTokenID: string; private isMobileFingerPrint: boolean; private FingerPrintPatientIdentificationID: string; private loginData = new LoginModel(); constructor( public cs: CommonService, public authService: AuthenticationService, public router: Router, public alertController: AlertController, public ts: TranslatorService, public smsService: SmsReaderService, private faio: FingerprintAIO, public ngZone: NgZone, public device: Device, public splash: SplashScreen, public sharedData: SharedDataService ) { } ngOnInit() { console.log(this.currentLang); //this.setIdPattern(); // setTimeout(() => { // this.checkIfLoggedInBefore(); // // this.splash.hide(); // }, 100); } ngOnDestroy(): void { this.backClicked(); } public changeLanguage(){ this.ts.switchLanguage(); if(TranslatorService.CURRENT_LANGUAGE == TranslatorService.EN) { this.language = "US"; } else{ this.language = "AR"; } this.currentLang = TranslatorService.getCurrentLanguageCode(); } // private checkIfLoggedInBefore() { // this.cs.startLoading(); // // check if user logged in before // this.authService.loadAuthenticatedUser().subscribe((user: AuthenticatedUser) => { // if (user) { // this.startBiometricLogin(user); // } else { // this.hideSplashScreen(true); // } // }); // } private forgetPasswordPage(){ this.cs.openUserForgot(); } private hideSplashScreen(stopLoading = false) { // this.splash.hide(); if (stopLoading) { this.cs.stopLoading(); } } // private startBiometricLogin(user: AuthenticatedUser) { // this.faio.isAvailable().then((options) => { // this.hideSplashScreen(true); // if (user.biometricEnabled) { // // ask if login with face or finger // this.cs.presentConfirmDialog( // this.ts.trPK('login', options), // () => this.presentBiometricDialog(user), // () => { } // ); // } else { // // ask to enable biometric // this.getPermissionToActivateBiometric(user); // } // }, () => { // this.hideSplashScreen(true); // }); // } private getPermissionToActivateBiometric(user: AuthenticatedUser) { this.cs.presentConfirmDialog( this.ts.trPK('login', 'enable-biometric'), () => { user['biometricEnabled'] = true; this.authService.updateLoggedInUser(user).subscribe((success: boolean) => { this.presentBiometricDialog(user); }); }, () => { } ); } /* activate biometric login for this user */ private getMobileInfo(user: AuthenticatedUser) { this.authService.getLoginInfo(new GetLoginInfoRequest(user), () => { }, this.ts.trPK('general', 'ok')).subscribe((result: GetLoginInfoResponse) => { if (this.cs.validResponse(result)) { if (!result.SMSLoginRequired) { this.loginTokenID = result.LogInTokenID; this.patientOutSA = result.PatientOutSA; this.initializeForAuthentictedUser(user); // sms for register the biometric if (result.isSMSSent) { this.startListeneingForSMS(this.ts.trPK('general', 'enter-sms-enable-biometric')); } else { this.checkActivationCode(); } } } }); } private initializeForAuthentictedUser(user: AuthenticatedUser) { this.ngZone.run(() => { //this.isMobileFingerPrint = true; //this.FingerPrintPatientIdentificationID = user.IdentificationNo; //this.mobileNumber = user.MobileNumber; //this.zipCode = CountryCode.localCode(user.ZipCode); }); } private presentBiometricDialog(user) { this.faio.show({ clientId: 'Fingerprint Authetnciation', clientSecret: 'Ate343_9347lajF', // Only necessary for Android disableBackup: true, // Only for Android(optional) localizedFallbackTitle: this.ts.trPK('login', 'use-pin'), // Only for iOS localizedReason: this.ts.trPK('login', 'auth-please') // Only for iOS }).then((result: any) => { // this.checkActivationCode(); this.getMobileInfo(user); }).catch((error: any) => console.log(error)); } public onLogin() { this.checkUserAuthentication(); } // public loginWithMyAccount() { // // this.loginWithTamer(); // this.loginWithTamer(); // } /* TODO to be removed later */ // public loginWithEnas() { // alert('you are doing slient login width enas account '); // const user = new AuthenticatedUser(); // user.PatientID = 862616; // user.PatientTypeID = PATIENT_TYPE.PERMANENT; // user.PatientOutSA = false; // user.TokenID = '@dm!n'; // user.ProjectID = 0; // user.NationalityID = '2300948375'; // user.MobileNo = user.MobileNumber = '554355126'; // user.ZipCode = '+966'; // user.Address = 'riyadh'; // user.FirstName = 'MOHAMED'; // user.MiddleName = 'yaghi'; // user.LastName = 'mohammed'; // user.Age = 30; // user.agreed = true; // const birthDate = new Date(); // birthDate.setFullYear(birthDate.getFullYear() - 29); // user.DateofBirth = this.cs.convertISODateToJsonDate(this.cs.getDateISO(birthDate)); // user.Email = 'Mohamed.Afifi@cloudsolution-sa.com'; // user.PatientName = 'enas yaghi'; // this.authService.updateLoggedInUser(user).subscribe(done => { // this.authService.startIdleMonitoring(); // this.cs.openHome(); // }); // } // public loginWithVaccineUser() { // alert('you are doing slient login width vaccine account '); // const user = new AuthenticatedUser(); // user.PatientID = 862616; // user with vaccines in dev // user.PatientTypeID = PATIENT_TYPE.PERMANENT; // user.PatientOutSA = false; // user.TokenID = '@dm!n'; // user.NationalityID = '2300948375'; // user.MobileNo = user.MobileNumber = '554355126'; // user.ProjectID = 0; // user.ZipCode = '+966'; // user.Address = 'riyadh'; // user.FirstName = 'MOHAMED'; // user.MiddleName = 'yaghi'; // user.LastName = 'mohammed'; // user.Age = 30; // user.agreed = true; // const birthDate = new Date(); // birthDate.setFullYear(birthDate.getFullYear() - 29); // user.DateofBirth = this.cs.convertISODateToJsonDate(this.cs.getDateISO(birthDate)); // user.Email = 'minna.barry@cloudsolution-sa.com'; // user.PatientName = 'enas yaghi'; // this.authService.updateLoggedInUser(user).subscribe(done => { // this.authService.startIdleMonitoring(); // this.cs.openHome(); // }); // } // public loginWithEyeMeasureUser() { // alert('you are doing slient login width eye measurements user account '); // const user = new AuthenticatedUser(); // user.PatientID = 873010; // user.PatientTypeID = PATIENT_TYPE.PERMANENT; // user.PatientOutSA = false; // user.TokenID = '@dm!n'; // user.NationalityID = '2302581828'; // user.ProjectID = 0; // user.MobileNo = user.MobileNumber = '555333541'; // user.ZipCode = '+966'; // user.Address = 'riyadh'; // user.FirstName = 'eye'; // user.MiddleName = 'user'; // user.LastName = 'measurment'; // user.Age = 30; // user.agreed = true; // const birthDate = new Date(); // birthDate.setFullYear(birthDate.getFullYear() - 29); // user.DateofBirth = this.cs.convertISODateToJsonDate(this.cs.getDateISO(birthDate)); // user.Email = 'sultan.khan@hmg.local'; // user.PatientName = 'eye user'; // this.authService.updateLoggedInUser(user).subscribe(done => { // this.authService.startIdleMonitoring(); // this.cs.openHome(); // }); // } /* TODO login with mr rwaid */ // public loginWithRwaid() { // alert('you are doing slient login width mr: rwaid account'); // const user = new AuthenticatedUser(); // // tamer with eye measurments 1231755 // user.PatientID = 1018977; // user.PatientTypeID = PATIENT_TYPE.PERMANENT; // user.ProjectID = 0; // user.PatientOutSA = false; // user.TokenID = '@dm!n'; // user.NationalityID = '1001242559'; // user.MobileNo = user.MobileNumber = '545156035'; // user.ZipCode = '+966'; // user.Address = 'riyadh'; // user.FirstName = 'rwaid'; // user.MiddleName = 'el mallah'; // user.LastName = 'mohammed'; // user.Age = 30; // user.agreed = true; // const birthDate = new Date(); // birthDate.setFullYear(birthDate.getFullYear() - 29); // user.DateofBirth = this.cs.convertISODateToJsonDate(this.cs.getDateISO(birthDate)); // user.Email = 'mohamed.afifi@cloudsolution-sa.com'; // user.PatientName = 'rwaid al mallah'; // this.authService.updateLoggedInUser(user).subscribe(done => { // this.authService.startIdleMonitoring(); // this.cs.openHome(); // }); // } // public loginWithTamer() { // alert('you are doing slient login width tamer account'); // const user = new AuthenticatedUser(); // user.PatientID = 1231755; // user.PatientTypeID = PATIENT_TYPE.PERMANENT; // user.ProjectID = 0; // user.PatientOutSA = false; // user.TokenID = '@dm!n'; // user.NationalityID = '1001242559'; // user.MobileNo = user.MobileNumber = '537503378'; // user.ZipCode = '+966'; // user.Address = 'riyadh'; // user.FirstName = 'tamer'; // user.MiddleName = 'faneshah'; // user.LastName = 'faneshah'; // user.Age = 30; // user.agreed = true; // const birthDate = new Date(); // birthDate.setFullYear(birthDate.getFullYear() - 29); // user.DateofBirth = this.cs.convertISODateToJsonDate(this.cs.getDateISO(birthDate)); // user.Email = 'mohamed.afifi@cloudsolution-sa.com'; // user.PatientName = 'tamer fneshah'; // this.authService.updateLoggedInUser(user).subscribe(done => { // this.authService.startIdleMonitoring(); // this.cs.openHome(); // }); // } private startListeneingForSMS(title?: string) { this.startReceivingSMS(); //this.presentSMSPasswordDialog(title); } private checkUserAuthentication() { const request = new CheckUserAuthenticationRequest(); request.P_USER_NAME = this.username; request.P_LANGUAGE = this.language; request.P_PASSWORD = this.password; this.authService.checkUserAuthentication( request, () => { }, this.ts.trPK('general', 'ok')).subscribe((result: CheckUserAuthenticationResponse) => { if (this.cs.validResponse(result)) { this.loginData.LogInTokenID = result.LogInTokenID; this.sharedData.setSharedData(this.loginData, "logindata"); this.cs.openSMSPage(); } }); } public backClicked() { this.smsService.stopSMSMonitoring(); } private startReceivingSMS() { // this.smsModal.presentModal(); // this.smsService.startSMSMonitoring((code) => { // this.smsModal.dismiss; // this.global_code = code; // SMSService.code = this.global_code; // this.checkActivationCode(code); // this.cs.dismissSMSDialog().subscribe(cleared => { // this.checkActivationCode(code); // }); // }); } public presentSMSPasswordDialog(title?: string) { this.cs.presentSMSPasswordDialog( (code: string) => { this.checkActivationCode(code); }, null, title); } private checkActivationCode(readedCode?) { /*const request = new CheckActivationCodeRequest(); request.IsMobileFingerPrint = this.isMobileFingerPrint; request.FingerPrintPatientIdentificationID = this.FingerPrintPatientIdentificationID; request.LogInTokenID = this.loginTokenID; request.PatientOutSA = this.patientOutSA ? 1 : 0; request.activationCode = readedCode || '0000'; request.IsSilentLogin = !readedCode; request.PatientMobileNumber = this.mobileNumber; request.ZipCode = this.zipCode; request.isRegister = false;*/ // request.SearchType = this.loginType; // if (this.loginType === LoginComponent.IDENTIFCIATION_LOGIN_TYPE) { // request.PatientIdentificationID = this.id; // request.PatientID = 0; // } else { // request.PatientID = Number(this.id); // request.PatientIdentificationID = ''; // } // this.authService.checkActivationCode( // request, // () => { // //this.presentSMSPasswordDialog(); // this.smsModal.presentModal(); // }, this.ts.trPK('general', 'retry')).subscribe((result: CheckActivationCodeResponse) => { // if (this.cs.validResponse(result)) { // if (this.cs.hasData(result.List)) { // this.smsService.stopSMSMonitoring(); // this.checkIfUserAgreedBefore(result); // } // } // }); } private checkIfUserAgreedBefore(result: CheckActivationCodeResponse) { this.authService.setAuthenticatedUser(result).subscribe(() => { // if (this.authService.isAgreedBefore()) { // this.cs.openHome(); // } else { // // this.cs.openAgreement(); // } }); } private checkUserAgreement() { } public signOut() { // this.cs.presentConfirmDialog(this.ts.trPK('login', 'sign-out'), // () => { // this.authService.clearUser().subscribe(success => { // this.id = null; // if (this.countryCode) { // this.internationlMobile.setMobileNumber(this.countryCode.code, null); // } // }); // }); } public openForgotID() { this.cs.openUserForgot(); } public onDismiss() { // this.global_code = SMSService.code; //this.checkActivationCode(this.global_code); } public onCancelled() { console.log("Modal pop up cancelled"); } }