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

352 lines
11 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 } 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, NavigationEnd } from '@angular/router';
import { DigitalIdComponent } from './authentication/digital-id/digital-id.component';
import { checkAndUpdatePureExpressionInline } from '@angular/core/src/view/pure_expression';
import { FirebaseX } from '@ionic-native/firebase-x/ngx';
import { BusinessCardComponent } from './authentication/business-card/business-card.component';
@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;
userInfo;
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,
public firebasex: FirebaseX
) {
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.monitorAnalytics();
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();
}
});
}
public monitorAnalytics() {
this.router.events.subscribe((val) => {
if (val instanceof NavigationEnd) {
const lastIndex = val.urlAfterRedirects.lastIndexOf('/');
const currentPageName = val.urlAfterRedirects.substr(lastIndex + 1);
this.setScreenNameAnalytics(currentPageName);
}
});
}
public setScreenNameAnalytics(currentPageName: string) {
try {
this.firebasex.setScreenName(currentPageName).then((result)=>{
console.log(result);
});
} catch (Error) { }
}
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);
this.userInfo = JSON.parse(localStorage.getItem('bussiness-card-info'));
console.log('ENAD TEST')
console.log(this.userInfo)
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: "After Service Submission", //After Service Submission
ItgServiceName: "Login"
}, () => { }, this.ts.trPK('general', 'ok')).subscribe(res => {
var result = JSON.parse(res.Mohemm_ITG_ResponseItem).result.data;
this.cs.sharedService.setSharedData(
result,
AuthenticationService.SERVEY_DATA
)
if (!CommonService.SKIP && result) {
if (result.notificationType == 'Survey') {
this.cs.navigateForward('/erm-channel/survey');
} else {
this.authService.adsDetails({
"ItgNotificationMasterId": result['notificationMasterId']
},
() => { }, this.ts.trPK('general', 'ok')
).subscribe((result) => {
var data = result.Mohemm_ITG_ResponseItem;
if (data) {
this.cs.sharedService.setSharedData(
JSON.parse(data),
AuthenticationService.ADS_DATA
);
this.cs.navigateForward('/erm-channel/home');
}
})
}
}
});
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;
let jobTitle = user.POSITION_NAME.split('.');
if (jobTitle && jobTitle.length > 1) {
this.User_Job_name = jobTitle[0] + " " + jobTitle[1];
}
//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.menu.toggle();
this.cs.openMyRequestPage();
}
public profile() {
this.cs.openProfile('sideMenu');
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();
}
async openBusinessCard() {
// this.userInfo = JSON.parse(localStorage.getItem('bussiness-card-info'));
console.log(this.userInfo);
//this.userInfo = this.cs.sharedService.getSharedData('bussiness-card-info', false);
const modal = await this.modalController.create({
component: BusinessCardComponent,
cssClass: 'business-card-modal-css',
componentProps: {
'userInfo': this.userInfo
}
});
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 { }
});
}
}