Files
doneit-web/src/app/pages/events/events.page.ts
T

502 lines
14 KiB
TypeScript
Raw Normal View History

2022-07-12 14:57:02 +01:00
import { Component, OnInit, EventEmitter, Output } from '@angular/core';
import { EventsService } from 'src/app/services/events.service';
2021-03-31 16:47:14 +01:00
import { NavigationExtras, Router } from '@angular/router';
import { ActivatedRoute, NavigationEnd } from '@angular/router';
2021-08-17 09:53:06 +01:00
import { ModalController, Platform } from '@ionic/angular';
2020-11-24 13:46:13 +01:00
import { EventDetailPage } from './event-detail/event-detail.page';
2021-01-04 10:37:13 +01:00
import { ProcessesService } from '../../services/processes.service';
2021-08-27 15:21:15 +01:00
import { LoginUserRespose } from 'src/app/models/user.model';
2021-09-21 06:09:41 +01:00
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';
2021-09-21 06:09:41 +01:00
import { SqliteService } from 'src/app/services/sqlite.service';
2021-10-18 17:42:25 +01:00
import { BackgroundService } from 'src/app/services/background.service';
import { momentG } from 'src/plugin/momentG';
2021-10-21 15:05:37 +01:00
import { ThemeService } from 'src/app/services/theme.service'
2022-01-31 15:02:26 +01:00
import { Storage } from '@ionic/storage';
2022-03-30 15:08:23 +01:00
import { PermissionService } from 'src/app/services/permission.service';
2022-06-29 16:30:28 +01:00
import { ViewEventPage } from 'src/app/modals/view-event/view-event.page';
import { ChangeProfileService } from 'src/app/services/change-profile.service';
2022-10-12 17:01:09 +01:00
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 {
2020-08-21 16:18:37 +01:00
today = new Date();
2021-07-29 14:37:09 +01:00
2020-08-21 16:18:37 +01:00
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"];
2021-09-21 06:09:41 +01:00
customDate = this.days[this.today.getDay()] + ", " + this.today.getDate() + " de " + (this.months[this.today.getMonth()]);
2020-08-21 16:18:37 +01:00
grettings = ["Bom dia", "Boa tarde", "Boa noite"];
2021-09-21 06:09:41 +01:00
greetting = '';
2020-08-21 16:18:37 +01:00
timeDate = this.today.getHours() + ":" + this.today.getMinutes();
2022-07-12 14:57:02 +01:00
2021-09-21 06:09:41 +01:00
segment: string;
public profile: string;
2021-01-05 13:58:15 +01:00
currentEvent: any;
2021-06-24 11:07:53 +01:00
maxSubjectLength = 30;
customText = false;
2021-09-21 06:09:41 +01:00
totalEvent = 0;
2021-08-31 09:00:33 +01:00
currentHoursMinutes: Date | string;
2020-08-28 11:45:50 +01:00
showLoader: boolean;
2021-07-29 14:37:09 +01:00
2021-09-21 06:09:41 +01:00
expedientList: any;
hideSearchBtn: boolean = false;
2021-07-20 19:22:56 +01:00
// shared data
toDayEventStorage = ToDayEventStorage
expedienteGdStore = ExpedienteGdStore
2021-09-15 10:48:32 +01:00
2021-09-29 16:47:58 +01:00
listToPresent = [];
2021-10-18 07:44:24 +01:00
listToPresentexpediente = []
2021-09-21 10:04:42 +01:00
expedienteTaskPipe = new ExpedienteTaskPipe()
2021-07-20 19:22:56 +01:00
2021-09-21 06:09:41 +01:00
@Output() openExpedientListPage: EventEmitter<any> = new EventEmitter<any>();
2021-03-31 13:52:40 +01:00
2021-08-27 15:21:15 +01:00
loggeduser: LoginUserRespose;
2021-05-21 10:38:55 +01:00
2021-06-10 23:24:42 +01:00
constructor(
2021-07-29 14:37:09 +01:00
private eventService: EventsService,
private router: Router,
public activatedRoute: ActivatedRoute,
2021-09-21 06:09:41 +01:00
private processes: ProcessesService,
private modalController: ModalController,
2021-08-17 09:53:06 +01:00
public platform: Platform,
2021-09-21 06:09:41 +01:00
private sqliteservice: SqliteService,
2021-10-18 17:42:25 +01:00
private backgroundservice: BackgroundService,
2022-01-31 15:02:26 +01:00
public ThemeService: ThemeService,
2022-03-30 15:08:23 +01:00
private storage: Storage,
public p: PermissionService,
private changeProfileService: ChangeProfileService,
2021-09-21 06:09:41 +01:00
) {
2022-12-13 17:21:48 +01:00
2022-10-12 17:01:09 +01:00
this.loggeduser = SessionStore.user;
2021-05-21 10:38:55 +01:00
2021-09-21 06:09:41 +01:00
this.platform.resize.subscribe(async () => {
2022-04-28 09:32:27 +01:00
//
//
2021-08-17 09:53:06 +01:00
2021-09-21 06:09:41 +01:00
});
2021-11-09 17:22:49 +01:00
2021-10-27 14:42:10 +01:00
window['zipPhoneCallback'] = function (zipphone) {
var frame = document.getElementById('home-iframe');
if(frame) {
frame['contentWindow']['postMessage']({call:'cookies', value: { cookies: {} }});
}
2021-11-09 17:22:49 +01:00
}
2021-10-27 14:42:10 +01:00
this.changeProfileService.registerCallback(() => {
this.listToPresent = [];
this.listToPresentexpediente = []
})
2021-09-21 06:09:41 +01:00
}
2020-08-21 16:18:37 +01:00
ngOnInit() {
2021-08-18 12:52:51 +01:00
this.segment = "Combinada";
2021-02-11 15:23:03 +01:00
this.profile = "mdgpr";
2021-01-04 10:37:13 +01:00
2021-10-18 07:44:24 +01:00
this.showGreeting();
2021-10-07 16:22:31 +01:00
2021-10-18 07:44:24 +01:00
this.router.events.forEach((event) => {
if (event instanceof NavigationEnd && event.url == '/home/events') {
this.RefreshEvents();
setTimeout(() => {
this.LoadList();
}, 1500)
}
});
this.hideSearch();
2021-10-18 17:42:25 +01:00
this.backgroundservice.registerBackService('Online', () => {
this.showGreeting();
this.RefreshEvents();
this.LoadList();
this.hideSearch();
});
2021-07-30 14:11:19 +01:00
}
2021-09-21 06:09:41 +01:00
hideSearch() {
if (this.router.url == '/home/events') {
2021-07-30 14:11:19 +01:00
this.hideSearchBtn = true;
}
}
doRefresh(event) {
this.RefreshEvents();
2021-04-06 16:25:20 +01:00
this.LoadList();
2021-04-07 09:32:17 +01:00
event.target.complete();
}
2021-07-20 19:22:56 +01:00
onSegmentChange() {
this.RefreshEvents();
}
2021-08-17 09:53:06 +01:00
2021-07-20 19:22:56 +01:00
async RefreshEvents() {
2021-04-01 10:34:41 +01:00
this.currentEvent = "";
this.showLoader = true;
2021-02-10 03:26:26 +01:00
2021-02-09 15:39:39 +01:00
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";
2021-09-21 06:09:41 +01:00
if (this.loggeduser.Profile == 'MDGPR') {
2021-06-16 13:29:57 +01:00
let mdOficialEvents = await this.eventService.getAllMdOficialEvents(start, end).toPromise();
let mdPessoalEvents = await this.eventService.getAllMdPessoalEvents(start, end).toPromise();
2021-07-29 14:37:09 +01:00
2021-07-20 19:22:56 +01:00
const list = mdOficialEvents.concat(mdPessoalEvents);
2022-03-30 15:08:23 +01:00
this.addEventToDb(list);
2021-09-29 16:47:58 +01:00
this.listToPresent = list
2021-07-29 14:37:09 +01:00
2021-09-29 16:47:58 +01:00
if (list.length > 0) {
this.currentEvent = list[0].Subject;
this.currentHoursMinutes = list[0].StartDate;
2021-07-20 19:22:56 +01:00
}
2021-07-29 14:37:09 +01:00
2021-09-29 16:47:58 +01:00
this.totalEvent = list.length;
2021-07-20 19:22:56 +01:00
this.showLoader = false;
2021-07-29 14:37:09 +01:00
2021-06-16 13:29:57 +01:00
}
2021-07-20 19:22:56 +01:00
else if (this.loggeduser.Profile == 'PR') {
2021-06-16 13:29:57 +01:00
2021-09-21 06:09:41 +01:00
let prOficialEvents = await this.eventService.getAllPrOficialEvents(start, end).toPromise();
let prPessoalEvents = await this.eventService.getAllPrPessoalEvents(start, end).toPromise();
2021-07-29 14:37:09 +01:00
2021-07-20 19:22:56 +01:00
const list = prOficialEvents.concat(prPessoalEvents);
this.addEventToDb(list);
2021-09-29 16:47:58 +01:00
if (list.length > 0) {
this.currentEvent = list[0].Subject;
this.currentHoursMinutes = list[0].StartDate;
2021-07-20 19:22:56 +01:00
}
2021-09-29 16:47:58 +01:00
this.listToPresent = list;
this.totalEvent = list.length;
2021-07-20 19:22:56 +01:00
this.showLoader = false;
2021-07-29 14:37:09 +01:00
} else {
if(this.loggeduser.OwnerCalendars.length >= 1) {
2022-04-19 17:10:08 +01:00
let onwEvent:any = await this.eventService.getAllOwnEvents(start, end)
this.listToPresent = onwEvent;
this.totalEvent = onwEvent.length;
this.showLoader = false;
} else {
2022-04-19 17:10:08 +01:00
}
2021-06-16 13:29:57 +01:00
}
}
2020-08-21 16:18:37 +01:00
addEventToDb(list) {
if (this.platform.is('desktop') || this.platform.is('mobileweb')) {
2022-01-31 15:02:26 +01:00
this.storage.set('events', list).then(() => {
2022-04-28 09:32:27 +01:00
//
2022-01-31 15:02:26 +01:00
})
} 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);
})
2022-04-19 17:10:08 +01:00
})
});
}
}
}
addProcessToDb(list) {
if (this.platform.is('desktop') || this.platform.is('mobileweb')) {
2022-01-31 15:02:26 +01:00
this.storage.set('process', list).then(() => {
2022-04-28 09:32:27 +01:00
//
2022-01-31 15:02:26 +01:00
})
} else {
if (list.length > 0) {
list.forEach(element => {
this.sqliteservice.addProcess(element)
});
}
}
}
2021-09-21 06:09:41 +01:00
getEventsFromLocalDb() {
let date = new Date();
let month = date.getMonth() + 1;
//date.setMonth(date.getMonth() + 1);
let dateToday = date.getFullYear() + "-" + month + "-" + date.getDate();
2022-04-19 17:10:08 +01:00
// ('dateeeeee', dateToday)
2021-10-18 07:44:24 +01:00
if (this.platform.is('desktop') || this.platform.is('mobileweb')) {
2022-01-31 15:02:26 +01:00
this.storage.get('events').then((events: any[]) => {
2022-04-28 09:32:27 +01:00
//
2022-01-31 15:02:26 +01:00
let todayEvents = new Array()
this.listToPresent = events
this.totalEvent = this.listToPresent.length
this.currentEvent = this.listToPresent[0].Subject
this.currentHoursMinutes = this.listToPresent[0].StartDate
2022-04-28 09:32:27 +01:00
//
2022-01-31 15:02:26 +01:00
})
this.storage.get('process').then((process: any[]) => {
2022-04-28 09:32:27 +01:00
//
2022-01-31 15:02:26 +01:00
const ExpedienteTask = process.map(e => this.expedienteTaskPipe.transform(e))
this.listToPresentexpediente = ExpedienteTask;
})
this.showLoader = false;
2021-09-29 16:47:58 +01:00
2021-10-18 07:44:24 +01:00
} 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');
2022-04-28 09:32:27 +01:00
//
if (dateToday == starteDate) {
todayEvents.push(eventObject);
}
})
this.listToPresent = todayEvents
2021-09-29 16:47:58 +01:00
this.totalEvent = this.listToPresent.length
this.currentEvent = this.listToPresent[0].Subject
this.currentHoursMinutes = this.listToPresent[0].StartDate
2022-04-28 09:32:27 +01:00
//
2021-09-29 16:47:58 +01:00
})
2021-09-21 06:09:41 +01:00
2021-09-29 16:47:58 +01:00
this.sqliteservice.getprocessByworkflow("Expediente").then((process: any[]) => {
2021-09-21 06:09:41 +01:00
2022-04-28 09:32:27 +01:00
//
2021-10-18 07:44:24 +01:00
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);
2021-10-18 07:44:24 +01:00
}
})
2022-04-28 09:32:27 +01:00
//
2021-10-18 07:44:24 +01:00
const ExpedienteTask = expedientlist.map(e => this.expedienteTaskPipe.transform(e))
this.listToPresentexpediente = ExpedienteTask;
}
this.showLoader = false;
2021-09-29 16:47:58 +01:00
})
}
2021-10-18 07:44:24 +01:00
// });
2021-09-21 06:09:41 +01:00
}
2020-08-21 16:18:37 +01:00
2021-09-21 06:09:41 +01:00
showGreeting() {
if (this.today.getHours() >= 6 && this.today.getHours() < 12) {
2020-08-21 16:18:37 +01:00
this.greetting = this.grettings[0];
}
2021-09-21 06:09:41 +01:00
else if (this.today.getHours() >= 12 && this.today.getHours() < 18) {
2020-08-21 16:18:37 +01:00
this.greetting = this.grettings[1];
}
2021-09-21 06:09:41 +01:00
else /* if(this.today.getHours() < 6 && this.today.getHours() >= 18) */ {
2020-08-21 16:18:37 +01:00
this.greetting = this.grettings[2];
}
}
2021-09-21 06:09:41 +01:00
gotTo() {
2020-08-21 16:18:37 +01:00
this.router.navigate(['/home/events']);
}
2021-09-21 06:09:41 +01:00
changeProfile() {
if (this.profile == "mdgpr") {
2022-04-28 09:32:27 +01:00
//
2021-09-21 06:09:41 +01:00
this.profile = "pr";
this.RefreshEvents();
}
2021-09-21 06:09:41 +01:00
else {
2022-04-28 09:32:27 +01:00
//
2021-09-21 06:09:41 +01:00
this.profile = "mdgpr";
this.RefreshEvents();
}
}
2021-09-21 06:09:41 +01:00
logout() {
2022-10-12 17:01:09 +01:00
SessionStore.user.BasicAuthKey = "";
2020-08-28 15:28:38 +01:00
this.router.navigate(['/home/login']);
}
2021-09-21 06:09:41 +01:00
async openEventDetail1(id: any) {
2022-04-28 09:32:27 +01:00
//
2021-07-29 14:37:09 +01:00
2020-11-24 13:46:13 +01:00
const modal = await this.modalController.create({
component: EventDetailPage,
2021-09-21 06:09:41 +01:00
componentProps: {
2020-11-24 13:46:13 +01:00
eventId: id,
},
cssClass: 'event-detail',
backdropDismiss: false
});
await modal.present();
modal.onDidDismiss();
}
2022-06-29 16:30:28 +01:00
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();
}
2021-07-20 19:22:56 +01:00
LoadList() {
this.processes.GetTaskListExpediente(false).subscribe(result => {
2022-04-28 09:32:27 +01:00
//
this.addProcessToDb(result);
2022-08-09 15:30:13 +01:00
let ExpedienteTask = result.map(e => this.expedienteTaskPipe.transform(e))
2021-09-29 16:47:58 +01:00
this.listToPresentexpediente = ExpedienteTask;
2022-04-19 17:10:08 +01:00
this.showLoader = false;
2021-10-18 07:44:24 +01:00
}, ((error) => {
2022-04-19 17:10:08 +01:00
this.showLoader = false;
2022-04-28 09:32:27 +01:00
//
2021-10-18 07:44:24 +01:00
this.getEventsFromLocalDb();
}));
}
2021-01-19 08:52:43 +01:00
2021-09-21 06:09:41 +01:00
sortArrayISODate(myArray: any) {
return myArray.sort(function (a, b) {
2021-01-19 08:52:43 +01:00
return (a.CreateDate < b.CreateDate) ? -1 : ((a.CreateDate > b.CreateDate) ? 1 : 0);
});
}
2021-01-19 16:44:39 +01:00
2022-12-17 16:19:23 +01:00
goToEvent(event: any) {
let navigationExtras: NavigationExtras = { queryParams: { CalendarId: event.CalendarId } }
this.router.navigate(['/home/events', event.EventId, 'agenda'], navigationExtras);
2021-01-31 16:14:42 +01:00
}
2021-09-21 06:09:41 +01:00
goToExpediente(SerialNumber: any) {
2021-11-09 17:22:49 +01:00
this.router.navigate(['/home/events/expediente', SerialNumber, 'events']);
2021-05-24 11:37:50 +01:00
}
2021-09-29 16:47:58 +01:00
viewExpedientListPage() {
2022-10-13 14:50:52 +01:00
if (this.loggeduser.Profile == 'PR') {
2021-09-29 16:47:58 +01:00
if (window.innerWidth < 701) {
2022-10-13 14:50:52 +01:00
this.router.navigate(['/home/gabinete-digital/expedientes-pr']);
2021-07-01 15:53:48 +01:00
}
2021-09-21 06:09:41 +01:00
else {
2022-10-13 14:50:52 +01:00
let navigationExtras: NavigationExtras = { queryParams: { "expedientes-pr": true, } };
2021-07-01 15:53:48 +01:00
this.router.navigate(['/home/gabinete-digital'], navigationExtras);
}
2022-10-13 14:50:52 +01:00
} else {
2022-10-13 15:09:58 +01:00
2021-09-29 16:47:58 +01:00
if (window.innerWidth < 701) {
2022-10-13 14:50:52 +01:00
this.router.navigate(['/home/gabinete-digital/expediente']);
2021-07-01 15:53:48 +01:00
}
2021-09-21 06:09:41 +01:00
else {
2022-10-13 14:50:52 +01:00
let navigationExtras: NavigationExtras = { queryParams: { "expedientes": true, } };
2021-07-01 15:53:48 +01:00
this.router.navigate(['/home/gabinete-digital'], navigationExtras);
}
2021-03-31 13:52:40 +01:00
}
}
2021-07-29 14:37:09 +01:00
2021-09-21 06:09:41 +01:00
}