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

280 lines
8.6 KiB
TypeScript

import { Component, OnInit } from '@angular/core';
import { Platform, Events, MenuController, ModalController, NavController } from '@ionic/angular';
import { TranslatorService } from './hmg-common/services/translator/translator.service';
import { CommonService } from './hmg-common/services/common/common.service';
import { AuthenticationService } from './hmg-common/services/authentication/authentication.service';
import { AuthenticatedUser } from './hmg-common/services/authentication/models/authenticated-user';
import { KeyboardService } from './hmg-common/services/keyboard/keyboard.service';
import { PushService } from '../../src/app/hmg-common/services/push/push.service';
import { LazyLoadingService } from './hmg-common/services/lazy-loading/lazy-loading.service';
import { DomSanitizer } from '@angular/platform-browser';
import { SplashScreen } from '@ionic-native/splash-screen/ngx';
import { Router } from '@angular/router';
import { DigitalIdComponent } from './authentication/digital-id/digital-id.component';
import { checkAndUpdatePureExpressionInline } from '@angular/core/src/view/pure_expression';
@Component({
selector: 'app-root',
styleUrls: ['./app.component.scss'],
templateUrl: 'app.component.html'
})
export class AppComponent implements OnInit {
start: any = false;
menuList: any = [];
User_name_Emp = '';
user_image: any = '../assets/imgs/profile.png';
menuSide = 'left';
notBadge: number;
companyUrl = '../assets/imgs/CSLogo.png';
companyDesc = 'Powered By Cloud Solutions';
direction = 'ltr';
User_Job_name: string;
public logoutFlage: any = false;
user: boolean;
deviceToken: string;
TeamFlag: string = 'false';
isIOS = false;
public requestGetLoginInfo: {
DeviceType: string;
DeviceToken: string; // this.deviceToken
};
private digitalIDUser: any;
constructor(
public ts: TranslatorService,
private cs: CommonService,
private lazyLoadingService: LazyLoadingService,
private platform: Platform,
private events: Events,
private keyboardService: KeyboardService,
private menu: MenuController,
private authService: AuthenticationService,
private sanitizer: DomSanitizer,
public pushService: PushService,
private splashScreen: SplashScreen,
public router: Router,
public modalController: ModalController,
public nav: NavController,
) {
this.events.subscribe('img-change', displayImg => {
console.log('app compont: ' + displayImg);
this.user_image = this.sanitizer.bypassSecurityTrustUrl('data:Image/*;base64,' + displayImg);
});
}
ngOnInit() {
this.initializeApp();
}
private hideSplashScreen() {
setTimeout(() => {
this.splashScreen.hide();
}, 1000);
}
public initializeApp() {
this.cs.startLoading();
this.start = false;
this.menu.enable(false);
this.lazyLoadingService.monitorLazyLoading(15, true);
this.platform.ready().then(() => {
this.hideSplashScreen();
this.ts.loadResources(() => {
this.isIOS = this.platform.is('ios') ? true : false;
this.initializeDirection();
this.start = true;
if (this.isIOS) {
this.monitUrlChange();
}
this.watchLanguageChangeEvents();
this.subscribeEvents();
this.keyboardService.watchKeyboard();
this.startReceivingPushService();
});
});
}
private monitUrlChange() {
this.router.events.subscribe((val) => {
if (this.router.isActive('/authentication/login', true)) {
this.direction = 'ltr';
} else {
this.direction = TranslatorService.getCurrentDirection();
}
});
}
private startReceivingPushService() {
this.pushService.startReceiving();
setTimeout(() => {
console.log(' in setTimeout startReceiving');
this.getLastLoginInfo();
}, 4000);
}
public subscribeEvents() {
this.platform.backButton.subscribe(() => {
if (this.router.isActive('/authentication/login', true)) {
navigator['app'].exitApp();
} else if (this.router.isActive('/home', true)) {
this.nav.navigateRoot('/home');
}
});
this.events.subscribe('setMenu', () => {
const user = this.authService.loadAuthenticatedUser().subscribe((user: AuthenticatedUser) => {
if (user) {
console.log(user);
localStorage.setItem("digitalIDUser", JSON.stringify(user));
this.digitalIDUser = user//JSON.stringify(user);
this.companyUrl = user.CompanyImageURL ? user.CompanyImageURL : '../assets/imgs/CSLogo.png';
this.companyDesc = user.CompanyImageDescription ? user.CompanyImageDescription : 'Powered By Cloud Solutions';
this.User_name_Emp = user.EMPLOYEE_DISPLAY_NAME;
this.authService.checkAds({
EmployeeNumber: '',
ItgEnableAt: "Before Service Initiation",
ItgServiceName: "Ticket"
}, () => { }, this.ts.trPK('general', 'ok')).subscribe(res => {
console.log("Check Ads")
console.log(res);
});
if (this.cs.getUpdateImage().status) {
this.user_image = this.sanitizer.bypassSecurityTrustUrl('data:image/png;base64,' + this.cs.getUpdateImage().img);
} else {
this.user_image = user.EMPLOYEE_IMAGE ? 'data:image/png;base64,' + user.EMPLOYEE_IMAGE : '../assets/imgs/profile.png';
}
this.User_Job_name = user.JOB_NAME;
//erm channel
if (!CommonService.SKIP)
this.cs.navigateForward('/erm-channel/survey');
} else {
console.log(user);
}
});
});
this.events.subscribe('getNotCount', badge => { this.notBadge = badge; });
this.events.subscribe('myTeamFlag', myTeamFlag => { this.TeamFlag = myTeamFlag; });
}
private initializeDirection() {
if (this.isIOS) {
if (this.router.isActive('/authentication/login', true)) {
this.direction = 'ltr';
} else {
this.direction = TranslatorService.getCurrentDirection();
}
} else {
this.direction = TranslatorService.getCurrentDirection();
}
}
private watchLanguageChangeEvents() {
this.events.subscribe(TranslatorService.CHANGE_EVENT, () => {
this.start = false;
this.initializeDirection();
setTimeout(() => {
this.start = true;
}, 100);
});
}
public logout() {
this.cs.sharedService.clearAll();
this.menu.enable(false);
this.logoutFlage = true;
this.events.publish('logoutFlage', this.logoutFlage);
this.cs.setUpdateImage('', false);
this.TeamFlag = 'false';
this.getLastLoginInfo();
}
public openMyTeamPage() {
this.menu.toggle();
this.cs.openMyTeamPage();
}
public openMyRequestPage() {
this.cs.openMyRequestPage();
this.menu.toggle();
}
public profile() {
this.cs.openProfile();
this.menu.toggle();
}
public openNotification() {
this.cs.openNotificationPage();
this.menu.toggle();
}
public openChangePassword() {
this.cs.openChangePassword();
this.menu.toggle();
}
async openDigitalId() {
const modal = await this.modalController.create({
component: DigitalIdComponent,
cssClass: 'digital-id-modal-css',
componentProps: {
'userInfo': this.digitalIDUser//JSON.parse(this.digitalIDUser)
}
});
return await modal.present();
}
private changeImage() {
this.cs.openChangeImagePage();
this.menu.toggle();
}
public closeMenu() {
this.menu.toggle();
}
public getLastLoginInfo() {
this.deviceToken = this.cs.getDeviceToken();
if (this.deviceToken) {
console.log('login enabled first time: ' + this.deviceToken);
} else {
this.pushService.startReceiving();
setTimeout(() => {
this.deviceToken = localStorage.getItem('deviceToken');
}, 1000);
}
this.requestGetLoginInfo = {
DeviceType: this.cs.getDeviceType(),
DeviceToken: this.deviceToken
};
this.authService.getLoginInfo(this.requestGetLoginInfo, () => { }, this.ts.trPK('general', 'ok')).subscribe(res => {
if (this.cs.validResponse(res)) {
if (res.Mohemm_GetMobileLoginInfoList.length > 0) {
this.cs.sharedService.setSharedData(res.Mohemm_GetMobileLoginInfoList[0], AuthenticationService.IMEI_USER_DATA);
this.user = true;
this.events.publish('user', this.user);
if (this.logoutFlage) {
this.cs.openLogin();
}
} else {
this.user = false;
this.events.publish('user', this.user);
if (this.logoutFlage) {
this.cs.openLogin();
}
}
} else { }
});
}
}