From 629b8a71c7d585affb48f36b562cec8035da0c8d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eudes=20In=C3=A1cio?= Date: Mon, 31 Jan 2022 15:02:26 +0100 Subject: [PATCH] Offline web almost done --- src/app/pages/agenda/agenda.page.ts | 69 +++++++++--- .../agenda/view-event/view-event.page.ts | 66 ++++++----- src/app/pages/events/events.page.ts | 27 ++++- .../gabinete-digital/gabinete-digital.page.ts | 105 ++++++++++++------ 4 files changed, 192 insertions(+), 75 deletions(-) diff --git a/src/app/pages/agenda/agenda.page.ts b/src/app/pages/agenda/agenda.page.ts index e67e9bf0c..a851161b5 100644 --- a/src/app/pages/agenda/agenda.page.ts +++ b/src/app/pages/agenda/agenda.page.ts @@ -9,6 +9,7 @@ import { momentG } from 'src/plugin/momentG'; import { DomSanitizer } from "@angular/platform-browser"; import { EventPerson } from 'src/app/models/eventperson.model'; import { removeDuplicate } from 'src/plugin/removeDuplicate.js'; +import { Storage } from '@ionic/storage'; // showTimeline import { setHours, setMinutes } from 'date-fns'; @@ -179,7 +180,8 @@ export class AgendaPage implements OnInit { private sqliteservice: SqliteService, private platform: Platform, private backgroundservice: BackgroundService, - public ThemeService: ThemeService + public ThemeService: ThemeService, + private storage:Storage ) { this.dateAdapter.setLocale('es'); @@ -770,6 +772,27 @@ export class AgendaPage implements OnInit { addEventToDB(response, profile) { if (this.platform.is('desktop') || this.platform.is('mobileweb')) { + let responseArray = []; + response.forEach(element => { + let event = { + CalendarId: element.CalendarId, + CalendarName: element.CalendarName, + EndDate: element.EndDate, + EventId: element.EventId, + HasAttachments: element.HasAttachments, + HumanDate: element.HumanDate, + IsAllDayEvent: element.IsAllDayEvent, + Location: element.Location, + StartDate: element.StartDate, + Subject: element.Subject, + Profile: profile + } + responseArray.push(event) + + }); + this.storage.set('agendaResponse',responseArray).then(() => { + console.log('Agenda data saved') + }) } else { if (response.length > 0) { @@ -796,21 +819,35 @@ export class AgendaPage implements OnInit { getFromDB() { console.log('ALL EVENTS FROM DB AGENDA OFFLINE') - this.sqliteservice.getAllEvents().then((events: any[]) => { - console.log('ALL EVENTS FROM DB', events) - let eventArray = []; - - this.trasnformDataDB(events) - this.updateEventListBox() - - this.myCal.update(); - this.myCal.loadEvents(); - - this.showLoader = false; - this.showTimeline = true; - - - }) + if (this.platform.is('desktop') || this.platform.is('mobileweb')) { + this.storage.get('agendaResponse').then((events) => { + this.trasnformDataDB(events) + this.updateEventListBox() + + this.myCal.update(); + this.myCal.loadEvents(); + + this.showLoader = false; + this.showTimeline = true; + }) + } else { + this.sqliteservice.getAllEvents().then((events: any[]) => { + console.log('ALL EVENTS FROM DB', events) + let eventArray = []; + + this.trasnformDataDB(events) + this.updateEventListBox() + + this.myCal.update(); + this.myCal.loadEvents(); + + this.showLoader = false; + this.showTimeline = true; + + + }) + } + } updateEventListBox() { diff --git a/src/app/pages/agenda/view-event/view-event.page.ts b/src/app/pages/agenda/view-event/view-event.page.ts index 4175b8b86..4c9c36f76 100644 --- a/src/app/pages/agenda/view-event/view-event.page.ts +++ b/src/app/pages/agenda/view-event/view-event.page.ts @@ -21,6 +21,7 @@ import { BackgroundService } from 'src/app/services/background.service'; import { StorageService } from 'src/app/services/storage.service'; import { ThemeService } from 'src/app/services/theme.service' import { RouteService } from 'src/app/services/route.service'; +import { Storage } from '@ionic/storage'; @Component({ @@ -74,6 +75,7 @@ export class ViewEventPage implements OnInit { private storage: StorageService, public ThemeService: ThemeService, private RouteService: RouteService, + private ionicStorage: Storage ) { this.isEventEdited = false; this.loadedEvent = new Event(); @@ -394,6 +396,9 @@ export class ViewEventPage implements OnInit { addEventToDb(data) { if (this.platform.is('desktop') || this.platform.is('mobileweb')) { + this.ionicStorage.set('eventDetails', data).then(() => { + console.log('Details event saved') + }) } else { let event = { Attendees: JSON.stringify(data.Attendees) || JSON.stringify(''), @@ -423,33 +428,40 @@ export class ViewEventPage implements OnInit { getFromDb() { const loader = this.toastService.loading(); - this.sqliteservice.getEventById(this.eventId).then((event) => { - let arrayevent = []; - console.log('EVENT ATTENDEES',event[0].Attendees) - let elemet = { - Attendees: (typeof JSON.parse(event[0].Attendees) === 'undefined') ? "" : JSON.parse(event[0].Attendees), - Body: JSON.parse(event[0].Body) || "", - CalendarId: event[0].CalendarId, - CalendarName: event[0].CalendarName, - Category: event[0].Category, - EndDate: event[0].EndDate, - EventId: event[0].EventId, - EventRecurrence: JSON.parse(event[0].EventRecurrence) || "", - EventType: event[0].EventType, - HasAttachments: event[0].HasAttachments, - IsAllDayEvent: event[0].IsAllDayEvent, - IsMeeting: event[0].IsMeeting, - IsRecurring: event[0].IsRecurring, - Location: event[0].Location, - Organizer: JSON.parse(event[0].Organizer) || "", - StartDate: event[0].StartDate, - Subject: event[0].Subject, - TimeZone: event[0].TimeZone - } - arrayevent.push(elemet); - this.loadedEvent = arrayevent[0]; - console.log("Event ditails local,", elemet) - }) + if (this.platform.is('desktop') || this.platform.is('mobileweb')) { + this.ionicStorage.get('eventDetails').then((events) =>{ + this.loadedEvent = events; + }) + } else { + this.sqliteservice.getEventById(this.eventId).then((event) => { + let arrayevent = []; + console.log('EVENT ATTENDEES',event[0].Attendees) + let elemet = { + Attendees: (typeof JSON.parse(event[0].Attendees) === 'undefined') ? "" : JSON.parse(event[0].Attendees), + Body: JSON.parse(event[0].Body) || "", + CalendarId: event[0].CalendarId, + CalendarName: event[0].CalendarName, + Category: event[0].Category, + EndDate: event[0].EndDate, + EventId: event[0].EventId, + EventRecurrence: JSON.parse(event[0].EventRecurrence) || "", + EventType: event[0].EventType, + HasAttachments: event[0].HasAttachments, + IsAllDayEvent: event[0].IsAllDayEvent, + IsMeeting: event[0].IsMeeting, + IsRecurring: event[0].IsRecurring, + Location: event[0].Location, + Organizer: JSON.parse(event[0].Organizer) || "", + StartDate: event[0].StartDate, + Subject: event[0].Subject, + TimeZone: event[0].TimeZone + } + arrayevent.push(elemet); + this.loadedEvent = arrayevent[0]; + console.log("Event ditails local,", elemet) + }) + } + loader.remove() } } diff --git a/src/app/pages/events/events.page.ts b/src/app/pages/events/events.page.ts index 056d5c9d8..e4055a9a8 100644 --- a/src/app/pages/events/events.page.ts +++ b/src/app/pages/events/events.page.ts @@ -21,6 +21,7 @@ import { NetworkConnectionService } from 'src/app/services/network-connection.se 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'; @Component({ selector: 'app-events', templateUrl: './events.page.html', @@ -95,7 +96,8 @@ export class EventsPage implements OnInit { private sqliteservice: SqliteService, private networkconnection: NetworkConnectionService, private backgroundservice: BackgroundService, - public ThemeService: ThemeService + public ThemeService: ThemeService, + private storage: Storage ) { /* this.existingScreenOrientation = this.screenOrientation.type; console.log(this.existingScreenOrientation); */ @@ -317,6 +319,9 @@ export class EventsPage implements OnInit { addEventToDb(list) { if (this.platform.is('desktop') || this.platform.is('mobileweb')) { + this.storage.set('events', list).then(() => { + console.log('Init events saved') + }) } else { if (list.length > 0) { list.forEach(element => { @@ -359,6 +364,9 @@ export class EventsPage implements OnInit { addProcessToDb(list) { if (this.platform.is('desktop') || this.platform.is('mobileweb')) { + this.storage.set('process', list).then(() => { + console.log('Init process saved') + }) } else { if (list.length > 0) { list.forEach(element => { @@ -376,6 +384,23 @@ export class EventsPage implements OnInit { let dateToday = date.getFullYear() + "-" + month + "-" + date.getDate(); console.log('dateeeeee', dateToday) if (this.platform.is('desktop') || this.platform.is('mobileweb')) { + this.storage.get('events').then((events: any[]) => { + console.log('Today events',events) + let todayEvents = new Array() + this.listToPresent = events + this.totalEvent = this.listToPresent.length + this.currentEvent = this.listToPresent[0].Subject + this.currentHoursMinutes = this.listToPresent[0].StartDate + console.log("All events from local,", events) + }) + + this.storage.get('process').then((process: any[]) => { + console.log('OFOFOFOOF22222', process) + const ExpedienteTask = process.map(e => this.expedienteTaskPipe.transform(e)) + this.listToPresentexpediente = ExpedienteTask; + }) + + this.showLoader = false; } else { this.sqliteservice.getAllEvents().then((event: any[]) => { diff --git a/src/app/pages/gabinete-digital/gabinete-digital.page.ts b/src/app/pages/gabinete-digital/gabinete-digital.page.ts index c3c98059d..285af08d2 100644 --- a/src/app/pages/gabinete-digital/gabinete-digital.page.ts +++ b/src/app/pages/gabinete-digital/gabinete-digital.page.ts @@ -31,6 +31,7 @@ import { Platform } from '@ionic/angular'; import { BackgroundService } from 'src/app/services/background.service'; import { SortService } from 'src/app/services/functions/sort.service'; import { DataService } from 'src/app/services/data.service'; +import { Storage } from '@ionic/storage'; @Component({ selector: 'app-gabinete-digital', @@ -135,6 +136,7 @@ export class GabineteDigitalPage implements OnInit, DoCheck { public ThemeService: ThemeService, private sortService: SortService, private dataService: DataService, + private storage: Storage ) { this.loggeduser = authService.ValidatedUser; @@ -215,7 +217,9 @@ export class GabineteDigitalPage implements OnInit, DoCheck { addProcessToDB(data) { this.platform.ready().then(() => { if (this.platform.is('desktop') || this.platform.is('mobileweb')) { - + this.storage.set('GabineteProcess', data).then(() => { + console.log('Gabinete process saved') + }) } else { data.forEach(element => { @@ -245,39 +249,77 @@ export class GabineteDigitalPage implements OnInit, DoCheck { getAllProcessFromDB() { this.hideRefreshButton(); + if (this.platform.is('desktop') || this.platform.is('mobileweb')) { + this.storage.get('GabineteProcess').then((allprocess: any[]) => { + console.log('ALL PROCESS WEB',allprocess ) + allprocess.forEach(element => { + let date = new Date(element.taskStartDate); + date.setMonth(date.getMonth() + 1); + let taskDate = date.getFullYear() + "-" + date.getMonth() + "-" + date.getDate() + " " + date.getHours() + ":" + date.getMinutes() + ":" + date.getSeconds(); + + let task = { + "SerialNumber": element.serialNumber, + "Folio": element.workflowInstanceDataFields.Subject, + "Senders": element.workflowInstanceDataFields.Sender, + //"CreateDate": taskDate, + "CreateDate": new Date(element.taskStartDate), + "DocumentURL": element.workflowInstanceDataFields.ViewerRequest, + "Remetente": element.workflowInstanceDataFields.Remetente, + "DocumentsQty": element.totalDocuments, + "DocId": element.workflowInstanceDataFields.DispatchDocId, + "FolderID": element.workflowInstanceDataFields.FolderID, + "WorkflowName": element.workflowDisplayName, + "activityInstanceName": element.activityInstanceName, + "Status": element.workflowInstanceDataFields.Status, + "Agenda": element.workflowInstanceDataFields.Agenda, + "customDate": this.setFormatDate(new Date(element.workflowInstanceDataFields.StartDate), new Date(element.workflowInstanceDataFields.EndDate), element.workflowInstanceDataFields.IsAllDayEvent), + } + + this.allProcessesList.push(task); + this.allProcessesList = removeDuplicate(this.allProcessesList); + this.allProcessesList = this.sortService.sortDate(this.allProcessesList, 'CreateDate') + + }); + }) + } else { + this.sqliteservice.getAllProcess().then((allprocess: any[]) => { + allprocess.forEach(element => { + let date = new Date(element.taskStartDate); + date.setMonth(date.getMonth() + 1); + let taskDate = date.getFullYear() + "-" + date.getMonth() + "-" + date.getDate() + " " + date.getHours() + ":" + date.getMinutes() + ":" + date.getSeconds(); + + var workflowInstanceDataFields = JSON.parse(element.workflowInstanceDataFields); + + let task = { + "SerialNumber": element.serialNumber, + "Folio": workflowInstanceDataFields.Subject, + "Senders": workflowInstanceDataFields.Sender, + "CreateDate": taskDate, + "DocumentURL": workflowInstanceDataFields.ViewerRequest, + "Remetente": workflowInstanceDataFields.Remetente, + "DocumentsQty": element.totalDocuments, + "DocId": workflowInstanceDataFields.DispatchDocId, + "FolderID": workflowInstanceDataFields.FolderID, + "WorkflowName": element.workflowDisplayName, + "activityInstanceName": element.activityInstanceName, + "Status": workflowInstanceDataFields.Status, + "Agenda": workflowInstanceDataFields.Agenda, + "customDate": this.setFormatDate(new Date(workflowInstanceDataFields.StartDate), new Date(workflowInstanceDataFields.EndDate), workflowInstanceDataFields.IsAllDayEvent), + } + + this.allProcessesList.push(task); + this.allProcessesList = removeDuplicate(this.allProcessesList) + this.allProcessesList = this.sortService.sortDate(this.allProcessesList, 'CreateDate') + + }); + console.log("All process from db ", allprocess) + }) + } - this.sqliteservice.getAllProcess().then((allprocess: any[]) => { - allprocess.forEach(element => { - let date = new Date(element.taskStartDate); - date.setMonth(date.getMonth() + 1); - let taskDate = date.getFullYear() + "-" + date.getMonth() + "-" + date.getDate() + " " + date.getHours() + ":" + date.getMinutes() + ":" + date.getSeconds(); + } - var workflowInstanceDataFields = JSON.parse(element.workflowInstanceDataFields); + dataTranform(data) { - let task = { - "SerialNumber": element.serialNumber, - "Folio": workflowInstanceDataFields.Subject, - "Senders": workflowInstanceDataFields.Sender, - "CreateDate": taskDate, - "DocumentURL": workflowInstanceDataFields.ViewerRequest, - "Remetente": workflowInstanceDataFields.Remetente, - "DocumentsQty": element.totalDocuments, - "DocId": workflowInstanceDataFields.DispatchDocId, - "FolderID": workflowInstanceDataFields.FolderID, - "WorkflowName": element.workflowDisplayName, - "activityInstanceName": element.activityInstanceName, - "Status": workflowInstanceDataFields.Status, - "Agenda": workflowInstanceDataFields.Agenda, - "customDate": this.setFormatDate(new Date(workflowInstanceDataFields.StartDate), new Date(workflowInstanceDataFields.EndDate), workflowInstanceDataFields.IsAllDayEvent), - } - - this.allProcessesList.push(task); - this.allProcessesList = removeDuplicate(this.allProcessesList) - this.allProcessesList = this.sortService.sortDate(this.allProcessesList, 'CreateDate') - - }); - console.log("All process from db ", allprocess) - }) } sortArrayISODate(myArray: any) { @@ -495,6 +537,7 @@ export class GabineteDigitalPage implements OnInit, DoCheck { let allProcessesList = allPreocesses_; allProcessesList = allProcessesList.filter(element => element.activityInstanceName != 'Conhecimento') + allProcessesList = allProcessesList.filter(element => element.activityInstanceName != 'Revisar Diploma') if (!this.p.userRole(['PR'])) { allProcessesList = allProcessesList.filter(element => element.activityInstanceName != 'Assinar Diplomas')