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/authentication/login/login.component.ts

431 lines
16 KiB
TypeScript

import { Component, OnInit, 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, Platform, Events } from '@ionic/angular';
import { TranslatorService } from 'src/app/hmg-common/services/translator/translator.service';
import { CheckUserAuthenticationResponse } from 'src/app/hmg-common/services/authentication/models/check-user-auth.response';
import { SmsReaderService } from 'src/app/hmg-common/services/sms/sms-reader.service';
import { FingerprintAIO } from '@ionic-native/fingerprint-aio/ngx';
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';
import { LoginRequest } from 'src/app/hmg-common/services/authentication/models/login.request';
import { Password } from '../models/password';
import { CheckUserAuthenticationRequest } from 'src/app/hmg-common/services/authentication/models/check-user-auth.request';
import { CheckAppVersionResponse } from 'src/app/hmg-common/services/authentication/models/check-app-version.response';
import { PushService } from 'src/app/hmg-common/services/push/push.service';
@Component({
selector: 'login',
templateUrl: './login.component.html',
styleUrls: ['./login.component.scss']
})
export class LoginComponent implements OnInit, OnDestroy {
deviceToken1: any;
6 years ago
direction: string;
6 years ago
7 years ago
constructor(
public cs: CommonService,
public authService: AuthenticationService,
public router: Router,
public alertController: AlertController,
public ts: TranslatorService,
public smsService: SmsReaderService,
private faio: FingerprintAIO,
public events: Events,
7 years ago
public ngZone: NgZone,
public device: Device,
public splash: SplashScreen,
public sharedData: SharedDataService,
public plt: Platform,
public pushService: PushService
) {
6 years ago
this.direction = TranslatorService.getCurrentLanguageName();
this.events.subscribe('logoutFlage', logoutFlage => {
console.log('login compont logoutFlage: ' + logoutFlage);
// tslint:disable-next-line: triple-equals
if (logoutFlage == true) {
console.log(' subscribe check logoutFlage: ' + logoutFlage);
6 years ago
this.logoutFlage = logoutFlage;
localStorage.setItem('logoutFlage', logoutFlage);
6 years ago
}
});
this.getuser = this.cs.sharedService.getSharedData(
AuthenticationService.IMEI_USER_DATA,
false
);
// alert(" this.getuser "+this.getuser);
if (this.getuser) {
6 years ago
this.user = true;
} else {
6 years ago
this.user = false;
6 years ago
}
}
appLang = 1;
isExpired = false;
isSupportAr = false;
isAppleStore = false;
memberLogin: any = {};
public password: string;
private language: string;
public username: string;
public remeberMe = true;
private iosLink: string;
private androidLink: string;
public currentLang = 1;
private patientOutSA: boolean;
private loginTokenID: string;
private isMobileFingerPrint: boolean;
private FingerPrintPatientIdentificationID: string;
private loginData = new LoginModel();
private empname: any;
private logintype: any;
public loginDiv = true;
public welcomeBack = false;
public logo = 'assets/icon/login/password.png';
deviceToken: any = '';
user = false;
DeviceType: string;
requestGetLoginInfo: any;
logoutFlage: boolean ;
getuser: any = '';
6 years ago
getlastlogin: any;
private checkUserResult: CheckUserAuthenticationResponse;
7 years ago
ngOnInit() {
6 years ago
// if(!this.cs.getIsTimeSessionOut()){
// this.getlastlogin = this.cs.sharedService.getSharedData(
// AuthenticationService.IMEI_USER_DATA,
// false
// );
// console.log("this.getlastlogin"+ this.getlastlogin);
// }
this.currentLang = TranslatorService.getCurrentLanguageCode();
console.log(TranslatorService.CURRENT_LANGUAGE)
console.log(TranslatorService.EN)
if (TranslatorService.CURRENT_LANGUAGE == TranslatorService.EN) {
this.language = "US";
this.changeLanguage('2')
} else {
this.language = "AR";
this.changeLanguage('1')
}
console.log("current lang: "+this.currentLang)
//this.ts.switchLanguage();
6 years ago
// this.deviceToken= this.cs.sharedService.getSharedData(AuthenticationService.DEVICE_TOKEN, false);
// console.log("get deviceToken login"+ this.deviceToken)
6 years ago
// this.getuser = this.cs.sharedService.getSharedData(
// AuthenticationService.IMEI_USER_DATA,
// false
// );
// if(this.getuser){
// console.log("this.getuser"+this.getuser);
// this.logoutFlage = true;
// }
6 years ago
this.events.subscribe('user', user => {
6 years ago
this.user = user;
});
6 years ago
6 years ago
//this.deviceToken = localStorage.getItem('devicyeToken');
//this.deviceToken1 =this.cs.getDeviceToken();
6 years ago
console.log(" this.user login in init" + this.user);
//this.deviceToken = localStorage.getItem('devicyeToken');
this.deviceToken =this.cs.getDeviceToken();
6 years ago
console.log('lngOnInit localStorage: ' + this.deviceToken1);
console.log('lngOnInit getDeviceToken: ' + this.deviceToken);
6 years ago
if (this.deviceToken) {
console.log('login enabled first time: ' + this.deviceToken);
6 years ago
} else {
console.log('no deviceToken' );
this.pushService.startReceiving();
6 years ago
}
// here will delete below part and depdding on user (response from getMobileInfo)
6 years ago
this.username = localStorage.getItem('user');
this.password = localStorage.getItem('password'); // ****//
const remember = localStorage.getItem('remember'); // ****//
this.empname = localStorage.getItem('emp-name');
this.logintype = localStorage.getItem('login-type');
6 years ago
// tslint:disable-next-line: triple-equals
if (remember == 'true') { this.remeberMe = true ; } else { this.remeberMe = false; }
}
7 years ago
ngOnDestroy(): void {
this.backClicked();
}
public changeLanguage(langNumber) {
console.log("current lang: "+this.currentLang)
console.log("click lang: "+langNumber)
if(this.currentLang == langNumber){
this.currentLang = langNumber;
return;
6 years ago
} else {
this.ts.switchLanguage();
6 years ago
// tslint:disable-next-line: triple-equals
if (TranslatorService.CURRENT_LANGUAGE == TranslatorService.EN) {
6 years ago
this.language = 'US';
} else {
6 years ago
this.language = 'AR';
}
this.currentLang = TranslatorService.getCurrentLanguageCode();
7 years ago
}
this.currentLang = langNumber;
6 years ago
if (TranslatorService.CURRENT_LANGUAGE == TranslatorService.EN){
this.direction = 'en';
} else {
this. direction = 'ar';
}
7 years ago
}
public forgetPasswordPage() {
7 years ago
this.cs.openUserForgot();
}
7 years ago
private hideSplashScreen(stopLoading = false) {
// this.splash.hide();
if (stopLoading) {
this.cs.stopLoading();
7 years ago
}
7 years ago
}
7 years ago
public addValue(e): void {
6 years ago
this.remeberMe = true;
this.remeberMyInfo();
}
public remeberMyInfo() {
if (this.username) {localStorage.setItem('user', this.username); }
if (this.password) {localStorage.setItem('password', this.password); }
localStorage.setItem('remember', 'true');
}
7 years ago
7 years ago
public onLogin() {
this.deviceToken = localStorage.getItem('deviceToken');
if (this.deviceToken) {
this.checkAppUpdated();
} else {
this.pushService.startReceiving();
setTimeout(() => {
6 years ago
this.deviceToken = localStorage.getItem('deviceToken');
this.checkAppUpdated();
6 years ago
console.log('login enabled second time: ' + this.deviceToken);
}, 1000);
}
}
public checkAppUpdated() {
this.authService.checkApplicationVersion(
() => {
/* Write code for error */
}).subscribe((result: CheckAppVersionResponse) => {
// tslint:disable-next-line: triple-equals
if (result.MessageStatus == 2 && result.ErrorType == 4) {
this.cs.presentAcceptDialog(result.ErrorEndUserMessage, () => {
this.handleAppUpdate(result);
});
// tslint:disable-next-line: triple-equals
} else if (result.MessageStatus == 1) {
this.checkUserAuthentication();
}
});
}
private handleAppUpdate(result) {
this.iosLink = result.IOSLink;
this.androidLink = result.AndroidLink;
if (this.plt.is('android')) {
if (this.androidLink) {
window.open(this.androidLink, '_system');
}
} else if (this.plt.is('ios')) {
if (this.iosLink) {
window.open(this.iosLink, '_system');
}
}
7 years ago
}
7 years ago
7 years ago
private checkUserAuthentication() {
console.log('debug Here!!');
console.log(this.username);
console.log(this.language);
console.log(this.password);
7 years ago
this.cs.startLoading();
const request = new LoginRequest();
request.P_USER_NAME = this.username;
request.P_LANGUAGE = this.language;
request.P_PASSWORD = this.password;
console.log(request);
this.authService
6 years ago
.login(request, () => {
console.log('error here');
// console.log(result.MessageStatus);
// this.sharedData.setSharedData(true, Password.IS_EXPIRED_PSW);
// this.userCheck();
}, this.ts.trPK('general', 'ok'))
7 years ago
.subscribe((result: CheckUserAuthenticationResponse) => {
console.log('success');
this.cs.stopLoading();
7 years ago
if (this.cs.validResponse(result)) {
6 years ago
// alert("result.MemberLoginList.EMPLOYEE_NAME :" + result.MemberLoginList[0].EMPLOYEE_NAME);
7 years ago
this.loginData.LogInTokenID = result.LogInTokenID;
this.loginData.MobileNumber = result.MemberLoginList.P_MOBILE_NUMBER;
6 years ago
this.loginData.P_USER_NAME = this.username;
6 years ago
// this.loginData.EMPLOYEE_NAME =result.MemberLoginList[0].EMPLOYEE_NAME;
this.sharedData.setSharedData(this.loginData, AuthenticationService.LOGIN_DATA);
this.cs.sharedService.setSharedData(this.loginData.P_USER_NAME, LoginRequest.SHARED_DATA);
this.remeberMyInfo();
// this.cs.openSMSPage(); phase#1 one type of OTP
6 years ago
// if(!this.welcomeBack){
this.cs.openConfirmLoginPage(); // phase#2 add 4 types for OTP
6 years ago
// }
} else {
console.log('result.IsPasswordExpired');
console.log(result.IsPasswordExpired);
if (result.IsPasswordExpired) {
this.presentPasswordExpiredDialog();
}
7 years ago
}
});
}
7 years ago
7 years ago
public backClicked() {
this.smsService.stopSMSMonitoring();
}
7 years ago
6 years ago
async presentPasswordExpiredDialog() {
const alert = await this.alertController.create({
header: this.ts.trPK('general', 'confirm'),
message: this.ts.trPK('login', 'password-expired'),
buttons: [
6 years ago
{
text: this.ts.trPK('general', 'ok'),
6 years ago
handler: () => {
console.log('Confirm Okay');
this.sharedData.setSharedData(true, Password.IS_EXPIRED_PSW);
this.userCheck();
}
}
]
6 years ago
});
await alert.present();
}
7 years ago
public openForgotID() {
this.cs.openUserForgot();
}
7 years ago
6 years ago
public userCheck() {
this.cs.startLoading();
const request = new CheckUserAuthenticationRequest();
request.P_USER_NAME = this.username;
this.authService.checkUserAuthentication(
request,
() => {
/* Write code for error */
}, this.ts.trPK('general', 'ok')).subscribe((result: CheckUserAuthenticationResponse) => {
if (this.cs.validResponse(result)) {
this.checkUserResult = result;
this.cs.stopLoading();
this.sendSMSForForgotPassword();
}
});
6 years ago
}
private sendSMSForForgotPassword() {
6 years ago
this.cs.startLoading();
const changePwdObj = new LoginRequest();
6 years ago
changePwdObj.MobileNumber = this.checkUserResult.BasicMemberInformation.P_MOBILE_NUMBER;
changePwdObj.P_USER_NAME = this.username;
changePwdObj.P_MOBILE_NUMBER = this.checkUserResult.BasicMemberInformation.P_MOBILE_NUMBER;
this.authService.sendPublicSMS(
changePwdObj,
() => {
// this.sendSMSForForgotPassword();
6 years ago
/* Write code for error */
}, this.ts.trPK('general', 'ok')).subscribe((result: CheckUserAuthenticationResponse) => {
if (this.cs.validResponse(result)) {
this.checkUserResult = result;
console.log('2');
6 years ago
console.log(result);
this.loginData.LogInTokenID = result.LogInTokenID;
this.loginData.P_USER_NAME = this.username;
6 years ago
// this.loginData.EmployeeName =result.MemberLoginList[0].EMPLOYEE_NAME;
6 years ago
this.cs.sharedService.setSharedData(this.loginData.P_USER_NAME, LoginRequest.SHARED_DATA);
this.sharedData.setSharedData(this.loginData, AuthenticationService.LOGIN_DATA);
this.sharedData.setSharedData(true, Password.IS_FORGET_PSW);
this.cs.stopLoading();
this.cs.openSMSPage();
}
});
}
6 years ago
login() {
let anotherUser = this.sharedData.getSharedData('anotherUser');
if(anotherUser){
this.username = '';
this.password = '';
}
console.log('login emit');
console.log('login');
// this.checkUserAuthentication();
// this.loginDiv=true;
this.user = false;
6 years ago
}
6 years ago
loginWithUser() {
console.log('loginWithUser');
6 years ago
this.cs.openConfirmLoginPage();
}
///
getLastLoginInfo() {
this.requestGetLoginInfo = {
DeviceType: this.cs.getDeviceType(), // "Android",//this.cs.getDeviceType(),
6 years ago
DeviceToken: this.cs.getDeviceToken()// "5ca8a69cf1804db55264c349edffb99b9d63acd9fa9b6b18956bcb2ad3f2ba36"//this.deviceToken
};
this.authService.getLoginInfo(this.requestGetLoginInfo, () => {}, this.ts.trPK('general', 'ok')).subscribe(res => {
if (this.cs.validResponse(res)) {
6 years ago
if (res.Mohemm_GetMobileLoginInfoList.length > 0) {
6 years ago
this.cs.sharedService.setSharedData(
// res.Patient_SELECTDeviceIMEIbyIMEIList[0],
res.Mohemm_GetMobileLoginInfoList[0],
AuthenticationService.IMEI_USER_DATA
);
this.user = true;
} else {
this.user = false;
}
}
});
}
}