import { Component, OnInit, NgZone } from '@angular/core'; import { Router, NavigationExtras } 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 { LocalstoreService } from 'src/app/store/localstore.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 { SortService } from 'src/app/services/functions/sort.service'; @Component({ selector: 'app-profile', templateUrl: './profile.page.html', styleUrls: ['./profile.page.scss'], }) export class ProfilePage implements OnInit { loggeduser: LoginUserRespose; userLoginPreference = '' notificationdata: any[] = []; DataArray: Array = []; service: "agenda"; typeagenda: "official"; typeagenda2: "pessoal"; pr: "100000014"; md: "100000011"; date: "60:20"; location: "Gabinete"; isProfileOpen = false hideImage = false constructor(private modalController: ModalController, private authService: AuthService, private animationController: AnimationController, private router: Router, private localstoreService: LocalstoreService, private storageservice: StorageService, private zone: NgZone, private notificationservice: NotificationsService, private platform: Platform, private eventtrigger: EventTrigger, public ThemeService: ThemeService, ) { this.loggeduser = authService.ValidatedUser; router.events.subscribe((val) => { this.isProfileOpen = false }); setTimeout(()=>{ this.hideImage = true }, 2000) } ngOnInit() { if (this.platform.is('desktop') || this.platform.is('mobileweb')) { // console.log('Notifications not supported') this.getNotificationData(); } else { this.getNotificationData(); } } close() { this.modalController.dismiss(); } notImplemented() { } asyncNotification() { } async getNotificationData() { this.storageservice.get("Notifications").then((value) => { this.DataArray = [] value.forEach((element, i) => { let notificationObject; 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 }) /* await new Promise(resolve => setTimeout(resolve, 1000)); await this.getNotificationData(); */ } 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) => { // console.log(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'])); } this.notificationservice.tempClearArray(); this.deleteNotification(index); this.eventtrigger.publishSomeData({ notification: "deleted" }) } deleteNotification(index) { this.notificationdata = this.notificationdata.filter(item => item.index != index); this.storageservice.store("Notifications", JSON.stringify(this.notificationdata)).then(() => { this.storageservice.get("Notifications").then((value) => { }); }); } logout() { this.authService.logout(); } 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; }) } } }