Files
doneit-web/src/app/pages/events/events.page.ts
T
Peter Maquiran 5652043b8a fix bugs
2022-12-20 17:14:23 +01:00

502 lines
15 KiB
TypeScript

import { Component, OnInit, EventEmitter, Output } from '@angular/core';
import { EventsService } from 'src/app/services/events.service';
import { NavigationExtras, Router } from '@angular/router';
import { ActivatedRoute, NavigationEnd } from '@angular/router';
import { ModalController, Platform } from '@ionic/angular';
import { EventDetailPage } from './event-detail/event-detail.page';
import { ProcessesService } from '../../services/processes.service';
import { LoginUserRespose } from 'src/app/models/user.model';
import { ToDayEventStorage } from 'src/app/store/to-day-event-storage.service';
import { ExpedienteTaskPipe } from 'src/app/pipes/expediente-task.pipe';
import { ExpedienteGdStore } from 'src/app/store/expedientegd-store.service';
import { SqliteService } from 'src/app/services/sqlite.service';
import { BackgroundService } from 'src/app/services/background.service';
import { momentG } from 'src/plugin/momentG';
import { ThemeService } from 'src/app/services/theme.service'
import { Storage } from '@ionic/storage';
import { PermissionService } from 'src/app/services/permission.service';
import { ViewEventPage } from 'src/app/modals/view-event/view-event.page';
import { ChangeProfileService } from 'src/app/services/change-profile.service';
import { SessionStore } from 'src/app/store/session.service';
@Component({
selector: 'app-events',
templateUrl: './events.page.html',
styleUrls: ['./events.page.scss'],
})
export class EventsPage implements OnInit {
today = new Date();
months = ["Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro"];
days = ["Domingo", "Segunda-feira", "Terça-feira", "Quarta-feira", "Quinta-feira", "Sexta-feira", "Sábado"];
customDate = this.days[this.today.getDay()] + ", " + this.today.getDate() + " de " + (this.months[this.today.getMonth()]);
grettings = ["Bom dia", "Boa tarde", "Boa noite"];
greetting = '';
timeDate = this.today.getHours() + ":" + this.today.getMinutes();
segment: string;
public profile: string;
currentEvent: any;
maxSubjectLength = 30;
customText = false;
totalEvent = 0;
currentHoursMinutes: Date | string;
showLoader: boolean;
expedientList: any;
hideSearchBtn: boolean = false;
// shared data
toDayEventStorage = ToDayEventStorage
expedienteGdStore = ExpedienteGdStore
listToPresent = [];
listToPresentexpediente = []
expedienteTaskPipe = new ExpedienteTaskPipe()
@Output() openExpedientListPage: EventEmitter<any> = new EventEmitter<any>();
loggeduser: LoginUserRespose;
constructor(
private eventService: EventsService,
private router: Router,
public activatedRoute: ActivatedRoute,
private processes: ProcessesService,
private modalController: ModalController,
public platform: Platform,
private sqliteservice: SqliteService,
private backgroundservice: BackgroundService,
public ThemeService: ThemeService,
private storage: Storage,
public p: PermissionService,
private changeProfileService: ChangeProfileService,
) {
// this.loggeduser = SessionStore.user;
// this.platform.resize.subscribe(async () => {
// //
// //
// });
// window['zipPhoneCallback'] = function (zipphone) {
// var frame = document.getElementById('home-iframe');
// if(frame) {
// frame['contentWindow']['postMessage']({call:'cookies', value: { cookies: {} }});
// }
// }
// this.changeProfileService.registerCallback(() => {
// this.listToPresent = [];
// this.listToPresentexpediente = []
// })
}
ngOnInit() {
// this.segment = "Combinada";
// this.profile = "mdgpr";
// this.showGreeting();
// this.router.events.forEach((event) => {
// if (event instanceof NavigationEnd && event.url == '/home/events') {
// this.RefreshEvents();
// setTimeout(() => {
// this.LoadList();
// }, 1500)
// }
// });
// this.hideSearch();
// this.backgroundservice.registerBackService('Online', () => {
// this.showGreeting();
// this.RefreshEvents();
// this.LoadList();
// this.hideSearch();
// });
}
hideSearch() {
if (this.router.url == '/home/events') {
this.hideSearchBtn = true;
}
}
doRefresh(event) {
this.RefreshEvents();
this.LoadList();
event.target.complete();
}
onSegmentChange() {
this.RefreshEvents();
}
async RefreshEvents() {
this.currentEvent = "";
this.showLoader = true;
let date = new Date();
let month = date.getMonth() + 1;
let start = date.getFullYear() + "-" + month + "-" + date.getDate() + " " + date.getHours() + ":" + date.getMinutes() + ":" + date.getSeconds();
let end = date.getFullYear() + "-" + month + "-" + date.getDate() + " 23:59:59";
if (this.loggeduser.Profile == 'MDGPR') {
let mdOficialEvents = await this.eventService.getAllMdOficialEvents(start, end).toPromise();
let mdPessoalEvents = await this.eventService.getAllMdPessoalEvents(start, end).toPromise();
const list = mdOficialEvents.concat(mdPessoalEvents);
this.addEventToDb(list);
this.listToPresent = list
if (list.length > 0) {
this.currentEvent = list[0].Subject;
this.currentHoursMinutes = list[0].StartDate;
}
this.totalEvent = list.length;
this.showLoader = false;
}
else if (this.loggeduser.Profile == 'PR') {
let prOficialEvents = await this.eventService.getAllPrOficialEvents(start, end).toPromise();
let prPessoalEvents = await this.eventService.getAllPrPessoalEvents(start, end).toPromise();
const list = prOficialEvents.concat(prPessoalEvents);
this.addEventToDb(list);
if (list.length > 0) {
this.currentEvent = list[0].Subject;
this.currentHoursMinutes = list[0].StartDate;
}
this.listToPresent = list;
this.totalEvent = list.length;
this.showLoader = false;
} else {
if(this.loggeduser.OwnerCalendars.length >= 1) {
let onwEvent:any = await this.eventService.getAllOwnEvents(start, end)
this.listToPresent = onwEvent;
this.totalEvent = onwEvent.length;
this.showLoader = false;
} else {
}
}
}
addEventToDb(list) {
if (this.platform.is('desktop') || this.platform.is('mobileweb')) {
this.storage.set('events', list).then(() => {
//
})
} else {
if (list.length > 0) {
list.forEach(element => {
this.sqliteservice.addEvent(element)
this.sqliteservice.getAllEvents().then((event: any[] = []) => {
let todayEvents = new Array()
event.forEach((element) => {
let eventObject = {
AppointmentState: element.AppointmentState,
Attachments: element.Attachments,
Attendees: element.Attendees,
CalendarId: element.CalendarId,
CalendarName: element.CalendarName,
Category: element.Category,
EndDate: element.EndDate,
EventId: element.EventId,
EventRecurrence: element.EventRecurrence,
EventType: element.EventType,
HasAttachments: element.HasAttachments,
HumanDate: element.HumanDate,
IsAllDayEvent: element.IsAllDayEvent,
IsMeeting: element.IsMeeting,
IsRecurring: element.IsRecurring,
Location: element.Location,
Organizer: element.Organizer,
Profile: element.Profile,
StartDate: element.StartDate,
Subject: element.Subject
}
todayEvents.push(eventObject);
})
})
});
}
}
}
addProcessToDb(list) {
if (this.platform.is('desktop') || this.platform.is('mobileweb')) {
this.storage.set('process', list).then(() => {
//
})
} else {
if (list.length > 0) {
list.forEach(element => {
this.sqliteservice.addProcess(element)
});
}
}
}
getEventsFromLocalDb() {
let date = new Date();
let month = date.getMonth() + 1;
//date.setMonth(date.getMonth() + 1);
let dateToday = date.getFullYear() + "-" + month + "-" + date.getDate();
// ('dateeeeee', dateToday)
if (this.platform.is('desktop') || this.platform.is('mobileweb')) {
this.storage.get('events').then((events: any[] = []) => {
//
let todayEvents = new Array()
this.listToPresent = events
this.totalEvent = this.listToPresent.length
this.currentEvent = this.listToPresent[0].Subject
this.currentHoursMinutes = this.listToPresent[0].StartDate
//
})
this.storage.get('process').then((process: any[] = []) => {
//
const ExpedienteTask = process.map(e => this.expedienteTaskPipe.transform(e))
this.listToPresentexpediente = ExpedienteTask;
})
this.showLoader = false;
} else {
this.sqliteservice.getAllEvents().then((event: any[] = []) => {
let todayEvents = new Array()
event.forEach((element) => {
let eventObject = {
AppointmentState: element.AppointmentState,
Attachments: element.Attachments,
Attendees: element.Attendees,
CalendarId: element.CalendarId,
CalendarName: element.CalendarName,
Category: element.Category,
EndDate: element.EndDate,
EventId: element.EventId,
EventRecurrence: element.EventRecurrence,
EventType: element.EventType,
HasAttachments: element.HasAttachments,
HumanDate: element.HumanDate,
IsAllDayEvent: element.IsAllDayEvent,
IsMeeting: element.IsMeeting,
IsRecurring: element.IsRecurring,
Location: element.Location,
Organizer: element.Organizer,
Profile: element.Profile,
StartDate: element.StartDate,
Subject: element.Subject
}
let starteDate = momentG(new Date(element.StartDate), 'yyyy-MM-dd');
//
if (dateToday == starteDate) {
todayEvents.push(eventObject);
}
})
this.listToPresent = todayEvents
this.totalEvent = this.listToPresent.length
this.currentEvent = this.listToPresent[0].Subject
this.currentHoursMinutes = this.listToPresent[0].StartDate
//
})
this.sqliteservice.getprocessByworkflow("Expediente").then((process: any[] = []) => {
//
if (process.length > 0 || process != undefined) {
var expedientlist: any = new Array();
process.forEach((element) => {
if(JSON.parse(element.workflowInstanceDataFields).TaskMessage || JSON.parse(element.workflowInstanceDataFields).Note) {
let task = {
activityInstanceName: element.activityInstanceName,
deadline: null,
serialNumber: element.serialNumber,
taskStartDate: element.taskStartDate,
totalDocuments: element.totalDocuments,
workflowDisplayName: element.workflowDisplayName,
workflowInstanceDataFields: JSON.parse(element.workflowInstanceDataFields)
}
expedientlist.push(task);
}
})
//
const ExpedienteTask = expedientlist.map(e => this.expedienteTaskPipe.transform(e))
this.listToPresentexpediente = ExpedienteTask;
}
this.showLoader = false;
})
}
// });
}
showGreeting() {
if (this.today.getHours() >= 6 && this.today.getHours() < 12) {
this.greetting = this.grettings[0];
}
else if (this.today.getHours() >= 12 && this.today.getHours() < 18) {
this.greetting = this.grettings[1];
}
else /* if(this.today.getHours() < 6 && this.today.getHours() >= 18) */ {
this.greetting = this.grettings[2];
}
}
gotTo() {
this.router.navigate(['/home/events']);
}
changeProfile() {
if (this.profile == "mdgpr") {
//
this.profile = "pr";
this.RefreshEvents();
}
else {
//
this.profile = "mdgpr";
this.RefreshEvents();
}
}
logout() {
SessionStore.user.BasicAuthKey = "";
this.router.navigate(['/home/login']);
}
async openEventDetail1(id: any) {
//
const modal = await this.modalController.create({
component: EventDetailPage,
componentProps: {
eventId: id,
},
cssClass: 'event-detail',
backdropDismiss: false
});
await modal.present();
modal.onDidDismiss();
}
async openEventDetail(id: any) {
//
const modal = await this.modalController.create({
component: ViewEventPage,
componentProps: {
eventId: id,
},
cssClass: 'view-event',
backdropDismiss: false
});
await modal.present();
modal.onDidDismiss();
}
LoadList() {
this.processes.GetTaskListExpediente(false).subscribe(result => {
//
this.addProcessToDb(result);
let ExpedienteTask = result.map(e => this.expedienteTaskPipe.transform(e))
this.listToPresentexpediente = ExpedienteTask;
this.showLoader = false;
}, ((error) => {
this.showLoader = false;
//
this.getEventsFromLocalDb();
}));
}
sortArrayISODate(myArray: any) {
return myArray.sort(function (a, b) {
return (a.CreateDate < b.CreateDate) ? -1 : ((a.CreateDate > b.CreateDate) ? 1 : 0);
});
}
goToEvent(event: any) {
let navigationExtras: NavigationExtras = { queryParams: { CalendarId: event.CalendarId } }
this.router.navigate(['/home/events', event.EventId, 'agenda'], navigationExtras);
}
goToExpediente(SerialNumber: any) {
this.router.navigate(['/home/events/expediente', SerialNumber, 'events']);
}
viewExpedientListPage() {
if (this.loggeduser.Profile == 'PR') {
if (window.innerWidth < 701) {
this.router.navigate(['/home/gabinete-digital/expedientes-pr']);
}
else {
let navigationExtras: NavigationExtras = { queryParams: { "expedientes-pr": true, } };
this.router.navigate(['/home/gabinete-digital'], navigationExtras);
}
} else {
if (window.innerWidth < 701) {
this.router.navigate(['/home/gabinete-digital/expediente']);
}
else {
let navigationExtras: NavigationExtras = { queryParams: { "expedientes": true, } };
this.router.navigate(['/home/gabinete-digital'], navigationExtras);
}
}
}
}