import { Component, OnInit, NgZone } from '@angular/core'; import { NavigationExtras, Router } from '@angular/router'; import { AnimationController, ModalController, Platform } from '@ionic/angular'; import { LoginUserRespose } from 'src/app/models/user.model'; import { AuthService } from 'src/app/services/auth.service'; import { EditProfilePage } from './edit-profile/edit-profile.page'; import { StorageService } from '../../services/storage.service'; import { NotificationsService } from '../../services/notifications.service'; import { SessionStore } from 'src/app/store/session.service'; import { EventTrigger } from '../../services/eventTrigger.service'; import { ThemeService } from 'src/app/services/theme.service' import { environment } from 'src/environments/environment'; @Component({ selector: 'app-profile', templateUrl: './profile.page.html', styleUrls: ['./profile.page.scss'], }) export class ProfilePage implements OnInit { userLoginPreference = '' notificationdata: any[] = []; DataArray: Array = []; service: "agenda"; typeagenda: "official"; typeagenda2: "pessoal"; pr: "100000014"; md: "100000011"; date: "60:20"; location: "Gabinete"; isProfileOpen = false hideImage = false logoutOut = false notificationStatus = ''; environment = environment SessionStore = SessionStore; constructor( private modalController: ModalController, private animationController: AnimationController, private router: Router, private storageservice: StorageService, private zone: NgZone, private platform: Platform, private eventTriger: EventTrigger, public ThemeService: ThemeService, private notificationService: NotificationsService ) { router.events.subscribe((val) => { this.isProfileOpen = false this.logoutOut = true }); this.eventTriger.getObservable().subscribe((event) => { if (event.notification == "recive") { this.getNotificationData(); } else if(event.notification == "deleted") { console.log('header', event.notification) this.getNotificationData(); } }); this.notificationService.notificationReceived.subscribe(() => { this.getNotificationData(); }); setTimeout(() => { this.hideImage = true }, 2000) } ngOnInit() { this.getNotificationData(); } close() { this.modalController.dismiss(); } notImplemented() { } asyncNotification() { } async getNotificationData() { //const keyExist = await this.storageservice.keyExist("Notifications") //if(keyExist) { await this.storageservice.get("Notifications").then((value) => { this.DataArray = [] value.forEach((element, i) => { let notificationObject; if (element.notification) { notificationObject = { index: i, title: element.notification.title, Service: element.data.Service, Object: element.data.Object, IdObject: element.data.IdObject, FolderId: element.data.FolderId, body: element.notification.body, dateInit: this.getFormatedTime(element.data.dateInit), dateEnd: this.getFormatedTime(element.data.dateEnd), Location: element.data.Location, TypeAgenda: element.data.TypeAgenda, Role: element.data.Role, Status: element.data.Status } } else if (element.data) { notificationObject = { index: i, title: element.title, Service: element.data.Service, Object: element.data.Object, IdObject: element.data.IdObject, FolderId: element.data.FolderId, body: element.body, dateInit: this.getFormatedTime(element.data.dateInit), dateEnd: this.getFormatedTime(element.data.dateEnd), Location: element.data.Location, TypeAgenda: element.data.TypeAgenda, Role: element.data.Role, Status: element.data.Status } } else { { notificationObject = { FolderId: element.FolderId, IdObject: element.IdObject, Location: element.Location, Object: element.Object, Role: element.Role, Service: element.Service, Status: element.Status, TypeAgenda: element.TypeAgenda, body: element.body, dateEnd: element.dateEnd, dateInit: element.dateInit, index: element.index, title: element.title } } } this.DataArray.push(notificationObject) }); this.notificationdata = this.DataArray }).catch((error) => { console.error('storage getnotification: ', error) }) // } } getFormatedTime(dateString) { var date = new Date(dateString); var hours = date.getHours() /* > 12 ? date.getHours() - 12 : date.getHours() */; var am_pm = date.getHours() >= 12 ? "pm" : "am"; var minutes = date.getMinutes() < 10 ? "0" + date.getMinutes() : date.getMinutes(); let time = hours + ":" + minutes /* + " " + am_pm */; return time; } notificatinsRoutes = (index, Service, Object, IdObject, FolderId) => { if (Service === "agenda" && IdObject.length > 10) { this.zone.run(() => this.router.navigate(['/home/agenda', IdObject, 'agenda'])); } else if (Service === "gabinete-digital" && Object === "expediente") { this.zone.run(() => this.router.navigate(['/home/gabinete-digital/expediente', IdObject, 'gabinete-digital'])); } else if (Service === "agenda" && Object === "event-list") { //this.zone.run(() => this.router.navigate(['/home/gabinete-digital/event-list/approve-event',IdObject, 'agenda'])); this.zone.run(() => this.router.navigate(['/home/agenda/event-list/approve-event', IdObject, 'agenda'])); } else if (Service === "gabinete-digital" && Object === "despachos") { this.zone.run(() => this.router.navigate(['/home/gabinete-digital/despachos', IdObject, 'gabinete-digital'], { replaceUrl: true })); } else if (Service === "gabinete-digital" && Object === "parecer") { this.zone.run(() => this.router.navigate(['/home/gabinete-digital/pedidos', IdObject, 'gabinete-digital'])); } else if (Service === "gabinete-digital" && Object === "deferimento") { this.zone.run(() => this.router.navigate(['/home/gabinete-digital/pedidos', IdObject, 'gabinete-digital'])); } else if (Service === "gabinete-digital" && Object === "despachos-pr") { this.zone.run(() => this.router.navigate(['/home/gabinete-digital/despachos-pr', IdObject, 'gabinete-digital'])); } else if (Service === "accoes" && Object === "accao") { this.zone.run(() => this.router.navigate(['/home/publications', IdObject])); } else if (Service === "accoes" && Object === "publicacao") { this.zone.run(() => this.router.navigate(['/home/publications/view-publications', FolderId, IdObject])); } else if (Service === "gabinete-digital" && Object === "diplomas") { this.zone.run(() => this.router.navigate(['/home/gabinete-digital/diplomas', IdObject, 'gabinete-digital'])); } else if (Service === "gabinete-digital" && Object === "diplomas-assinar") { this.zone.run(() => this.router.navigate(['/home/gabinete-digital/diplomas-assinar', IdObject, 'gabinete-digital'])); } else if (Service === "gabinete-digital" && Object === "expedientes-pr") { this.zone.run(() => this.router.navigate(['/home/gabinete-digital/expedientes-pr', IdObject, 'gabinete-digital'])); } else if (Service === "chat") { let navigationExtras: NavigationExtras = { queryParams: { "roomId": IdObject, } }; this.zone.run(() => this.router.navigate(['/home/chat'], navigationExtras)); } // this.notificationservice.tempClearArray(); this.deleteNotification(index); } deleteNotification(index) { this.notificationdata = this.notificationdata.filter(item => item.index != index); this.storageservice.store("Notifications", this.notificationdata).then((store) => { this.storageservice.get("Notifications").then((value) => { this.eventTriger.publishSomeData({ notification: "deleted" }) }).catch((error) => { console.error('storage delete notification: ', error) }) }); } logout() { SessionStore.setInativity(false) SessionStore.setUrlBeforeInactivity(this.router.url); this.logoutOut == false if (environment.production) { window.location.pathname = '/auth' } else { const pathBeforeGoOut = window.location.pathname this.router.navigateByUrl('/auth', { replaceUrl: true }); setTimeout(() => { if (this.logoutOut == false || pathBeforeGoOut == window.location.pathname) { window.location.pathname = '/auth' } else { } }, 500) } } async editProfile() { const enterAnimation = (baseEl: any) => { const backdropAnimation = this.animationController.create() .addElement(baseEl.querySelector('ion-backdrop')!) .fromTo('opacity', '0.01', 'var(--backdrop-opacity)'); const wrapperAnimation = this.animationController.create() .addElement(baseEl.querySelector('.modal-wrapper')!) .keyframes([ { offset: 0, opacity: '1', right: '-100%' }, { offset: 1, opacity: '1', right: '0px' } ]); return this.animationController.create() .addElement(baseEl) .easing('ease-out') .duration(500) .addAnimation([backdropAnimation, wrapperAnimation]); } const leaveAnimation = (baseEl: any) => { return enterAnimation(baseEl).direction('reverse'); } if (this.isProfileOpen == false) { this.isProfileOpen = true; const modal = await this.modalController.create({ component: EditProfilePage, cssClass: 'model profile-modal search-submodal', componentProps: { } }); await modal.present(); modal.onDidDismiss().then(() => { this.isProfileOpen = false; }) } } }