diff --git a/config.xml b/config.xml index 2e850bb20..ea0586ed8 100644 --- a/config.xml +++ b/config.xml @@ -3,7 +3,7 @@ gabinete digital An awesome Ionic/Cordova app. Ionic Framework Team - + @@ -81,7 +81,7 @@ 0 - 8.0.0.00-20210905-154328 + 8.0.0.00-20210308-063916 diff --git a/package-lock.json b/package-lock.json index e7ef6064f..1f90ffb86 100644 --- a/package-lock.json +++ b/package-lock.json @@ -23619,9 +23619,9 @@ } }, "typescript": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.3.tgz", - "integrity": "sha512-4xfscpisVgqqDfPaJo5vkd+Qd/ItkoagnHpufr+i2QCHBsNYp+G7UAoyFl8aPtx879u38wPV65rZ8qbGZijalA==", + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.3.5.tgz", + "integrity": "sha512-DqQgihaQ9cUrskJo9kIyW/+g0Vxsk8cDtZ52a3NGh0YNTfpUSArXSohyUGnvbPazEPLu398C0UxmKSOrPumUzA==", "dev": true }, "ua-parser-js": { diff --git a/src/app/Rules/despacho.service.ts b/src/app/Rules/despacho.service.ts index 1cae14ef4..3dade3928 100644 --- a/src/app/Rules/despacho.service.ts +++ b/src/app/Rules/despacho.service.ts @@ -253,7 +253,10 @@ export class DespachoService { }); - despachoList = this.sortService.sortArrayByDate(despachoList).reverse(); + console.log(despachoList); + + + despachoList = this.sortService.sortArrayISODate(despachoList).reverse(); if(updateStore) { this.despachoStore.reset(despachoList); diff --git a/src/app/home/home.page.ts b/src/app/home/home.page.ts index baae9d136..3f2b921b2 100644 --- a/src/app/home/home.page.ts +++ b/src/app/home/home.page.ts @@ -10,7 +10,6 @@ import { AlertController, Platform } from '@ionic/angular'; import { Router, ActivatedRoute } from '@angular/router'; import { ToDayEventStorage } from '../store/to-day-event-storage.service'; import { TotalDocumentStore } from '../store/total-document.service'; -import { synchro } from '../services/socket/synchro.service'; import { DespachoService } from '../Rules/despacho.service'; import { ExpedienteGdStore } from '../store/expedientegd-store.service'; import { InativityService } from '../services/inativity.service'; @@ -22,6 +21,9 @@ import { DocumentCounterService } from '../services/worker/document-counter.serv import { PermissionService } from '../services/worker/permission.service'; import { Network } from '@ionic-native/network/ngx'; import { BackgroundService } from 'src/app/services/background.service'; +import { OfflineManagerService } from 'src/app/services/offline-manager.service'; +import { Storage } from '@ionic/storage'; +import { EventsService} from 'src/app/services/events.service'; @Component({ @@ -63,8 +65,6 @@ export class HomePage implements OnInit { postEvent: any; folderId: string; - synchro = synchro - status: string = ""; audioName: string = ""; constructor( @@ -82,7 +82,10 @@ export class HomePage implements OnInit { private storageService: StorageService, private webNotificationPopupService: WebNotificationPopupService, private network: Network, - private backgroundservice: BackgroundService) { + private backgroundservice: BackgroundService, + private offlinemanager: OfflineManagerService, + private storage: Storage, + private eventservice: EventsService ) { this.webNotificationPopupService.askNotificationPermission() @@ -112,18 +115,36 @@ export class HomePage implements OnInit { ngOnInit() { + window.addEventListener('online', () => { + console.log('Became online') + this.backgroundservice.online() + }); + window.addEventListener('offline', () => { + console.log('Became offline') + this.backgroundservice.offline() + }); + if (this.platform.is('desktop') || this.platform.is('mobileweb')) { - window.addEventListener('online', () => { - console.log('Became online') - this.backgroundservice.online() - }); - window.addEventListener('offline', () => { - console.log('Became offline') - this.backgroundservice.offline() - }); this.webnotification.webconnection(); this.webnotification.register(); } else { + window.addEventListener('online', (on) => { + console.log('Became online',on) + this.storage.get('storedreq').then((req) =>{ + console.log('STORED REQUEST', req) + req.forEach(element => { + this.eventservice.editEvent(element,2,3).subscribe((res) =>{ + console.log('REQUEST RESULT', res) + }) + }); + + }) + this.backgroundservice.online() + }); + window.addEventListener('offline', (off) => { + console.log('Became offline',off) + this.backgroundservice.offline() + }); this.mobilefirstConnect(); this.notificationsService.onReceviNotification(); } @@ -185,37 +206,6 @@ export class HomePage implements OnInit { } ) - - synchro.registerCallback('Online', () => { - console.log('Onlineee') - - }) - - - synchro.registerCallback('Offline',()=>{ - - }) - - synchro.conected - - synchro.registerCallback('Notification', (DataArray) => { - - this.webNotificationPopupService.sendNotification(DataArray) - - this.storageService.get('Notifications').then((data:any)=>{ - data.push(DataArray) - this.storageService.store("Notifications", data) - }).catch(() => { - - const a = [] - a.push(DataArray) - this.storageService.store("Notifications", a) - }) - - }, 'any') - - - document.addEventListener('pause', function () { // console.log('App going to background'); }); diff --git a/src/app/modals/create-process/create-process.page.ts b/src/app/modals/create-process/create-process.page.ts index f1dfce511..a566bfdcc 100644 --- a/src/app/modals/create-process/create-process.page.ts +++ b/src/app/modals/create-process/create-process.page.ts @@ -382,7 +382,7 @@ export class CreateProcessPage implements OnInit { } else{ this.validateField = true; - this.toastService.badRequest('Por favor adicione uma nota'); + this.toastService.badRequest('Por favor adicione uma descrição'); } loader.remove(); break; diff --git a/src/app/modals/view-document/view-document.page.ts b/src/app/modals/view-document/view-document.page.ts index 3b122f16a..cb5b52480 100644 --- a/src/app/modals/view-document/view-document.page.ts +++ b/src/app/modals/view-document/view-document.page.ts @@ -15,9 +15,6 @@ import { DocumentSetUpMeetingPage } from '../document-set-up-meeting/document-se }) export class ViewDocumentPage implements OnInit { - url: string; - a:string = "https://equilibrium.dyndns.info/FileShare/pdfjs/web/viewer.html?file="; - viewerUrl: string; trustedUrl: any; file: any; applicationId: any; @@ -49,11 +46,11 @@ export class ViewDocumentPage implements OnInit { ngOnInit() { this.processes.GetViewer(this.docId, this.applicationId).subscribe(res=> { - const link: string = res + const link: string = res; this.trustedUrl = this.sanitazer.bypassSecurityTrustResourceUrl(link); }, ()=>{ - this.close() - }) + this.close(); + }); } diff --git a/src/app/pages/agenda/agenda.page.ts b/src/app/pages/agenda/agenda.page.ts index 39c75e824..68d481431 100644 --- a/src/app/pages/agenda/agenda.page.ts +++ b/src/app/pages/agenda/agenda.page.ts @@ -30,7 +30,7 @@ import { ListBoxService } from 'src/app/services/agenda/list-box.service'; import { ChangeProfileService } from 'src/app/services/change-profile.service'; import { SqliteService } from 'src/app/services/sqlite.service'; -import { synchro } from 'src/app/services/socket/synchro.service'; +import { BackgroundService } from 'src/app/services/background.service'; @Component({ @@ -175,7 +175,8 @@ export class AgendaPage implements OnInit { private listBoxService: ListBoxService, private changeProfileService: ChangeProfileService, private sqliteservice: SqliteService, - private platform: Platform + private platform: Platform, + private backgroundservice: BackgroundService ) { this.dateAdapter.setLocale('es'); @@ -229,7 +230,23 @@ export class AgendaPage implements OnInit { ngOnInit() { - this.getFromDB() + const pathname = window.location.pathname + let realoadCounter = 0 + this.router.events.forEach((event) => { + if (event instanceof NavigationEnd && event.url == pathname) { + if (this.segment == null) { + this.segment = "Combinado"; + } + if (realoadCounter != 0) { + this.loadRangeEvents(this.rangeStartDate, this.rangeEndDate); + } + realoadCounter++; + } + }); + + this.backgroundservice.registerBackService('Online', () => { + this.loadRangeEvents(this.rangeStartDate, this.rangeEndDate); + }); window.onresize = (event) => { // if not table remove all component @@ -490,7 +507,7 @@ export class AgendaPage implements OnInit { // loop this.CalendarStore.pushEvent(response, 'md'); - console.log('CALENDAR STORE',this.CalendarStore.eventSource) + console.log('CALENDAR STORE', this.CalendarStore.eventSource) let array = [] response.forEach(element => { @@ -507,7 +524,7 @@ export class AgendaPage implements OnInit { }); this.listToPresent = array; - console.log('LIST TO PRESET',this.listToPresent) + console.log('LIST TO PRESET', this.listToPresent) this.TimelineMDList = this.listBoxService.list(this.listToPresent, 'md', this.rangeStartDate, this.rangeEndDate, { segment: this.segment, selectedDate: this.eventSelectedDate }) @@ -517,13 +534,16 @@ export class AgendaPage implements OnInit { this.showLoader = false; this.showTimeline = true; - }).finally(() => { + }).catch((error) => { + this.getFromDB(); + }) + .finally(() => { this.showLoader = false; }) } // view PR calendar with MDGPR profile - else if(this.profile == "pr" && this.loggeduser.Profile == 'MDGPR') { + else if (this.profile == "pr" && this.loggeduser.Profile == 'MDGPR') { this.eventService.getAllSharedEvents(momentG(new Date(startTime), 'yyyy-MM-dd HH:mm:ss'), momentG(new Date(endTime), 'yyyy-MM-dd 23:59:59')).then((response: any) => { @@ -556,7 +576,7 @@ export class AgendaPage implements OnInit { // startTime = 1, endTime = 31 this.CalendarStore.removeRange(startTime, endTime, 'pr') this.CalendarStore.pushEvent(response, 'pr'); - let array = [] + let array = [] response.array.forEach(element => { let event = { startTime: new Date(element.StartDate), @@ -585,7 +605,10 @@ export class AgendaPage implements OnInit { this.showTimeline = true; - }).finally(() => { + }).catch((error) => { + this.getFromDB() + }) + .finally(() => { this.showLoader = false; }) } @@ -596,7 +619,7 @@ export class AgendaPage implements OnInit { let counter = 0; // view MDGPR calendar with MDGPR profile - if(this.loggeduser.Profile == 'MDGPR') { + if (this.loggeduser.Profile == 'MDGPR') { this.eventService.getAllMdEvents(momentG(new Date(startTime), 'yyyy-MM-dd HH:mm:ss'), momentG(new Date(endTime), 'yyyy-MM-dd 23:59:59')).then((response: any) => { @@ -633,9 +656,9 @@ export class AgendaPage implements OnInit { let eventsList = response; // clear the current month only - this.CalendarStore.removeRange(startTime, endTime, 'pr') + /* this.CalendarStore.removeRange(startTime, endTime, 'pr') - this.CalendarStore.pushEvent(eventsList, 'pr'); + this.CalendarStore.pushEvent(eventsList, 'pr'); */ this.listToPresent = eventsList; this.TimelinePRList = this.listBoxService.list(this.listToPresent, 'pr', this.rangeStartDate, this.rangeEndDate, { segment: this.segment, selectedDate: this.eventSelectedDate }) @@ -660,8 +683,8 @@ export class AgendaPage implements OnInit { } else { - // view PR calendar with PR profile - this.eventService.getAllPrEvents(momentG(new Date(startTime),'yyyy-MM-dd HH:mm:ss'), momentG(new Date(endTime),'yyyy-MM-dd 23:59:59')).then((response:any) => { + // view PR calendar with PR profile + this.eventService.getAllPrEvents(momentG(new Date(startTime), 'yyyy-MM-dd HH:mm:ss'), momentG(new Date(endTime), 'yyyy-MM-dd 23:59:59')).then((response: any) => { let eventsList; if (this.segment == 'Oficial') { @@ -729,44 +752,34 @@ export class AgendaPage implements OnInit { } getFromDB() { - - if (synchro.connected === true) { - const pathname = window.location.pathname - let realoadCounter = 0 - this.router.events.forEach((event) => { - if (event instanceof NavigationEnd && event.url == pathname) { - if (this.segment == null) { - this.segment = "Combinado"; - } - if (realoadCounter != 0) { - this.loadRangeEvents(this.rangeStartDate, this.rangeEndDate); - } - realoadCounter++; + console.log('ALL EVENTS FROM DB AGENDA OFFLINE') + this.sqliteservice.getAllEvents().then((events: any[]) => { + console.log('ALL EVENTS FROM DB', events) + let eventArray = []; + events.forEach(element => { + let event = { + startTime: new Date(element.StartDate), + endTime: new Date(element.EndDate), + allDay: false, + event: element, + calendarName: element.CalendarName, + profile: element.Profile, + id: element.EventId, } + eventArray.push(event); }); - console.log('LISTTOPRESENT', this.listToPresent) - } else { - console.log('ALL EVENTS FROM DB AGENDA OFFLINE') - this.sqliteservice.getAllEvents().then((events: any[]) => { - let eventArray = []; - events.forEach(element => { - let event = { - startTime: new Date(element.StartDate), - endTime: new Date(element.EndDate), - allDay: false, - event: element, - calendarName: element.CalendarName, - profile: element.profile, - id: element.EventId, - } - eventArray.push(event); - }); - console.log('ALL EVENTS FROM DB', events) - this.listToPresent = eventArray + this.listToPresent = eventArray + 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 25775dc21..1a1b16934 100644 --- a/src/app/pages/agenda/view-event/view-event.page.ts +++ b/src/app/pages/agenda/view-event/view-event.page.ts @@ -13,11 +13,11 @@ import { ToastService } from 'src/app/services/toast.service'; import { EliminateEventPage } from 'src/app/modals/eliminate-event/eliminate-event.page'; import { Location } from '@angular/common' import { SqliteService } from 'src/app/services/sqlite.service'; -import { synchro } from '../../../services/socket/synchro.service'; import { ExpedientTaskModalPageNavParamsTask } from 'src/app/models/ExpedientTaskModalPage'; import { DocumentSetUpMeetingPage } from 'src/app/modals/document-set-up-meeting/document-set-up-meeting.page'; import { ExpedientTaskModalPage } from '../../gabinete-digital/expediente/expedient-task-modal/expedient-task-modal.page'; import { ViewDocumentPage } from 'src/app/modals/view-document/view-document.page'; +import { BackgroundService } from 'src/app/services/background.service'; @Component({ selector: 'app-view-event', @@ -30,17 +30,17 @@ export class ViewEventPage implements OnInit { loadedEvent: Event; isEventEdited: boolean; eventBody: EventBody; - loadedAttachments:any; + loadedAttachments: any; pageId: string; showLoader: boolean; minDate: Date; - profile:string; - eventId:string; - caller:string; - customDate:any; - today:any; + profile: string; + eventId: string; + caller: string; + customDate: any; + today: any; 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"]; @@ -48,13 +48,12 @@ export class ViewEventPage implements OnInit { dicIndex = 0; isModal = false header = true - synch = synchro; task: ExpedientTaskModalPageNavParamsTask; - LoadedDocument:any = null; + LoadedDocument: any = null; constructor( private modalController: ModalController, - /* private navParams: NavParams, */ + /* private navParams: NavParams, */ private eventsService: EventsService, private attachmentsService: AttachmentsService, public alertController: AlertController, @@ -66,26 +65,24 @@ export class ViewEventPage implements OnInit { private toastService: ToastService, private location: Location, public platform: Platform, - private sqliteservice: SqliteService - - - ) - { + private sqliteservice: SqliteService, + private backgroundservice: BackgroundService + ) { this.isEventEdited = false; this.loadedEvent = new Event(); - this.eventBody = { BodyType : "1", Text : ""}; + this.eventBody = { BodyType: "1", Text: "" }; this.loadedEvent.Body = this.eventBody; - this.activatedRoute.paramMap.subscribe(params =>{ + this.activatedRoute.paramMap.subscribe(params => { this.eventId = params['params'].eventId; - if(params["params"].caller){ + if (params["params"].caller) { this.caller = (params["params"].caller); } - if(params["params"].isModal) { + if (params["params"].isModal) { this.isModal = params["params"].isModal } - if(params["params"].header) { + if (params["params"].header) { this.header = params["params"].header } }); @@ -100,56 +97,44 @@ export class ViewEventPage implements OnInit { } ngOnInit() { - if(synchro.connected === true) { - this.loadEvent(); - console.log('Onlineee view-event') - } else { - this.sqliteservice.getEventById(this.eventId).then((event) => { - this.loadedEvent = event[0]; - console.log("Event ditails local,", event[0]) - }) - console.log('Offlineee') - } + this.loadEvent(); - /* this.sqliteservice.getEventById(this.eventId).then((event) => { - this.loadedEvent = event[0]; - console.log("Event ditails local,", event[0]) - }) - this.loadEvent(); */ - + this.backgroundservice.registerBackService('Online', () => { + this.loadEvent(); + }); window.onresize = (event) => { // if not mobile remove all component - if( window.innerWidth >= 1024) { + if (window.innerWidth >= 1024) { this.modalController.dismiss(this.isEventEdited); } }; } - close(){ + close() { this.modalController.dismiss(this.isEventEdited); } goBack() { - if(this.isModal) { + if (this.isModal) { this.close() } else { - this.activatedRoute.paramMap.subscribe(params => { - if(params["params"].caller == 'expediente'){ - window.history.back(); - } - else{ - this.router.navigate(['/home',params["params"].caller]); - } + this.activatedRoute.paramMap.subscribe(params => { + if (params["params"].caller == 'expediente') { + window.history.back(); + } + else { + this.router.navigate(['/home', params["params"].caller]); + } }); } } - doRefresh(ev){ + doRefresh(ev) { this.loadEvent(); ev.target.complete(); } @@ -158,44 +143,45 @@ export class ViewEventPage implements OnInit { const loader = this.toastService.loading(); this.eventsService.getEvent(this.eventId).subscribe(res => { this.loadedEvent = res; - this.sqliteservice.addEvent(res); + this.addEventToDb(res); console.log('Loaded one event', res) /* this.today = new Date(res.StartDate); this.customDate = this.days[this.today.getDay()]+ ", " + this.today.getDate() +" de " + ( this.months[this.today.getMonth()]); */ loader.remove() - }, (error)=>{ + }, (error) => { - if(error.status == 0) { - this.toastService.badRequest('Não é possível vizualizar este evento no modo offline') + console.log('errorstatus',error.status) + + if (error.status == 0) { + this.getFromDb(); } else { this.toastService.badRequest('Este evento já não existe na sua agenda') + loader.remove() + this.modalController.dismiss('Eevent not Foud'); + this.location.back(); } - loader.remove() - this.modalController.dismiss('Eevent not Foud'); - this.location.back(); }); } - deleteEvent(){ + deleteEvent() { const loader = this.toastService.loading() - this.eventsService.deleteEvent(this.loadedEvent.EventId, 0, this.loadedEvent.CalendarName).subscribe(async () => - { - const alert = await this.alertController.create({ - cssClass: 'my-custom-class', - header: 'Evento removido', - buttons: ['OK'] - }); + this.eventsService.deleteEvent(this.loadedEvent.EventId, 0, this.loadedEvent.CalendarName).subscribe(async () => { + const alert = await this.alertController.create({ + cssClass: 'my-custom-class', + header: 'Evento removido', + buttons: ['OK'] + }); - setTimeout(()=>{ - alert.dismiss(); - }, 1500); - this.goBack(); - this.toastService.successMessage('Evento apagado'); - }, ()=>{}, - ()=>{ + setTimeout(() => { + alert.dismiss(); + }, 1500); + this.goBack(); + this.toastService.successMessage('Evento apagado'); + }, () => { }, + () => { loader.remove(); }); } @@ -216,7 +202,7 @@ export class ViewEventPage implements OnInit { modal.onDidDismiss().then((res) => { console.log(res); - if(res){ + if (res) { setTimeout(() => { /* this.loadEvent(); */ this.loadEvent() @@ -243,7 +229,7 @@ export class ViewEventPage implements OnInit { modal.onDidDismiss().then((res) => { console.log(res); - if(res){ + if (res) { setTimeout(() => { /* this.loadEvent(); */ this.loadEvent() @@ -258,15 +244,15 @@ export class ViewEventPage implements OnInit { console.log(this.loadedEvent); let classs; - if( window.innerWidth <= 800){ + if (window.innerWidth <= 800) { classs = 'modal modal-desktop' - } else { + } else { classs = 'modal modal-desktop showAsideOptions' } const modal = await this.modalController.create({ component: EditEventPage, - componentProps:{ + componentProps: { event: this.loadedEvent, caller: this.caller, }, @@ -276,7 +262,7 @@ export class ViewEventPage implements OnInit { modal.onDidDismiss().then((res) => { console.log(res); - if(res){ + if (res) { setTimeout(() => { /* this.loadEvent(); */ this.loadEvent() @@ -286,15 +272,15 @@ export class ViewEventPage implements OnInit { }); } - docIndex(index: number){ + docIndex(index: number) { this.dicIndex = index } async LoadDocumentDetails() { - - const docId = this.loadedEvent.Attachments[ this.dicIndex].SourceId - const applicationId: any = this.loadedEvent.Attachments[ this.dicIndex].ApplicationId - const selectedDoc = this.loadedEvent.Attachments[ this.dicIndex] + + const docId = this.loadedEvent.Attachments[this.dicIndex].SourceId + const applicationId: any = this.loadedEvent.Attachments[this.dicIndex].ApplicationId + const selectedDoc = this.loadedEvent.Attachments[this.dicIndex] console.log('selectedDoc', selectedDoc) @@ -322,7 +308,7 @@ export class ViewEventPage implements OnInit { url: '', title_link: '', }, - Document: this.loadedEvent.Attachments[ this.dicIndex], + Document: this.loadedEvent.Attachments[this.dicIndex], applicationId: this.task.workflowInstanceDataFields.SourceSecFsID, docId: selectedDoc.SourceId, folderId: '', @@ -336,33 +322,33 @@ export class ViewEventPage implements OnInit { async openBookMeetingModal() { let classs; - if( window.innerWidth < 701) { + if (window.innerWidth < 701) { classs = 'book-meeting-modal modal modal-desktop' - } else { + } else { classs = 'modal modal-desktop showAsideOptions' } const modal = await this.modalController.create({ component: DocumentSetUpMeetingPage, componentProps: { subject: this.task.workflowInstanceDataFields.Subject, - document: this.loadedEvent.Attachments[ this.dicIndex], + document: this.loadedEvent.Attachments[this.dicIndex], }, cssClass: classs, backdropDismiss: false }); await modal.present(); - modal.onDidDismiss().then(res=>{ + modal.onDidDismiss().then(res => { //this.location.back(); }); } // efetuar despacho - async openExpedientActionsModal( taskAction: any) { + async openExpedientActionsModal(taskAction: any) { let classs; - if( window.innerWidth < 701) { + if (window.innerWidth < 701) { classs = 'modal modal-desktop' - } else { + } else { classs = 'modal modal-desktop showAsideOptions' } const modal = await this.modalController.create({ @@ -370,35 +356,74 @@ export class ViewEventPage implements OnInit { componentProps: { taskAction: taskAction, task: this.task, - seachDocuments: this.loadedEvent.Attachments[ this.dicIndex], - aplicationId: this.loadedEvent.Attachments[ this.dicIndex].ApplicationId || this.loadedEvent.Attachments[ this.dicIndex]['ApplicationID'] + seachDocuments: this.loadedEvent.Attachments[this.dicIndex], + aplicationId: this.loadedEvent.Attachments[this.dicIndex].ApplicationId || this.loadedEvent.Attachments[this.dicIndex]['ApplicationID'] }, cssClass: classs, }); await modal.present(); - modal.onDidDismiss().then( async(res)=>{}); + modal.onDidDismiss().then(async (res) => { }); } - getEventsFromLocalDb() { - console.log("event id details ", this.eventId) + addEventToDb(data) { + if (this.platform.is('desktop') || this.platform.is('mobileweb')) { + } else { + let event = { + Attendees: JSON.stringify(data.Attendees) || JSON.stringify(''), + Body: JSON.stringify(data.Body) || JSON.stringify(''), + CalendarId: data.CalendarId, + CalendarName: data.CalendarName, + Category: data.Category, + EndDate: data.EndDate, + EventId: data.EventId, + EventRecurrence: JSON.stringify(data.EventRecurrence) || JSON.stringify(''), + EventType: data.EventType, + HasAttachments: data.HasAttachments, + IsAllDayEvent: data.IsAllDayEvent, + IsMeeting: data.IsMeeting, + IsRecurring: data.IsRecurring, + Location: data.Location, + Organizer: JSON.stringify(data.Organizer) || JSON.stringify(''), + StartDate: data.StartDate, + Subject: data.Subject, + TimeZone: data.TimeZone + } - synchro.registerCallback('Online', () => { - this.loadEvent(); - console.log('Onlineee view-event') - - }) - - synchro.registerCallback('Offline', () => { - this.platform.ready().then(() => { - this.sqliteservice.getEventById(this.eventId).then((event) => { - this.loadedEvent = event[0]; - console.log("Event ditails local,", event[0]) - }) - console.log('Offlineee') - }) + this.sqliteservice.updateEvent(event); + } + } + + getFromDb() { + const loader = this.toastService.loading(); + this.sqliteservice.getEventById(this.eventId).then((event) => { + let arrayevent = []; + let elemet = { + Attendees: 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/chat/messages/messages.page.ts b/src/app/pages/chat/messages/messages.page.ts index 2b4c147e7..0c01a9ea7 100644 --- a/src/app/pages/chat/messages/messages.page.ts +++ b/src/app/pages/chat/messages/messages.page.ts @@ -12,7 +12,6 @@ import { AuthService } from 'src/app/services/auth.service'; import { ChatService } from 'src/app/services/chat.service'; import { FileService } from 'src/app/services/functions/file.service'; import { ProcessesService } from 'src/app/services/processes.service'; -import { synchro } from 'src/app/services/socket/synchro.service'; import { ToastService } from 'src/app/services/toast.service'; import { NewEventPage } from 'src/app/shared/agenda/new-event/new-event.page'; import { ChatOptionsPopoverPage } from 'src/app/shared/popover/chat-options-popover/chat-options-popover.page'; @@ -45,7 +44,6 @@ export class MessagesPage implements OnInit, AfterViewInit, OnDestroy { members:any; scrollingOnce:boolean = true; - synchro = synchro; chatMessageStore = ChatMessageStore chatUserStorage = ChatUserStorage diff --git a/src/app/pages/events/events.page.ts b/src/app/pages/events/events.page.ts index ffcc423df..360f71d8c 100644 --- a/src/app/pages/events/events.page.ts +++ b/src/app/pages/events/events.page.ts @@ -17,8 +17,8 @@ import { ScreenOrientation } from '@ionic-native/screen-orientation/ngx'; 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 { synchro } from '../../services/socket/synchro.service'; -import { BackgroundService } from 'src/app/services/background.service' +import { NetworkConnectionService } from 'src/app/services/network-connection.service' +import { BackgroundService } from 'src/app/services/background.service'; @Component({ selector: 'app-events', @@ -69,7 +69,7 @@ export class EventsPage implements OnInit { expedienteGdStore = ExpedienteGdStore listToPresent = []; - listToPresentexpediente =[] + listToPresentexpediente = [] expedienteTaskPipe = new ExpedienteTaskPipe() @@ -78,7 +78,6 @@ export class EventsPage implements OnInit { loggeduser: LoginUserRespose; existingScreenOrientation: string; - synch = synchro constructor( private eventService: EventsService, @@ -93,7 +92,8 @@ export class EventsPage implements OnInit { private screenOrientation: ScreenOrientation, public platform: Platform, private sqliteservice: SqliteService, - private backgroundservice: BackgroundService + private networkconnection: NetworkConnectionService, + private backgroundservice: BackgroundService, ) { this.existingScreenOrientation = this.screenOrientation.type; console.log(this.existingScreenOrientation); @@ -108,15 +108,14 @@ export class EventsPage implements OnInit { }); - /* if (this.platform.is('desktop') || this.platform.is('mobileweb')) { + if (this.platform.is('desktop') || this.platform.is('mobileweb')) { } else { try { this.sqliteservice.databaseConn(); } catch (error) { console.log("Error creating local database: ", error) } - } */ - + } } ngOnInit() { @@ -124,21 +123,26 @@ export class EventsPage implements OnInit { this.segment = "Combinada"; this.profile = "mdgpr"; - if (this.platform.is('desktop') || this.platform.is('mobileweb')) { + 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.router.events.forEach((event) => { - if (event instanceof NavigationEnd && event.url == '/home/events') { - this.RefreshEvents(); - setTimeout(() => { - this.LoadList(); - }, 1500) - } - }); + this.RefreshEvents(); + this.LoadList(); this.hideSearch(); - } + }); - this.getEventsFromLocalDb(); + //this.getEventsFromLocalDb(); //this.checkScreenOrientation(); @@ -206,7 +210,7 @@ export class EventsPage implements OnInit { console.log("getAllMdOficialPessoalEvents", list) if (this.platform.is('desktop') || this.platform.is('mobileweb')) { } else { - if(list.length > 0) { + if (list.length > 0) { list.forEach(element => { this.sqliteservice.addEvent(element) }); @@ -234,7 +238,7 @@ export class EventsPage implements OnInit { console.log("getAllPrOficialPessoalEvents", list) if (this.platform.is('desktop') || this.platform.is('mobileweb')) { } else { - if(list.length > 0) { + if (list.length > 0) { list.forEach(element => { this.sqliteservice.addEvent(element) }); @@ -324,21 +328,26 @@ export class EventsPage implements OnInit { getEventsFromLocalDb() { - if (synchro.connected === true) { - this.showGreeting(); + /* window.addEventListener('online', (on) => { + this.showGreeting(); + + this.router.events.forEach((event) => { + if (event instanceof NavigationEnd && event.url == '/home/events') { + this.RefreshEvents(); + setTimeout(() => { + this.LoadList(); + + }, 1500) + } + }); + this.hideSearch(); + }); */ - this.router.events.forEach((event) => { - if (event instanceof NavigationEnd && event.url == '/home/events') { - this.RefreshEvents(); - setTimeout(() => { - this.LoadList(); - }, 1500) - } - }); - this.hideSearch(); - } else { - this.platform.ready().then(async () => { - this.sqliteservice.getAllEvents().then((event:any[]) => { + // window.addEventListener('offline', (off) => { + if (this.platform.is('desktop') || this.platform.is('mobileweb')) { + + } else { + this.sqliteservice.getAllEvents().then((event: any[]) => { this.listToPresent = event this.totalEvent = this.listToPresent.length this.currentEvent = this.listToPresent[0].Subject @@ -346,29 +355,39 @@ export class EventsPage implements OnInit { console.log("All events from local,", event) }) - this.sqliteservice.getprocessByworkflow("Expediente").then((process: any[]) => { - var expedientlist = []; - process.forEach((element) => { - let task = { - CreateDate: element.taskStartDate, - DocumentsQty: element.totalDocuments, - Senders: JSON.parse(element.workflowInstanceDataFields).Sender, - SerialNumber: element.serialNumber, - Status: JSON.parse(element.workflowInstanceDataFields).Status, - Subject: JSON.parse(element.workflowInstanceDataFields).Subject, - WorkflowName: element.workflowDisplayName, - activityInstanceName: element.activityInstanceName, - taskStartDate: element.taskStartDate, - } - expedientlist.push(task); - }) - const ExpedienteTask = expedientlist.map(e => this.expedienteTaskPipe.transform(e)) - this.listToPresentexpediente = ExpedienteTask; - - + this.sqliteservice.getAllProcess().then((res) => { + console.log('INICION ALL EVENTs', res) + }) + this.sqliteservice.getprocessByworkflow("Expediente").then((process: any[]) => { + + console.log('OFOFOFOOF', process) + + if (process.length > 0 || process != undefined) { + + var expedientlist: any = new Array(); + process.forEach((element) => { + 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); + }) + + console.log('OFOFOFOOF22222', expedientlist) + const ExpedienteTask = expedientlist.map(e => this.expedienteTaskPipe.transform(e)) + this.listToPresentexpediente = ExpedienteTask; + + } + + this.showLoader = false; }) - }); } + // }); } @@ -426,10 +445,13 @@ export class EventsPage implements OnInit { LoadList() { this.processes.GetTaskListExpediente(false).subscribe(result => { console.log("Expediente", result); + if (this.platform.is('desktop') || this.platform.is('mobileweb')) { - + } else { - this.sqliteservice.addProcess(result) + result.forEach((element) => { + this.sqliteservice.addProcess(element) + }) } const ExpedienteTask = result.map(e => this.expedienteTaskPipe.transform(e)) @@ -437,7 +459,10 @@ export class EventsPage implements OnInit { console.log("Expediente 2", ExpedienteTask); this.listToPresentexpediente = ExpedienteTask; - }); + }, ((error) => { + console.log('Getlist error', error) + this.getEventsFromLocalDb(); + })); } sortArrayISODate(myArray: any) { diff --git a/src/app/pages/gabinete-digital/despachos-pr/despacho-pr/despacho-pr.page.ts b/src/app/pages/gabinete-digital/despachos-pr/despacho-pr/despacho-pr.page.ts index f79123fd6..516c1c439 100644 --- a/src/app/pages/gabinete-digital/despachos-pr/despacho-pr/despacho-pr.page.ts +++ b/src/app/pages/gabinete-digital/despachos-pr/despacho-pr/despacho-pr.page.ts @@ -21,7 +21,7 @@ import { DespachoService } from 'src/app/Rules/despacho.service'; import { ViewDocumentPage } from 'src/app/modals/view-document/view-document.page'; import { SqliteService } from 'src/app/services/sqlite.service'; -import { synchro } from 'src/app/services/socket/synchro.service'; +import { BackgroundService } from 'src/app/services/background.service'; @Component({ selector: 'app-despacho-pr', @@ -56,7 +56,8 @@ export class DespachoPrPage implements OnInit { private toastService: ToastService, private location: Location, private despachoService: DespachoService, - private sqliteservice: SqliteService + private sqliteservice: SqliteService, + private backgroundservice: BackgroundService ) { this.activatedRoute.paramMap.subscribe(params => { if (params["params"].SerialNumber) { @@ -73,7 +74,21 @@ export class DespachoPrPage implements OnInit { ngOnInit() { this.profile = "mdgpr"; console.log(this.serialNumber); - this.getFromDB(); + + this.activateRoute.paramMap.subscribe(paramMap => { + if (!paramMap.has('SerialNumber')) { + return; + } + /* this.serialNumber = paramMap.get('SerialNumber'); */ + this.LoadTaskDetail(this.serialNumber); + // this.LoadRelatedEvents(this.serialNumber); + }); + this.LoadTaskDetail(this.serialNumber); + // this.LoadRelatedEvents(this.serialNumber); + + this.backgroundservice.registerBackService('Online', () => { + this.LoadTaskDetail(this.serialNumber); + }); } close() { @@ -125,93 +140,81 @@ export class DespachoPrPage implements OnInit { return user.Type == 'CC'; }) || [] - if(!this.cc) { + if (!this.cc) { this.cc = [] } }); }, (error) => { - try { - this.goBack() - } catch (e) { - window.history.back(); - } finally { - if (error.status == 0) { - this.toastService.badRequest('Não é possível visualizar este processo no modo offline') - } else { - this.toastService.badRequest('Processo não encontrado') + + if (error.status == 0) { + this.getFromDB() + } else { + try { + this.goBack() + } catch (e) { + window.history.back(); } + this.toastService.badRequest('Processo não encontrado') + } }); } getFromDB() { - if (synchro.connected === true) { - this.activateRoute.paramMap.subscribe(paramMap => { - if (!paramMap.has('SerialNumber')) { - return; - } - /* this.serialNumber = paramMap.get('SerialNumber'); */ - this.LoadTaskDetail(this.serialNumber); - // this.LoadRelatedEvents(this.serialNumber); + + this.sqliteservice.getProcessById(this.serialNumber).then((process: any[]) => { + console.log('OFFLINE', process) + this.task = { + "SerialNumber": process[0].serialNumber, + "Folio": JSON.parse(process[0].workflowInstanceDataFields).Subject, + "Senders": JSON.parse(process[0].originator).email, + "CreateDate": momentG(new Date(process[0].taskStartDate), 'yyyy-MM-dd HH:mm:ss'), + "DocumentURL": JSON.parse(process[0].workflowInstanceDataFields).ViewerRequest, + "Remetente": JSON.parse(process[0].workflowInstanceDataFields).Sender, + "Note": JSON.parse(process[0].workflowInstanceDataFields).TaskMessage || JSON.parse(process[0].workflowInstanceDataFields).Note, + "FolderId": JSON.parse(process[0].workflowInstanceDataFields).FolderID, + "FsId": '361', + "DocId": JSON.parse(process[0].workflowInstanceDataFields).DispatchDocId, + "WorkflowName": process[0].workflowDisplayName, + "DeadlineType": JSON.parse(process[0].workflowInstanceDataFields).DeadlineType, + "activityInstanceName": process[0].activityInstanceName, + } + console.log("OFFLINE TASK", this.task) + let fulltak = { + Documents: JSON.parse(process[0].Documents), + actions: JSON.parse(process[0].actions), + activityInstanceName: process[0].activityInstanceName, + formURL: process[0].formURL, + originator: JSON.parse(process[0].originator), + serialNumber: process[0].serialNumber, + taskStartDate: process[0].taskStartDate, + totalDocuments: process[0].totalDocuments, + workflowDisplayName: process[0].workflowDisplayName, + workflowID: process[0].workflowID, + workflowInstanceDataFields: JSON.parse(process[0].workflowInstanceDataFields), + workflowInstanceFolio: process[0].workflowInstanceFolio, + workflowInstanceID: process[0].workflowInstanceID, + workflowName: process[0].workflowName + } + this.fulltask = fulltak; + console.log(this.task); + + let thedate = new Date(this.task.CreateDate); + this.customDate = this.days[thedate.getDay()] + ", " + thedate.getDate() + " de " + (this.months[thedate.getMonth()]); + + this.intervenientes = JSON.parse(process[0].interveners).filter(user => { + return user.Type == 'I'; + }); + this.cc = JSON.parse(process[0].interveners).filter(user => { + return user.Type == 'CC'; }); - this.LoadTaskDetail(this.serialNumber); - // this.LoadRelatedEvents(this.serialNumber); - } else { - this.sqliteservice.getProcessById(this.serialNumber).then((process: any[]) => { - console.log('OFFLINE', process) - this.task = { - "SerialNumber": process[0].serialNumber, - "Folio": JSON.parse(process[0].workflowInstanceDataFields).Subject, - "Senders": JSON.parse(process[0].originator).email, - "CreateDate": momentG(new Date(process[0].taskStartDate), 'yyyy-MM-dd HH:mm:ss'), - "DocumentURL": JSON.parse(process[0].workflowInstanceDataFields).ViewerRequest, - "Remetente": JSON.parse(process[0].workflowInstanceDataFields).Sender, - "Note": JSON.parse(process[0].workflowInstanceDataFields).TaskMessage || JSON.parse(process[0].workflowInstanceDataFields).Note, - "FolderId": JSON.parse(process[0].workflowInstanceDataFields).FolderID, - "FsId": '361', - "DocId": JSON.parse(process[0].workflowInstanceDataFields).DispatchDocId, - "WorkflowName": process[0].workflowDisplayName, - "DeadlineType": JSON.parse(process[0].workflowInstanceDataFields).DeadlineType, - "activityInstanceName": process[0].activityInstanceName, - } - console.log("OFFLINE TASK", this.task) - let fulltak = { - Documents: JSON.parse(process[0].Documents), - actions: JSON.parse(process[0].actions), - activityInstanceName: process[0].activityInstanceName, - formURL: process[0].formURL, - originator: JSON.parse(process[0].originator), - serialNumber: process[0].serialNumber, - taskStartDate: process[0].taskStartDate, - totalDocuments: process[0].totalDocuments, - workflowDisplayName: process[0].workflowDisplayName, - workflowID: process[0].workflowID, - workflowInstanceDataFields: JSON.parse(process[0].workflowInstanceDataFields), - workflowInstanceFolio: process[0].workflowInstanceFolio, - workflowInstanceID: process[0].workflowInstanceID, - workflowName: process[0].workflowName - } - this.fulltask = fulltak; - console.log(this.task); - - let thedate = new Date(this.task.CreateDate); - this.customDate = this.days[thedate.getDay()] + ", " + thedate.getDate() + " de " + (this.months[thedate.getMonth()]); - - this.intervenientes = JSON.parse(process[0].interveners).filter(user => { - return user.Type == 'I'; - }); - this.cc = JSON.parse(process[0].interveners).filter(user => { - return user.Type == 'CC'; - }); - - }) - } + }) } - async viewDocument(DocId:string, Document) { + async viewDocument(DocId: string, Document) { const modal = await this.modalController.create({ component: ViewDocumentPage, diff --git a/src/app/pages/gabinete-digital/despachos-pr/despachos-pr.page.ts b/src/app/pages/gabinete-digital/despachos-pr/despachos-pr.page.ts index 6938ce759..2b621b25f 100644 --- a/src/app/pages/gabinete-digital/despachos-pr/despachos-pr.page.ts +++ b/src/app/pages/gabinete-digital/despachos-pr/despachos-pr.page.ts @@ -18,7 +18,7 @@ import { __awaiter } from 'tslib'; import { DespachosprStore } from 'src/app/store/despachospr-store.service'; import { SqliteService } from 'src/app/services/sqlite.service'; -import { synchro } from 'src/app/services/socket/synchro.service'; +import { BackgroundService } from 'src/app/services/background.service'; import { SortService } from 'src/app/services/functions/sort.service'; @Component({ @@ -61,6 +61,7 @@ export class DespachosPrPage implements OnInit { private authService: AuthService, private router: Router, private sqliteservice: SqliteService, + private backgroundservice: BackgroundService, private sortService: SortService, ) { @@ -72,7 +73,25 @@ export class DespachosPrPage implements OnInit { ngOnInit() { //Inicializar segment this.segment = "despachos"; - this.getFromDB(); + + const location = window.location + const pathname = location.pathname + location.search + + this.LoadList() + + this.router.events.forEach((event) => { + if (event instanceof NavigationStart && event.url.startsWith(pathname)) { + if (window.location.pathname.split('/').length >= 4 && window.location.pathname.startsWith('/home/gabinete-digital')) { + this.doRefresh() + } else { + this.LoadList() + } + } + }); + + this.backgroundservice.registerBackService('Online', () => { + this.LoadList() + }); } segmentChanged(ev: any) { @@ -94,115 +113,104 @@ export class DespachosPrPage implements OnInit { async LoadList() { - this.skeletonLoader = true + this.processes.GetTasksList("Despacho do Presidente da República", false).subscribe(async res => { + this.skeletonLoader = true - let result = await this.processes.GetTasksList("Despacho do Presidente da República", false).toPromise(); - this.despachoList = []; - this.skeletonLoader = false; - console.log(result); + let result = await this.processes.GetTasksList("Despacho do Presidente da República", false).toPromise(); + this.despachoList = []; + this.skeletonLoader = false; + console.log(result); - let despachosPr; - let despachos = this.sortService.sortArrayByDate(result); - switch (this.loggeduser.Profile) { - case 'MDGPR': - despachosPr = await despachos.reverse().filter(data => data.activityInstanceName == "Tarefa de Despacho"); - break; - case 'PR': - despachosPr = await despachos.reverse().filter(data => data.activityInstanceName == "Concluir Despacho"); - break; - } - - console.log(despachosPr); - despachosPr = despachosPr.filter(data => data.workflowInstanceDataFields.Status == "Active"); - - despachosPr.forEach((element, index) => { - - 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, - "DocumentURL": element.workflowInstanceDataFields.ViewerRequest, - "Remetente": element.workflowInstanceDataFields.Remetente, - "DocumentsQty": element.totalDocuments, - "DocId": element.workflowInstanceDataFields.DocIdDiferimento, - "WorkflowName": element.workflowDisplayName, - "activityInstanceName": element.activityInstanceName, + let despachosPr; + let despachos = this.sortService.sortArrayByDate(result); + switch (this.loggeduser.Profile) { + case 'MDGPR': + despachosPr = await despachos.reverse().filter(data => data.activityInstanceName == "Tarefa de Despacho"); + break; + case 'PR': + despachosPr = await despachos.reverse().filter(data => data.activityInstanceName == "Concluir Despacho"); + break; } - this.despachoList.push(task); - console.log(this.despachoList); - }); - this.listToPresent = this.despachoList + console.log(despachosPr); + despachosPr = despachosPr.filter(data => data.workflowInstanceDataFields.Status == "Active"); + + despachosPr.forEach((element, index) => { + + 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": new Date(element.taskStartDate), + "DocumentURL": element.workflowInstanceDataFields.ViewerRequest, + "Remetente": element.workflowInstanceDataFields.Remetente, + "DocumentsQty": element.totalDocuments, + "DocId": element.workflowInstanceDataFields.DocIdDiferimento, + "WorkflowName": element.workflowDisplayName, + "activityInstanceName": element.activityInstanceName, + } + + this.despachoList.push(task); + console.log(this.despachoList); + }); + this.listToPresent = this.despachoList + + }, (error) => { + this.getFromDB() + }) } getFromDB() { - if (synchro.connected === true) { - const location = window.location - const pathname = location.pathname + location.search - this.LoadList() + this.sqliteservice.getAllProcess().then((all) => { + console.log('DESPACHO PR ALL', all) + }) + this.sqliteservice.getprocessByworkflow('Despacho do Presidente da República').then(async (process: any[]) => { + console.log('DESPACHO PR', process) - this.router.events.forEach((event) => { - if (event instanceof NavigationStart && event.url.startsWith(pathname)) { - if (window.location.pathname.split('/').length >= 4 && window.location.pathname.startsWith('/home/gabinete-digital')) { - this.doRefresh() - } else { - this.LoadList() - } + let despachosPr; + switch (this.loggeduser.Profile) { + case 'MDGPR': + despachosPr = await process.reverse().filter(data => data.activityInstanceName == "Tarefa de Despacho"); + break; + case 'PR': + console.log(process); + + despachosPr = await process.reverse().filter(data => data.activityInstanceName == "Concluir Despacho"); + break; + } + + despachosPr = despachosPr.filter(data => JSON.parse(data.workflowInstanceDataFields).Status == "Active"); + despachosPr.forEach((element, index) => { + + 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": JSON.parse(element.workflowInstanceDataFields).Subject, + "Senders": JSON.parse(element.workflowInstanceDataFields).Sender, + "CreateDate": new Date(element.taskStartDate), + "DocumentURL": JSON.parse(element.workflowInstanceDataFields).ViewerRequest, + "Remetente": JSON.parse(element.workflowInstanceDataFields).Remetente, + "DocumentsQty": element.totalDocuments, + "DocId": JSON.parse(element.workflowInstanceDataFields).DocIdDiferimento, + "WorkflowName": element.workflowDisplayName, + "activityInstanceName": element.activityInstanceName, } + + this.despachoList.push(task); + console.log(this.despachoList); }); - } else { - this.sqliteservice.getAllProcess().then((all) => { - console.log('DESPACHO PR ALL', all) - }) - this.sqliteservice.getprocessByworkflow('Despacho do Presidente da República').then(async (process: any[]) => { - console.log('DESPACHO PR', process) + this.listToPresent = this.despachoList; - let despachosPr; - switch (this.loggeduser.Profile) { - case 'MDGPR': - despachosPr = await process.reverse().filter(data => data.activityInstanceName == "Tarefa de Despacho"); - break; - case 'PR': - console.log(process); - - despachosPr = await process.reverse().filter(data => data.activityInstanceName == "Concluir Despacho"); - break; - } - - despachosPr = despachosPr.filter(data => JSON.parse(data.workflowInstanceDataFields).Status == "Active"); - despachosPr.forEach((element, index) => { - - 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": JSON.parse(element.workflowInstanceDataFields).Subject, - "Senders": JSON.parse(element.workflowInstanceDataFields).Sender, - "CreateDate": taskDate, - "DocumentURL": JSON.parse(element.workflowInstanceDataFields).ViewerRequest, - "Remetente": JSON.parse(element.workflowInstanceDataFields).Remetente, - "DocumentsQty": element.totalDocuments, - "DocId": JSON.parse(element.workflowInstanceDataFields).DocIdDiferimento, - "WorkflowName": element.workflowDisplayName, - "activityInstanceName": element.activityInstanceName, - } - - this.despachoList.push(task); - console.log(this.despachoList); - }); - this.listToPresent = this.despachoList; - - }) - } + }) } doRefresh() { diff --git a/src/app/pages/gabinete-digital/despachos/despacho/despacho.page.ts b/src/app/pages/gabinete-digital/despachos/despacho/despacho.page.ts index c43a12e9d..fe7b6f9f5 100644 --- a/src/app/pages/gabinete-digital/despachos/despacho/despacho.page.ts +++ b/src/app/pages/gabinete-digital/despachos/despacho/despacho.page.ts @@ -19,9 +19,9 @@ import { AttachmentList } from 'src/app/models/Excludetask'; import { PermissionService } from 'src/app/services/worker/permission.service'; import { ViewDocumentPage } from 'src/app/modals/view-document/view-document.page'; -import { synchro } from 'src/app/services/socket/synchro.service'; import { SqliteService } from 'src/app/services/sqlite.service'; import { Platform } from '@ionic/angular'; +import { BackgroundService } from 'src/app/services/background.service'; @Component({ selector: 'app-despacho', @@ -46,8 +46,6 @@ export class DespachoPage implements OnInit { intervenientes: any; cc: any = []; - synch = synchro; - constructor(private activateRoute: ActivatedRoute, private processes: ProcessesService, private iab: InAppBrowser, @@ -60,7 +58,8 @@ export class DespachoPage implements OnInit { private location: Location, public p: PermissionService, private sqliteservice: SqliteService, - private platform: Platform + private platform: Platform, + private backgroundservice: BackgroundService ) { @@ -81,7 +80,10 @@ export class DespachoPage implements OnInit { return; } }); - this.getFromDb() + this.LoadTaskDetail(this.serialnumber) + this.backgroundservice.registerBackService('Online', () => { + this.LoadTaskDetail(this.serialnumber) + }); } @@ -162,95 +164,89 @@ export class DespachoPage implements OnInit { }); }); }, (error) => { - try { - this.goBack() - } catch (e) { - this.location.back(); - } finally { - if (error.status == 0) { - this.toastService.badRequest('Não é possível visualizar este processo no modo offline') - } else { - this.toastService.badRequest('Processo não encontrado') + if (error.status == 0) { + this.getFromDb(); + } else { + try { + this.goBack() + } catch (e) { + this.location.back(); } + this.toastService.badRequest('Processo não encontrado') } }); } getFromDb() { - if (synchro.connected === true) { - this.LoadTaskDetail(this.serialnumber) - } - if (synchro.connected === false) { - this.platform.ready().then(() => { - this.sqliteservice.getProcessById(this.serialnumber).then((process) => { + this.platform.ready().then(() => { + this.sqliteservice.getProcessById(this.serialnumber).then((process) => { - var workflow = JSON.parse(process[0].workflowInstanceDataFields); - var intervine = JSON.parse(process[0].interveners) - var origina - if (process[0].originator === "undefined") { - origina = "" - } else { - origina = JSON.parse(process[0].originator) - } + var workflow = JSON.parse(process[0].workflowInstanceDataFields); + var intervine = JSON.parse(process[0].interveners) + var origina + if (process[0].originator === "undefined") { + origina = "" + } else { + origina = JSON.parse(process[0].originator) + } - console.log('sqlite', process) + console.log('sqlite', process) - this.task = { - "SerialNumber": process[0].serialNumber, - "Folio": workflow.Subject, - "Senders": origina.email || process[0].originator, - "CreateDate": momentG(new Date(process[0].taskStartDate), 'yyyy-MM-dd HH:mm:ss'), - "DocumentURL": workflow.ViewerRequest, - "Remetente": workflow.Sender, - "Note": workflow.TaskMessage || workflow.Note, - "FolderId": workflow.FolderID, - "FsId": workflow.FsId, - "DocId": workflow.DocID, - "DocumentsQty": process[0].DocumentsQty, - "WorkflowName": process[0].workflowDisplayName, - "DeadlineType": workflow.DeadlineType, - "activityInstanceName": process[0].activityInstanceName, - "Status": workflow.Status, - } + this.task = { + "SerialNumber": process[0].serialNumber, + "Folio": workflow.Subject, + "Senders": origina.email || process[0].originator, + "CreateDate": momentG(new Date(process[0].taskStartDate), 'yyyy-MM-dd HH:mm:ss'), + "DocumentURL": workflow.ViewerRequest, + "Remetente": workflow.Sender, + "Note": workflow.TaskMessage || workflow.Note, + "FolderId": workflow.FolderID, + "FsId": workflow.FsId, + "DocId": workflow.DocID, + "DocumentsQty": process[0].DocumentsQty, + "WorkflowName": process[0].workflowDisplayName, + "DeadlineType": workflow.DeadlineType, + "activityInstanceName": process[0].activityInstanceName, + "Status": workflow.Status, + } - let thedate = new Date(this.task.CreateDate); - this.customDate = this.days[thedate.getDay()] + ", " + thedate.getDate() + " de " + (this.months[thedate.getMonth()]); + let thedate = new Date(this.task.CreateDate); + this.customDate = this.days[thedate.getDay()] + ", " + thedate.getDate() + " de " + (this.months[thedate.getMonth()]); - let fulltak = { - Documents: JSON.parse(process[0].Documents), - actions: JSON.parse(process[0].actions), - activityInstanceName: process[0].activityInstanceName, - formURL: process[0].formURL, - originator: JSON.parse(process[0].originator), - serialNumber: process[0].serialNumber, - taskStartDate: process[0].taskStartDate, - totalDocuments: process[0].totalDocuments, - workflowDisplayName: process[0].workflowDisplayName, - workflowID: process[0].workflowID, - workflowInstanceDataFields: JSON.parse(process[0].workflowInstanceDataFields), - workflowInstanceFolio: process[0].workflowInstanceFolio, - workflowInstanceID: process[0].workflowInstanceID, - workflowName: process[0].workflowName - } - this.fulltask = fulltak; + let fulltak = { + Documents: JSON.parse(process[0].Documents), + actions: JSON.parse(process[0].actions), + activityInstanceName: process[0].activityInstanceName, + formURL: process[0].formURL, + originator: JSON.parse(process[0].originator), + serialNumber: process[0].serialNumber, + taskStartDate: process[0].taskStartDate, + totalDocuments: process[0].totalDocuments, + workflowDisplayName: process[0].workflowDisplayName, + workflowID: process[0].workflowID, + workflowInstanceDataFields: JSON.parse(process[0].workflowInstanceDataFields), + workflowInstanceFolio: process[0].workflowInstanceFolio, + workflowInstanceID: process[0].workflowInstanceID, + workflowName: process[0].workflowName + } + this.fulltask = fulltak; - console.log('interveniers offline', intervine) - this.intervenientes = intervine.filter(user => { - console.log('interveniers offline 2', user) - return user.Type == 'I'; - }); - this.cc = intervine.filter(user => { - console.log('interveniers offline 3', user) - return user.Type == 'CC'; - }); + console.log('interveniers offline', intervine) + this.intervenientes = intervine.filter(user => { + console.log('interveniers offline 2', user) + return user.Type == 'I'; + }); + this.cc = intervine.filter(user => { + console.log('interveniers offline 3', user) + return user.Type == 'CC'; + }); - }) }) - } + }) } - async viewDocument(docId:string, Document) { + async viewDocument(docId: string, Document) { console.log(this.fulltask) diff --git a/src/app/pages/gabinete-digital/despachos/despachos.page.ts b/src/app/pages/gabinete-digital/despachos/despachos.page.ts index f8e1e4b60..cf1beeaa0 100644 --- a/src/app/pages/gabinete-digital/despachos/despachos.page.ts +++ b/src/app/pages/gabinete-digital/despachos/despachos.page.ts @@ -4,9 +4,9 @@ import { DespachoService } from 'src/app/Rules/despacho.service'; import { DespachoStore } from 'src/app/store/despacho-store.service'; import { SqliteService } from 'src/app/services/sqlite.service'; -import { synchro } from 'src/app/services/socket/synchro.service'; import { Platform } from '@ionic/angular'; import { isThisHour } from 'date-fns'; +import { BackgroundService } from 'src/app/services/background.service'; @Component({ selector: 'app-despachos', @@ -17,21 +17,39 @@ import { isThisHour } from 'date-fns'; export class DespachosPage implements OnInit { despachoStore = DespachoStore; - synch = synchro; listToPresent = []; constructor( private router: Router, private despachoRule: DespachoService, private sqliteservice: SqliteService, - private platform: Platform + private platform: Platform, + private backgroundservice: BackgroundService ) { } ngOnInit() { - this.getFromDb() + const location = window.location + const pathname = location.pathname + location.search + + this.LoadList() + + this.router.events.forEach((event) => { + if (event instanceof NavigationStart && event.url.startsWith(pathname)) { + if (window.location.pathname.split('/').length >= 4 && window.location.pathname.startsWith('/home/gabinete-digital')) { + this.refreshing() + } else { + this.LoadList() + } + } + }); + + this.backgroundservice.registerBackService('Online', () => { + this.LoadList(); + }); + } async refreshing() { @@ -49,57 +67,42 @@ export class DespachosPage implements OnInit { await this.despachoRule.getList({ updateStore: true }).then((pre) => { this.listToPresent = pre; console.log('despachooo', pre) + }).catch(() => { + this.getFromDb() }) } getFromDb() { - if (synchro.connected === true) { - const location = window.location - const pathname = location.pathname + location.search - this.LoadList() - - this.router.events.forEach((event) => { - if (event instanceof NavigationStart && event.url.startsWith(pathname)) { - if (window.location.pathname.split('/').length >= 4 && window.location.pathname.startsWith('/home/gabinete-digital')) { - this.refreshing() - } else { - this.LoadList() + this.platform.ready().then(() => { + this.sqliteservice.getprocessByworkflow('Despacho').then((process: any[]) => { + var listtopresent = []; + process.forEach(element => { + var workflow = JSON.parse(element.workflowInstanceDataFields); + let task = { + "CreateDate": element.taskStartDate, + "DocId": workflow.DispatchDocID, + "DocumentURL": undefined, + "DocumentsQty": element.totalDocuments, + "FolderID": workflow.FolderID, + "Folio": workflow.Subject, + "Remetente": undefined, + "Senders": workflow.Sender, + "SerialNumber": element.serialNumber, + "Status": workflow.Status, + "WorkflowName": element.workflowDisplayName } - } - }); - } - if (synchro.connected === false) { - this.platform.ready().then(() => { - this.sqliteservice.getDespachosProcess('Tarefa de Despacho').then((process: any[]) => { - var listtopresent = []; - process.forEach(element => { - var workflow = JSON.parse(element.workflowInstanceDataFields); - let task = { - "CreateDate": element.taskStartDate, - "DocId": workflow.DispatchDocID, - "DocumentURL": undefined, - "DocumentsQty": element.totalDocuments, - "FolderID": workflow.FolderID, - "Folio": workflow.Subject, - "Remetente": undefined, - "Senders": workflow.Sender, - "SerialNumber": element.serialNumber, - "Status": workflow.Status, - "WorkflowName": element.workflowDisplayName - } + listtopresent.push(task); - listtopresent.push(task); + }); - }); + this.listToPresent = listtopresent; + console.log('Tarefas de despach', this.listToPresent) - this.listToPresent = listtopresent; - - }) }) - } + }) } get skeletonLoader(): boolean { diff --git a/src/app/pages/gabinete-digital/diplomas-assinar/diplomas-assinar.page.ts b/src/app/pages/gabinete-digital/diplomas-assinar/diplomas-assinar.page.ts index af0a19575..690222b2a 100644 --- a/src/app/pages/gabinete-digital/diplomas-assinar/diplomas-assinar.page.ts +++ b/src/app/pages/gabinete-digital/diplomas-assinar/diplomas-assinar.page.ts @@ -80,7 +80,7 @@ export class DiplomasAssinarPage implements OnInit { this.diplomasList = []; let diplomasAssinar = diplomas.reverse().filter(data => data.activityInstanceName == "Assinar Diploma"); - diplomasAssinar = this.sortService.sortArrayByDate(diplomasAssinar); + diplomasAssinar = this.sortService.sortArrayISODate(diplomasAssinar); diplomasAssinar.forEach(element => { let task: customTask = this.customTaskPipe.transform(element) this.diplomasList.push(task); diff --git a/src/app/pages/gabinete-digital/diplomas/diploma/diploma.page.ts b/src/app/pages/gabinete-digital/diplomas/diploma/diploma.page.ts index cc62c2de5..ae310da3d 100644 --- a/src/app/pages/gabinete-digital/diplomas/diploma/diploma.page.ts +++ b/src/app/pages/gabinete-digital/diplomas/diploma/diploma.page.ts @@ -3,7 +3,7 @@ import { AnimationController, ModalController, PopoverController } from '@ionic/ import { AddNotePage } from 'src/app/modals/add-note/add-note.page'; import { ProcessesService } from 'src/app/services/processes.service'; import { OptsExpedientePage } from 'src/app/shared/popover/opts-expediente/opts-expediente.page'; -import { momentG } from 'src/plugin/momentG'; +import { momentG } from 'src/plugin/momentG'; import { InAppBrowser } from '@ionic-native/in-app-browser/ngx'; import { ActivatedRoute, NavigationExtras, Router } from '@angular/router'; @@ -14,7 +14,7 @@ import { Location } from '@angular/common'; import { ViewDocumentPage } from 'src/app/modals/view-document/view-document.page'; import { SqliteService } from 'src/app/services/sqlite.service'; -import { synchro } from 'src/app/services/socket/synchro.service'; +import { BackgroundService } from 'src/app/services/background.service'; @Component({ selector: 'app-diploma', @@ -27,13 +27,13 @@ export class DiplomaPage implements OnInit { days = ["Domingo", "Segunda-feira", "Terça-feira", "Quarta-feira", "Quinta-feira", "Sexta-feira", "Sábado"]; serialNumber: string; - caller:string; + caller: string; profile: string; task: any fulltask: any intervenientes: any; cc: any = []; - attachments:any; + attachments: any; customDate: any constructor( @@ -46,15 +46,16 @@ export class DiplomaPage implements OnInit { private animationController: AnimationController, private toastService: ToastService, private location: Location, - private sqliteservice: SqliteService + private sqliteservice: SqliteService, + private backgroundservice: BackgroundService ) { this.activatedRoute.paramMap.subscribe(params => { // console.log(params["params"]); - if(params["params"].SerialNumber) { + if (params["params"].SerialNumber) { this.serialNumber = params["params"].SerialNumber; } - if(params["params"].caller) { + if (params["params"].caller) { this.caller = params["params"].caller; } @@ -64,7 +65,10 @@ export class DiplomaPage implements OnInit { ngOnInit() { this.profile = "mdgpr"; - this.getFromDb(); + this.LoadTaskDetail(this.serialNumber); + this.backgroundservice.registerBackService('Online', () => { + this.LoadTaskDetail(this.serialNumber); + }); } goBack() { @@ -104,7 +108,7 @@ export class DiplomaPage implements OnInit { serialNumber: this.serialNumber, task: this.task, fulltask: this.fulltask, - taskAction:taskAction, + taskAction: taskAction, showEnviarPendentes: false }, translucent: true @@ -118,7 +122,7 @@ export class DiplomaPage implements OnInit { "SerialNumber": res.serialNumber, "Folio": res.workflowInstanceDataFields.Subject, "Senders": res.originator.email, - "CreateDate": momentG(new Date(res.taskStartDate),'yyyy-MM-dd HH:mm:ss'), + "CreateDate": momentG(new Date(res.taskStartDate), 'yyyy-MM-dd HH:mm:ss'), "DocumentURL": res.workflowInstanceDataFields.ViewerRequest, "Remetente": res.workflowInstanceDataFields.Sender, "Note": res.workflowInstanceDataFields.TaskMessage || res.workflowInstanceDataFields.Note, @@ -133,94 +137,90 @@ export class DiplomaPage implements OnInit { this.sqliteservice.updateProcess(res) let thedate = new Date(this.task.CreateDate); - this.customDate = this.days[thedate.getDay()]+ ", " + thedate.getDate() +" de " + ( this.months[thedate.getMonth()]); + this.customDate = this.days[thedate.getDay()] + ", " + thedate.getDate() + " de " + (this.months[thedate.getMonth()]); - this.processes.GetTaskParticipants(this.task.FolderId).subscribe(users=>{ + this.processes.GetTaskParticipants(this.task.FolderId).subscribe(users => { this.sqliteservice.updateProcessInterveners(JSON.stringify(this.serialNumber), JSON.stringify(users)).then(() => { console.log('internen diploma ') }) - this.intervenientes = users.filter(user=>{ + this.intervenientes = users.filter(user => { return user.Type == 'I'; }); - this.cc = users.filter(user=>{ + this.cc = users.filter(user => { return user.Type == 'CC'; }); }); this.getDocumentDetails(this.task.FolderId, '361'); - }, (error)=>{ - try { - this.goBack() - } catch (e) { - window.history.back(); - } finally { - if(error.status == 0) { - this.toastService.badRequest('Não é possível visualizar este processo no modo offline') - } else { - this.toastService.badRequest('Processo não encontrado') + }, (error) => { + if (error.status == 0) { + this.getFromDb(); + } else { + try { + this.goBack() + } catch (e) { + window.history.back(); } + this.toastService.badRequest('Processo não encontrado') } }); } getFromDb() { - if(synchro.connected === true) { - this.LoadTaskDetail(this.serialNumber); - } else { - this.sqliteservice.getProcessById(this.serialNumber).then((process) => { - this.task = { - "SerialNumber": process[0].serialNumber, - "Folio": JSON.parse(process[0].workflowInstanceDataFields).Subject, - "Senders": JSON.parse(process[0].originator).email, - "CreateDate": momentG(new Date(process[0].taskStartDate),'yyyy-MM-dd HH:mm:ss'), - "DocumentURL": JSON.parse(process[0].workflowInstanceDataFields).ViewerRequest, - "Remetente": JSON.parse(process[0].workflowInstanceDataFields).Sender, - "Note": JSON.parse(process[0].workflowInstanceDataFields).TaskMessage || JSON.parse(process[0].workflowInstanceDataFields).Note, - "FolderId": JSON.parse(process[0].workflowInstanceDataFields).FolderID, - "FsId": '361', - "DocId": JSON.parse(process[0].workflowInstanceDataFields).DispatchDocId, - "WorkflowName": process[0].workflowDisplayName, - "DeadlineType": JSON.parse(process[0].workflowInstanceDataFields).DeadlineType, - "activityInstanceName": process[0].activityInstanceName, - } + this.sqliteservice.getProcessById(this.serialNumber).then((process) => { - let fulltak = { - Documents: JSON.parse(process[0].Documents), - actions: JSON.parse(process[0].actions), - activityInstanceName: process[0].activityInstanceName, - formURL: process[0].formURL, - originator: JSON.parse(process[0].originator), - serialNumber: process[0].serialNumber, - taskStartDate: process[0].taskStartDate, - totalDocuments: process[0].totalDocuments, - workflowDisplayName: process[0].workflowDisplayName, - workflowID: process[0].workflowID, - workflowInstanceDataFields: JSON.parse(process[0].workflowInstanceDataFields), - workflowInstanceFolio: process[0].workflowInstanceFolio, - workflowInstanceID: process[0].workflowInstanceID, - workflowName: process[0].workflowName - } - this.fulltask = fulltak + this.task = { + "SerialNumber": process[0].serialNumber, + "Folio": JSON.parse(process[0].workflowInstanceDataFields).Subject, + "Senders": JSON.parse(process[0].originator).email, + "CreateDate": momentG(new Date(process[0].taskStartDate), 'yyyy-MM-dd HH:mm:ss'), + "DocumentURL": JSON.parse(process[0].workflowInstanceDataFields).ViewerRequest, + "Remetente": JSON.parse(process[0].workflowInstanceDataFields).Sender, + "Note": JSON.parse(process[0].workflowInstanceDataFields).TaskMessage || JSON.parse(process[0].workflowInstanceDataFields).Note, + "FolderId": JSON.parse(process[0].workflowInstanceDataFields).FolderID, + "FsId": '361', + "DocId": JSON.parse(process[0].workflowInstanceDataFields).DispatchDocId, + "WorkflowName": process[0].workflowDisplayName, + "DeadlineType": JSON.parse(process[0].workflowInstanceDataFields).DeadlineType, + "activityInstanceName": process[0].activityInstanceName, + } - let thedate = new Date(this.task.CreateDate); - this.customDate = this.days[thedate.getDay()]+ ", " + thedate.getDate() +" de " + ( this.months[thedate.getMonth()]); + let fulltak = { + Documents: JSON.parse(process[0].Documents), + actions: JSON.parse(process[0].actions), + activityInstanceName: process[0].activityInstanceName, + formURL: process[0].formURL, + originator: JSON.parse(process[0].originator), + serialNumber: process[0].serialNumber, + taskStartDate: process[0].taskStartDate, + totalDocuments: process[0].totalDocuments, + workflowDisplayName: process[0].workflowDisplayName, + workflowID: process[0].workflowID, + workflowInstanceDataFields: JSON.parse(process[0].workflowInstanceDataFields), + workflowInstanceFolio: process[0].workflowInstanceFolio, + workflowInstanceID: process[0].workflowInstanceID, + workflowName: process[0].workflowName + } + this.fulltask = fulltak - this.intervenientes = JSON.parse(process[0].interveners).filter(user=>{ + let thedate = new Date(this.task.CreateDate); + this.customDate = this.days[thedate.getDay()] + ", " + thedate.getDate() + " de " + (this.months[thedate.getMonth()]); + + this.intervenientes = JSON.parse(process[0].interveners).filter(user => { return user.Type == 'I'; }); - this.cc = JSON.parse(process[0].interveners).filter(user=>{ + this.cc = JSON.parse(process[0].interveners).filter(user => { return user.Type == 'CC'; }); this.attachments = JSON.parse(process[0].Documents) - }) - } + }) } - async viewDocument(DocId:string, Document) { + async viewDocument(DocId: string, Document) { const modal = await this.modalController.create({ component: ViewDocumentPage, @@ -243,15 +243,15 @@ export class DiplomaPage implements OnInit { } - getDocumentDetails(forlderId:string, applicationId:string) { - this.processes.GetDocumentDetails(forlderId,applicationId).subscribe(res=>{ + getDocumentDetails(forlderId: string, applicationId: string) { + this.processes.GetDocumentDetails(forlderId, applicationId).subscribe(res => { this.attachments = res.Documents; console.log(res['Documents']); console.log(this.attachments); }) } - async askSignature(note:string, documents:any){ + async askSignature(note: string, documents: any) { let body = { "serialNumber": this.serialNumber, "action": "Aprovar", @@ -259,7 +259,7 @@ export class DiplomaPage implements OnInit { "dataFields": { "ReviewUserComment": note, }, - "AttachmentList" :documents, + "AttachmentList": documents, } const loader = this.toastService.loading() @@ -267,7 +267,7 @@ export class DiplomaPage implements OnInit { try { await this.processes.CompleteTask(body).toPromise() - this.toastService.successMessage(false, ()=>{ + this.toastService.successMessage(false, () => { this.close(); }) @@ -279,7 +279,7 @@ export class DiplomaPage implements OnInit { } } - async askToChange(note:string, documents:any){ + async askToChange(note: string, documents: any) { let body = { "serialNumber": this.serialNumber, "action": "Retificar", @@ -287,7 +287,7 @@ export class DiplomaPage implements OnInit { "dataFields": { "ReviewUserComment": note, }, - "AttachmentList" :documents, + "AttachmentList": documents, } const loader = this.toastService.loading() @@ -303,7 +303,7 @@ export class DiplomaPage implements OnInit { } - async finish(note:string, documents:any){ + async finish(note: string, documents: any) { let body = { "serialNumber": this.serialNumber, @@ -312,7 +312,7 @@ export class DiplomaPage implements OnInit { "dataFields": { "ReviewUserComment": note, }, - "AttachmentList" :documents, + "AttachmentList": documents, } const loader = this.toastService.loading() @@ -333,16 +333,16 @@ export class DiplomaPage implements OnInit { return new Date(e).toDateString() } - async openAddNoteModal(actionName:string) { + async openAddNoteModal(actionName: string) { let classs; - if( window.innerWidth <= 800){ + if (window.innerWidth <= 800) { classs = 'modal modal-desktop' - } else { + } else { classs = 'add-note-modal' } const modal = await this.modalController.create({ component: AddNotePage, - componentProps:{ + componentProps: { }, cssClass: classs, backdropDismiss: true @@ -351,7 +351,7 @@ export class DiplomaPage implements OnInit { await modal.present(); modal.onDidDismiss().then(async (res) => { - if(res.data){ + if (res.data) { const DocumentToSave = res.data.documents.map((e) => { @@ -367,15 +367,15 @@ export class DiplomaPage implements OnInit { } - if(actionName == 'Solicitar assinatura'){ + if (actionName == 'Solicitar assinatura') { await this.askSignature(res.data.note, docs); this.goBack(); } - else if(actionName == 'Solicitar alteração'){ + else if (actionName == 'Solicitar alteração') { await this.askToChange(res.data.note, docs); this.goBack(); } - else if(actionName == 'Concluir diploma'){ + else if (actionName == 'Concluir diploma') { await this.finish(res.data.note, docs); this.goBack(); } @@ -385,9 +385,9 @@ export class DiplomaPage implements OnInit { async openBookMeetingModal(task: any) { let classs; - if( window.innerWidth <= 800){ + if (window.innerWidth <= 800) { classs = 'book-meeting-modal modal modal-desktop' - } else { + } else { classs = 'modal modal-desktop showAsideOptions' } const modal = await this.modalController.create({ @@ -402,7 +402,7 @@ export class DiplomaPage implements OnInit { modal.onDidDismiss(); } - close(){ + close() { this.modalController.dismiss(); } diff --git a/src/app/pages/gabinete-digital/diplomas/diplomas.page.ts b/src/app/pages/gabinete-digital/diplomas/diplomas.page.ts index ff6849091..804d5554c 100644 --- a/src/app/pages/gabinete-digital/diplomas/diplomas.page.ts +++ b/src/app/pages/gabinete-digital/diplomas/diplomas.page.ts @@ -4,7 +4,7 @@ import { DailyWorkTask } from '../../../models/dailyworktask.model'; import { ProcessesService } from 'src/app/services/processes.service'; import { SqliteService } from 'src/app/services/sqlite.service'; -import { synchro } from 'src/app/services/socket/synchro.service'; +import { BackgroundService } from 'src/app/services/background.service'; import { SortService } from 'src/app/services/functions/sort.service'; @Component({ @@ -29,11 +29,10 @@ export class DiplomasPage implements OnInit, OnDestroy { private router: Router, private activatedRoute: ActivatedRoute, private sqliteservice: SqliteService, + private backgroundservice: BackgroundService, private sortService: SortService, ) { - this.diplomasList = []; //Inicializar segment - this.segment = 'validar'; this.activatedRoute.queryParams.subscribe(params => { if (params['validar'] == 'true') { @@ -56,7 +55,24 @@ export class DiplomasPage implements OnInit, OnDestroy { } }); - this.getFromDb() + const location = window.location + const pathname = location.pathname + location.search + + this.LoadList() + + this.router.events.forEach((event) => { + if (event instanceof NavigationStart && event.url.startsWith(pathname)) { + if (window.location.pathname.split('/').length >= 4 && window.location.pathname.startsWith('/home/gabinete-digital')) { + this.refreshing() + } else { + this.LoadList() + } + } + }); + + this.backgroundservice.registerBackService('Online', () => { + this.LoadList(); + }); } @@ -154,78 +170,68 @@ export class DiplomasPage implements OnInit, OnDestroy { async LoadList() { - this.skeletonLoader = true + this.processes.GetTasksList("Despacho do Presidente da República", false).subscribe(async res => { - let diplomas = await this.processes.GetTasksList("Despacho do Presidente da República", false).toPromise(); + this.skeletonLoader = true - this.skeletonLoader = false - this.showLoader = false; + let diplomas = await this.processes.GetTasksList("Despacho do Presidente da República", false).toPromise(); + + this.skeletonLoader = false + this.showLoader = false; - let diplomasValidar = diplomas.filter(data => data.activityInstanceName == "Revisar Diploma"); - let diplomasList = []; - diplomasValidar.forEach(async element => { + let diplomasValidar = diplomas.filter(data => data.activityInstanceName == "Revisar Diploma"); + let diplomasList = []; + diplomasValidar.forEach(async element => { - let task = this.pipeTask(element) - diplomasList.push(task); + let task = this.pipeTask(element) + diplomasList.push(task); - }); - this.diplomasList = this.sortService.sortArrayByDate(diplomasList).reverse(); + }); + this.diplomasList = this.sortService.sortArrayByDate(diplomasList.reverse()); - let diplomasAssinados = diplomas.reverse().filter(data => data.activityInstanceName == "Diploma Assinado"); - let diplomasAssinadoList = [] - diplomasAssinados.forEach(async element => { + let diplomasAssinados = diplomas.reverse().filter(data => data.activityInstanceName == "Diploma Assinado"); + let diplomasAssinadoList = [] + diplomasAssinados.forEach(async element => { - let task = this.pipeTask(element) - diplomasAssinadoList.push(task); - }); - console.log('diplomasAssinados', diplomasAssinados) - this.diplomasAssinadoList = this.sortService.sortArrayByDate(diplomasAssinadoList).reverse(); + let task = this.pipeTask(element) + diplomasAssinadoList.push(task); + }); + console.log('diplomasAssinados', diplomasAssinados) + this.diplomasAssinadoList = this.sortService.sortArrayByDate(diplomasAssinadoList).reverse(); + + }, (error) => { + this.getFromDb() + }) } getFromDb() { - if (synchro.connected === true) { - const location = window.location - const pathname = location.pathname + location.search - this.LoadList() + this.sqliteservice.getprocessByworkflow("Despacho do Presidente da República").then((process: any[]) => { - this.router.events.forEach((event) => { - if (event instanceof NavigationStart && event.url.startsWith(pathname)) { - if (window.location.pathname.split('/').length >= 4 && window.location.pathname.startsWith('/home/gabinete-digital')) { - this.refreshing() - } else { - this.LoadList() - } - } - }); - } else { - this.sqliteservice.getprocessByworkflow("Despacho do Presidente da República").then((process: any[]) => { + let diplomasValidar = process.filter(data => data.activityInstanceName == "Revisar Diploma"); + let diplomasList = []; + diplomasValidar.forEach(async element => { - let diplomasValidar = process.filter(data => data.activityInstanceName == "Revisar Diploma"); - let diplomasList = []; - diplomasValidar.forEach(async element => { - - let task = this.pipeTaskOffline(element) - diplomasList.push(task); + let task = this.pipeTaskOffline(element) + diplomasList.push(task); }); - this.diplomasList = this.sortService.sortArrayByDate(diplomasList).reverse(); + this.diplomasList = this.sortService.sortArrayISODate(diplomasList).reverse(); - let diplomasAssinados = process.reverse().filter(data => data.activityInstanceName == "Diploma Assinado"); - let diplomasAssinadoList = [] - diplomasAssinados.forEach(async element => { + let diplomasAssinados = process.reverse().filter(data => data.activityInstanceName == "Diploma Assinado"); + let diplomasAssinadoList = [] + diplomasAssinados.forEach(async element => { let task = this.pipeTaskOffline(element) diplomasAssinadoList.push(task); }); console.log('diplomasAssinados', diplomasAssinados) - this.diplomasAssinadoList = this.sortService.sortArrayByDate(diplomasAssinadoList).reverse(); + this.diplomasAssinadoList = this.sortService.sortArrayISODate(diplomasAssinadoList).reverse(); - }) - } + }) } pipeTask(element) { diff --git a/src/app/pages/gabinete-digital/event-list/approve-event/approve-event.page.ts b/src/app/pages/gabinete-digital/event-list/approve-event/approve-event.page.ts index a5a0ae399..3d0f93cf1 100644 --- a/src/app/pages/gabinete-digital/event-list/approve-event/approve-event.page.ts +++ b/src/app/pages/gabinete-digital/event-list/approve-event/approve-event.page.ts @@ -14,7 +14,7 @@ import { Location } from '@angular/common'; import { ViewDocumentPage } from 'src/app/modals/view-document/view-document.page'; import { SqliteService } from '../../../../services/sqlite.service'; -import { synchro } from '../../../../services/socket/synchro.service'; +import { BackgroundService } from '../../../../services/background.service'; import { Platform } from '@ionic/angular'; @Component({ @@ -33,18 +33,16 @@ export class ApproveEventPage implements OnInit { 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"]; - serialNumber:string; - caller:string; - attachments:any; + serialNumber: string; + caller: string; + attachments: any; - @Input() InstanceId:string; + @Input() InstanceId: string; @Output() approveEventDismiss = new EventEmitter(); @Output() closeEventToApprove = new EventEmitter(); @Output() AproveEventEditEvent = new EventEmitter(); - synch = synchro; - constructor( private router: Router, private activatedRoute: ActivatedRoute, @@ -59,7 +57,8 @@ export class ApproveEventPage implements OnInit { private toastService: ToastService, private location: Location, private sqliteservice: SqliteService, - private platform: Platform + private platform: Platform, + private backgroundservice: BackgroundService ) { this.activatedRoute.paramMap.subscribe(params => { // console.log(params["params"]); @@ -81,7 +80,11 @@ export class ApproveEventPage implements OnInit { ngOnInit() { console.log(this.serialNumber); console.log(this.caller); - this.getProcessFromDB(); + + this.getTask(); + this.backgroundservice.registerBackService('Online', () => { + this.getTask(); + }); } @@ -102,91 +105,91 @@ export class ApproveEventPage implements OnInit { addProcessToDB(data) { this.platform.ready().then(() => { - this.sqliteservice.updateProcess(data); + this.sqliteservice.updateProcess(data); }); } getProcessFromDB() { - if (synchro.connected === true) { - this.getTask(); - } + this.platform.ready().then(() => { - synchro.registerCallback('Offline', () => { - this.platform.ready().then(() => { + this.sqliteservice.getProcessById(this.serialNumber).then((process) => { + console.log('event aprove serial', process) - this.sqliteservice.getProcessById(this.serialNumber).then((process) => { - console.log('event aprove serial', process) + var doc; + var action = []; + var origi = []; + var wordafi = {}; + if (process[0].Documents === "null" || process[0].Documents === "undefined") { + doc = [] + } else { + doc = JSON.parse(process[0].Documents) + } - var doc; - var action = []; - var origi = []; - var wordafi = {}; - if (process[0].Documents === "null" || process[0].Documents === "undefined") { - doc = [] - } else { - doc = JSON.parse(process[0].Documents) - } + if (process[0].actions === "null" || process[0].actions === "undefined") { + action = [] + } else { + action = JSON.parse(process[0].Documents) + } - if (process[0].actions === "null" || process[0].actions === "undefined") { - action = [] - } else { - action = JSON.parse(process[0].Documents) - } + if (process[0].originator === "null" || process[0].originator === "undefined") { + origi = [] + } else { + origi = JSON.parse(process[0].Documents) + } + if (process[0].workflowInstanceDataFields === "null" || process[0].workflowInstanceDataFields === "undefined") { + wordafi = [] + } else { + wordafi = JSON.parse(process[0].workflowInstanceDataFields) + } - if (process[0].originator === "null" || process[0].originator === "undefined") { - origi = [] - } else { - origi = JSON.parse(process[0].Documents) - } - if (process[0].workflowInstanceDataFields === "null" || process[0].workflowInstanceDataFields === "undefined") { - wordafi = [] - } else { - wordafi = JSON.parse(process[0].workflowInstanceDataFields) - } + let task = { + "Documents": doc, + "actions": action, + "activityInstanceName": process[0].activityInstanceName, + "formURL": process[0].formURL, + "originator": origi, + "serialNumber": process[0].serialNumber, + "taskStartDate": process[0].taskStartDate, + "totalDocuments": process[0].totalDocuments, + "workflowDisplayName": process[0].workflowDisplayName, + "workflowID": process[0].workflowID, + "workflowInstanceDataFields": wordafi, + "workflowInstanceFolio": process[0].workflowInstanceFolio, + "workflowInstanceID": process[0].workflowInstanceID, + "workflowName": process[0].workflowInstanceID - let task = { - "Documents": doc, - "actions": action, - "activityInstanceName": process[0].activityInstanceName, - "formURL": process[0].formURL, - "originator": origi, - "serialNumber": process[0].serialNumber, - "taskStartDate": process[0].taskStartDate, - "totalDocuments": process[0].totalDocuments, - "workflowDisplayName": process[0].workflowDisplayName, - "workflowID": process[0].workflowID, - "workflowInstanceDataFields": wordafi, - "workflowInstanceFolio": process[0].workflowInstanceFolio, - "workflowInstanceID": process[0].workflowInstanceID, - "workflowName": process[0].workflowInstanceID + } - } + this.loadedEvent = task + console.log('offline event', this.loadedEvent); - this.loadedEvent = task - console.log('offline event',this.loadedEvent); + this.today = new Date(this.loadedEvent.workflowInstanceDataFields.StartDate); - this.today = new Date(this.loadedEvent.workflowInstanceDataFields.StartDate); + this.customDate = this.days[this.today.getDay()] + ", " + this.today.getDate() + " de " + (this.months[this.today.getMonth()]); - this.customDate = this.days[this.today.getDay()] + ", " + this.today.getDate() + " de " + (this.months[this.today.getMonth()]); + let instanceId = this.loadedEvent.workflowInstanceDataFields.InstanceId; + this.loadedAttachments = this.loadedEvent.Documents; + console.log('Attatara', this.loadedAttachments) - let instanceId = this.loadedEvent.workflowInstanceDataFields.InstanceId; - this.loadedAttachments = this.loadedEvent.Documents; - console.log('Attatara', this.loadedAttachments) - - }) }) - console.log('Offlineee') }) + console.log('Offlineee') } async getTask() { - this.loadedEvent = await this.processes.GetTask(this.serialNumber).toPromise(); - console.log(this.loadedEvent); + this.processes.GetTask(this.serialNumber).subscribe(async res => { - this.today = new Date(this.loadedEvent.workflowInstanceDataFields.StartDate); + this.loadedEvent = await this.processes.GetTask(this.serialNumber).toPromise(); + console.log(this.loadedEvent); - this.customDate = this.days[this.today.getDay()]+ ", " + this.today.getDate() +" de " + ( this.months[this.today.getMonth()]); + this.today = new Date(this.loadedEvent.workflowInstanceDataFields.StartDate); + + this.customDate = this.days[this.today.getDay()] + ", " + this.today.getDate() + " de " + (this.months[this.today.getMonth()]); + + }, (error) => { + this.getProcessFromDB(); + }) } async approveTask(serialNumber: string) { @@ -284,7 +287,7 @@ export class ApproveEventPage implements OnInit { } } - async viewDocument(DocId:string, Document) { + async viewDocument(DocId: string, Document) { const modal = await this.modalController.create({ component: ViewDocumentPage, diff --git a/src/app/pages/gabinete-digital/event-list/event-list.page.ts b/src/app/pages/gabinete-digital/event-list/event-list.page.ts index 884933d8e..765450313 100644 --- a/src/app/pages/gabinete-digital/event-list/event-list.page.ts +++ b/src/app/pages/gabinete-digital/event-list/event-list.page.ts @@ -9,7 +9,7 @@ import { EventoAprovacaoStore } from 'src/app/store/eventoaprovacao-store.servic import { Location } from '@angular/common'; import { SqliteService } from '../../../services/sqlite.service'; -import { synchro } from '../../../services/socket/synchro.service'; +import { BackgroundService } from '../../../services/background.service'; import { Platform } from '@ionic/angular'; import { SortService } from 'src/app/services/functions/sort.service'; @@ -21,40 +21,56 @@ import { SortService } from 'src/app/services/functions/sort.service'; export class EventListPage implements OnInit { // [desktop] event list to approve - profile:string; - segment:string; + profile: string; + segment: string; showLoader: boolean; eventsPRList: any = [] eventsMDGPRList: any = [] eventPerson: EventPerson; eventBody: EventBody; categories: string[]; - serialnumber:string; + serialnumber: string; skeletonLoader = true eventaprovacaostore = EventoAprovacaoStore; - synch = synchro; - - constructor( - private processes:ProcessesService, + private processes: ProcessesService, private modalController: ModalController, private router: Router, private location: Location, private sqliteservice: SqliteService, private platform: Platform, private sortService: SortService, + private backgroundservice: BackgroundService ) { } ngOnInit() { - this.segment = 'MDGPR'; - this.getEventToAproveFromDB(); + this.segment = 'MDGPR'; + + const location = window.location + const pathname = location.pathname + location.search + + this.LoadToApproveEvents() + + this.router.events.forEach((event) => { + if (event instanceof NavigationStart && event.url.startsWith(pathname)) { + if (window.location.pathname.split('/').length >= 4 && window.location.pathname.startsWith('/home/gabinete-digital')) { + this.refreshing() + } else { + this.LoadToApproveEvents() + } + } + }); + + this.backgroundservice.registerBackService('Online', () => { + this.LoadToApproveEvents(); + }); window.onresize = (event) => { // if not mobile remove all component - if( window.innerWidth <= 800){ + if (window.innerWidth <= 800) { this.modalController.dismiss(); } }; @@ -63,73 +79,58 @@ export class EventListPage implements OnInit { getEventToAproveFromDB() { - if( synchro.connected === true) { - const location = window.location - const pathname = location.pathname + location.search + this.platform.ready().then(() => { - this.LoadToApproveEvents() - - this.router.events.forEach((event) => { - if (event instanceof NavigationStart && event.url.startsWith(pathname)) { - if(window.location.pathname.split('/').length >= 4 && window.location.pathname.startsWith('/home/gabinete-digital')) { - this.refreshing() - } else { - this.LoadToApproveEvents() - } - } - }); - } - - synchro.registerCallback('Offline', () => { - this.platform.ready().then(() => { - - this.sqliteservice.getListOfEventAprove('Agenda Oficial MDGPR','Agenda Pessoal MDGPR' ).then((event: any[]) => { - this.eventsMDGPRList = event - console.log("All evento to aprove from db ", event) - }) - - this.sqliteservice.getListOfEventAprove('Agenda Oficial PR','Agenda Pessoal PR' ).then((event: any[]) => { - this.eventsPRList = event - console.log("All evento to aprove from db ", event) - }) + this.sqliteservice.getListOfEventAprove('Agenda Oficial MDGPR', 'Agenda Pessoal MDGPR').then((event: any[]) => { + this.eventsMDGPRList = this.sortService.sortArrayByDate(event).reverse() + + console.log("All evento to aprove from db ", event) + }) + + this.sqliteservice.getListOfEventAprove('Agenda Oficial PR', 'Agenda Pessoal PR').then((event: any[]) => { + this.eventsPRList = this.sortService.sortArrayByDate(event).reverse() + console.log("All evento to aprove from db ", event) }) - console.log('Offlineee') }) + console.log('Offlineee') } segmentChanged(ev: any) { this.LoadToApproveEvents(); } - async LoadToApproveEvents(){ - this.showLoader = true; - this.skeletonLoader = true + async LoadToApproveEvents() { + this.processes.GetTasksList('Agenda Oficial MDGPR', false).subscribe(async res => { + this.showLoader = true; + this.skeletonLoader = true - console.log(this.segment); - if(this.segment == 'MDGPR'){ - let mdEventsOficial = await this.processes.GetTasksList('Agenda Oficial MDGPR', false).toPromise(); - let mdEventsPessoal = await this.processes.GetTasksList('Agenda Pessoal MDGPR', false).toPromise(); - this.eventsMDGPRList = mdEventsOficial.concat(mdEventsPessoal); - this.eventaprovacaostore.resetmd(this.sortService.sortArrayByDate(this.eventsMDGPRList).reverse()); - } - else if(this.segment == 'PR'){ - let prEventsOficial = await this.processes.GetTasksList('Agenda Oficial PR', false).toPromise(); - let prEventsPessoal = await this.processes.GetTasksList('Agenda Pessoal PR', false).toPromise(); - this.eventsPRList = prEventsOficial.concat(prEventsPessoal); - this.eventaprovacaostore.resetpr(this.sortService.sortArrayByDate(this.eventsPRList).reverse()); - } - this.showLoader = false; - this.skeletonLoader = false + console.log(this.segment); + if (this.segment == 'MDGPR') { + let mdEventsOficial = await this.processes.GetTasksList('Agenda Oficial MDGPR', false).toPromise(); + let mdEventsPessoal = await this.processes.GetTasksList('Agenda Pessoal MDGPR', false).toPromise(); + this.eventsMDGPRList = mdEventsOficial.concat(mdEventsPessoal); + this.eventsMDGPRList = this.sortService.sortArrayByDate(this.eventsMDGPRList).reverse() + this.eventaprovacaostore.resetmd(this.sortService.sortArrayByDate(this.eventsMDGPRList).reverse()); + } + else if (this.segment == 'PR') { + let prEventsOficial = await this.processes.GetTasksList('Agenda Oficial PR', false).toPromise(); + let prEventsPessoal = await this.processes.GetTasksList('Agenda Pessoal PR', false).toPromise(); + this.eventsPRList = prEventsOficial.concat(prEventsPessoal); + this.eventsPRList = this.sortService.sortArrayByDate(this.eventsPRList).reverse(); + this.eventaprovacaostore.resetpr(this.sortService.sortArrayByDate(this.eventsPRList).reverse()); + } + this.showLoader = false; + this.skeletonLoader = false + + }, (error) => { + this.getEventToAproveFromDB(); + }) } - getEventToaproveFromDB() { - - } - - async openApproveModal(eventSerialNumber, event){ + async openApproveModal(eventSerialNumber, event) { const modal = await this.modalController.create({ component: ApproveEventModalPage, - componentProps:{ + componentProps: { serialNumber: eventSerialNumber, }, cssClass: 'event-list cal-modal modal modal-desktop', @@ -138,7 +139,7 @@ export class EventListPage implements OnInit { await modal.present(); } - goToEventToApproveDetail(serialNumber:string){ + goToEventToApproveDetail(serialNumber: string) { console.log(serialNumber); /* let navigationExtras: NavigationExtras = { @@ -147,11 +148,11 @@ export class EventListPage implements OnInit { } }; */ - if(this.router.url == '/home/agenda/event-list'){ - this.router.navigate(['/home/agenda/event-list/approve-event',serialNumber, 'agenda']) + if (this.router.url == '/home/agenda/event-list') { + this.router.navigate(['/home/agenda/event-list/approve-event', serialNumber, 'agenda']) } - else if(this.router.url == '/home/gabinete-digital/event-list'){ - this.router.navigate(['/home/gabinete-digital/event-list/approve-event',serialNumber, 'gabinete-digital']) + else if (this.router.url == '/home/gabinete-digital/event-list') { + this.router.navigate(['/home/gabinete-digital/event-list/approve-event', serialNumber, 'gabinete-digital']) } //this.router.navigate(['/home/gabinete-digital/event-list/approve-event'], navigationExtras) @@ -171,7 +172,7 @@ export class EventListPage implements OnInit { }, 1000); } - close(){ + close() { this.modalController.dismiss(null); } goBack() { diff --git a/src/app/pages/gabinete-digital/expediente/expedient-task-modal/expedient-task-modal.page.html b/src/app/pages/gabinete-digital/expediente/expedient-task-modal/expedient-task-modal.page.html index 0f833aa42..3a830460c 100644 --- a/src/app/pages/gabinete-digital/expediente/expedient-task-modal/expedient-task-modal.page.html +++ b/src/app/pages/gabinete-digital/expediente/expedient-task-modal/expedient-task-modal.page.html @@ -28,7 +28,7 @@
-
+
@@ -50,7 +50,7 @@
-
+
{ if (params["params"].SerialNumber) { @@ -88,7 +88,11 @@ export class ExpedienteDetailPage implements OnInit { } ngOnInit() { - this.getFromDB(); + + this.LoadTaskDetail(this.serialNumber); + this.backgroundservice.registerBackService('Online', () => { + this.LoadTaskDetail(this.serialNumber); + }); } @@ -102,44 +106,37 @@ export class ExpedienteDetailPage implements OnInit { getFromDB() { - if(synchro.connected === true) { - this.LoadTaskDetail(this.serialNumber); - } + this.platform.ready().then(() => { + this.onlinecheck = false; + this.sqliteservice.getProcessById(this.serialNumber).then((process) => { + console.log("expedient ditail", process) + var workflow = JSON.parse(process[0].workflowInstanceDataFields); + var origina + if (process[0].originator === "undefined") { + origina = "" + } else { + origina = JSON.parse(process[0].originator) + } - synchro.registerCallback('Offline', () => { - this.platform.ready().then(() => { - this.onlinecheck = false; - this.sqliteservice.getProcessById(this.serialNumber).then((process) => { - console.log("expedient ditail", process) + this.task = { + "SerialNumber": process[0].serialNumber, + "Folio": workflow.Subject, + "Senders": origina.email || process[0].originator, + "CreateDate": momentG(new Date(process[0].taskStartDate), 'yyyy-MM-dd HH:mm:ss'), + "DocumentURL": workflow.ViewerRequest, + "Remetente": workflow.Sender, + "Note": workflow.TaskMessage || workflow.Note, + "FolderId": workflow.FolderID, + "FsId": workflow.FsId, + "DocId": workflow.DocID, + "WorkflowName": process[0].workflowDisplayName, + "Status": workflow.Status, + "DispatchNumber": workflow.DispatchNumber, + "AttachmentsProcessLastInstanceID": workflow.AttachmentsProcessLastInstanceID, + "InstanceID": workflow.InstanceID + } - var workflow = JSON.parse(process[0].workflowInstanceDataFields); - var origina - if (process[0].originator === "undefined") { - origina = "" - } else { - origina = JSON.parse(process[0].originator) - } - - this.task = { - "SerialNumber": process[0].serialNumber, - "Folio": workflow.Subject, - "Senders": origina.email || process[0].originator, - "CreateDate": momentG(new Date(process[0].taskStartDate), 'yyyy-MM-dd HH:mm:ss'), - "DocumentURL": workflow.ViewerRequest, - "Remetente": workflow.Sender, - "Note": workflow.TaskMessage || workflow.Note, - "FolderId": workflow.FolderID, - "FsId": workflow.FsId, - "DocId": workflow.DocID, - "WorkflowName": process[0].workflowDisplayName, - "Status": workflow.Status, - "DispatchNumber": workflow.DispatchNumber, - "AttachmentsProcessLastInstanceID": workflow.AttachmentsProcessLastInstanceID, - "InstanceID": workflow.InstanceID - } - - }) }) }) } @@ -336,17 +333,17 @@ export class ExpedienteDetailPage implements OnInit { console.log('this.task.DocumentURL', this.task.DocumentURL) }, (error) => { - try { - this.toastService.badRequest('Processo não encontrado') - this.goBack() - } catch (e) { - window.history.back(); - } finally { - if (error.status == 0) { - this.toastService.badRequest('Não é possível visualizar este processo no modo offline') - } else { + + if (error.status == 0) { + this.getFromDB(); + } else { + try { this.toastService.badRequest('Processo não encontrado') + this.goBack() + } catch (e) { + window.history.back(); } + this.toastService.badRequest('Processo não encontrado') } }); @@ -358,7 +355,7 @@ export class ExpedienteDetailPage implements OnInit { } - async viewDocument(DocId:string, Document) { + async viewDocument(DocId: string, Document) { // this.expedienteService.viewDocument({ApplicationId:'361', DocId}) diff --git a/src/app/pages/gabinete-digital/expediente/expediente.page.ts b/src/app/pages/gabinete-digital/expediente/expediente.page.ts index 3e6e71234..a2fdf031d 100644 --- a/src/app/pages/gabinete-digital/expediente/expediente.page.ts +++ b/src/app/pages/gabinete-digital/expediente/expediente.page.ts @@ -6,7 +6,7 @@ import { ExpedienteGdStore } from 'src/app/store/expedientegd-store.service'; import { ExpedienteTaskPipe } from 'src/app/pipes/expediente-task.pipe'; import { SqliteService } from 'src/app/services/sqlite.service'; import { Platform } from '@ionic/angular'; -import { synchro } from '../../../services/socket/synchro.service'; +import { BackgroundService } from '../../../services/background.service'; @Component({ selector: 'app-expediente', @@ -28,48 +28,69 @@ export class ExpedientePage implements OnInit { onlinecheck: boolean; listToPresent; - synch = synchro constructor( private processes: ProcessesService, private router: Router, private toastService: ToastService, public platform: Platform, private sqliteservice: SqliteService, + private backgroundservice: BackgroundService ) { } ngOnInit() { - this.getEventsFromLocalDb(); - console.log("segrsgre") + const location = window.location + const pathname = location.pathname + location.search + + this.LoadList() + + this.router.events.forEach((event) => { + if (event instanceof NavigationStart && event.url.startsWith(pathname)) { + if (window.location.pathname.split('/').length >= 4 && window.location.pathname.startsWith('/home/gabinete-digital')) { + this.refreshing() + } else { + this.LoadList() + } + } + }); + + this.backgroundservice.registerBackService('Online', () => { + this.LoadList(); + }); } async LoadList() { - this.skeletonLoader = true - try { - const expediente: object[] = await this.processes.GetTaskListExpediente(false).toPromise() - const result = expediente + this.processes.GetTaskListExpediente(false).subscribe(async res => { + this.skeletonLoader = true - this.taskslist = new Array(); - let res = result.reverse().filter((data: any) => data.workflowInstanceDataFields.Status == "Active"); + try { + const expediente: object[] = await this.processes.GetTaskListExpediente(false).toPromise() + const result = expediente - res.forEach((element: any) => { + this.taskslist = new Array(); + let res = result.reverse().filter((data: any) => data.workflowInstanceDataFields.Status == "Active"); - let task = this.expedienteTaskPipe.transform(element) - this.taskslist.push(task); - this.sqliteservice.addProcess(task); - }); + res.forEach((element: any) => { - this.listToPresent = this.taskslist - console.log('expediente list', this.listToPresent) + let task = this.expedienteTaskPipe.transform(element) + this.taskslist.push(task); + this.sqliteservice.addProcess(task); + }); - } catch (error) { - this.toastService.badRequest('Processo não encontrado') - this.goBack() - } finally { - this.skeletonLoader = false; - } + this.listToPresent = this.taskslist + console.log('expediente list', this.listToPresent) + + } catch (error) { + this.toastService.badRequest('Processo não encontrado') + this.goBack() + } finally { + this.skeletonLoader = false; + } + }, (error) => { + this.getEventsFromLocalDb(); + }) } @@ -121,49 +142,32 @@ export class ExpedientePage implements OnInit { getEventsFromLocalDb() { - if (synchro.connected === true) { - const location = window.location - const pathname = location.pathname + location.search + this.taskslist = new Array(); + this.sqliteservice.getprocessByworkflow("Expediente").then((expediente: any[]) => { + console.log("All expedientes from local,", expediente) - this.LoadList() + expediente.forEach((element) => { - this.router.events.forEach((event) => { - if (event instanceof NavigationStart && event.url.startsWith(pathname)) { - if (window.location.pathname.split('/').length >= 4 && window.location.pathname.startsWith('/home/gabinete-digital')) { - this.refreshing() - } else { - this.LoadList() - } + var workflow = JSON.parse(element.workflowInstanceDataFields); + + let exped = { + "CreateDate": element.taskStartDate, + "DocumentsQty": element.totalDocuments, + "Senders": workflow.Senders, + "SerialNumber": element.serialNumber, + "Status": workflow.Status, + "Subject": workflow.Subject, + "WorkflowName": element.workflowDisplayName, + "activityInstanceName": element.activityInstanceName } + + this.taskslist.push(exped) + }); - } else { - this.taskslist = new Array(); - this.sqliteservice.getprocessByworkflow("Expediente").then((expediente: any[]) => { - console.log("All expedientes from local,", expediente) - expediente.forEach((element) => { + this.listToPresent = this.taskslist - var workflow = JSON.parse(element.workflowInstanceDataFields); - - let exped = { - "CreateDate": element.taskStartDate, - "DocumentsQty": element.totalDocuments, - "Senders": workflow.Senders, - "SerialNumber": element.serialNumber, - "Status": workflow.Status, - "Subject": workflow.Subject, - "WorkflowName": element.workflowDisplayName, - "activityInstanceName": element.activityInstanceName - } - - this.taskslist.push(exped) - - }); - - this.listToPresent = this.taskslist - - }) - } + }) } } diff --git a/src/app/pages/gabinete-digital/gabinete-digital.page.ts b/src/app/pages/gabinete-digital/gabinete-digital.page.ts index 51d0dabe7..346fe3e06 100644 --- a/src/app/pages/gabinete-digital/gabinete-digital.page.ts +++ b/src/app/pages/gabinete-digital/gabinete-digital.page.ts @@ -26,8 +26,8 @@ import { PermissionService } from 'src/app/services/worker/permission.service'; import { SqliteService } from '../../services/sqlite.service'; -import { synchro } from '../../services/socket/synchro.service'; import { Platform } from '@ionic/angular'; +import { BackgroundService } from 'src/app/services/background.service'; @Component({ selector: 'app-gabinete-digital', @@ -109,9 +109,6 @@ export class GabineteDigitalPage implements OnInit, DoCheck { // // pipe - synch = synchro; - - customTaskPipe = new CustomTaskPipe() @ViewChild(ExpedientsPage) expedientesPage: ExpedientsPage; @@ -130,7 +127,8 @@ export class GabineteDigitalPage implements OnInit, DoCheck { private despachoRule: DespachoService, private sqliteservice: SqliteService, private platform: Platform, - private changeProfileService: ChangeProfileService + private changeProfileService: ChangeProfileService, + private backgroundservice: BackgroundService ) { this.loggeduser = authService.ValidatedUser; @@ -178,57 +176,91 @@ export class GabineteDigitalPage implements OnInit, DoCheck { this.segmentVista = "boxview" } - this.getAllProcessFromDB() + const pathname = window.location.pathname + this.router.events.forEach((event) => { + if (event instanceof NavigationEnd && event.url == pathname) { + + this.waitForDomService.selector({ + selector: 'app-gabinete-digital ion-content .aside-wrapper', + callback: () => { + this.checkRoutes(); + this.LoadCounts(); + } + }) + } + }); + + this.hideRefreshButton(); + + this.waitForDomService.selector({ + selector: 'app-gabinete-digital ion-content .aside-wrapper', + callback: () => { + this.loadAllProcesses(); + } + }) + + this.backgroundservice.registerBackService('Online', () => { + this.loadAllProcesses(); + }); } async loadAllProcesses() { - let allProcessesList = await this.processesbackend.GetTasksList("", false).toPromise(); - if (!this.p.userRole(['PR'])) { - allProcessesList = allProcessesList.filter(element => element.activityInstanceName != 'Assinar Diplomas') - } else if (this.p.userRole(['PR'])) { - allProcessesList = allProcessesList.filter(element => element.activityInstanceName != 'Diploma Assinado') - } + this.processesbackend.GetTasksList("", false).subscribe(async res => { - console.log('allProcessesList', allProcessesList); + let allProcessesList = await this.processesbackend.GetTasksList("", false).toPromise(); - this.addProcessToDB(allProcessesList) - this.skeletonLoader = true; - this.allProcessesList = []; - - allProcessesList.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), + if (!this.p.userRole(['PR'])) { + allProcessesList = allProcessesList.filter(element => element.activityInstanceName != 'Assinar Diplomas') + } else if (this.p.userRole(['PR'])) { + allProcessesList = allProcessesList.filter(element => element.activityInstanceName != 'Diploma Assinado') } - this.allProcessesList.push(task); - this.allProcessesList = removeDuplicate(this.allProcessesList) - this.allProcessesList = this.sortArrayISODate(this.allProcessesList).reverse(); + console.log('allProcessesList', allProcessesList); - + this.addProcessToDB(allProcessesList) + this.skeletonLoader = true; - }); + this.allProcessesList = []; + + allProcessesList.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.sortArrayISODate(this.allProcessesList).reverse(); + + + + }); + + }, (error) => { + console.log('gabinete digital offline', error) + this.getAllProcessFromDB(); + }) this.skeletonLoader = false; @@ -254,7 +286,7 @@ export class GabineteDigitalPage implements OnInit, DoCheck { "workflowInstanceID": element.workflowInstanceID, "workflowName": element.workflowName } - + this.sqliteservice.addProcess(process); }); }); @@ -262,65 +294,40 @@ export class GabineteDigitalPage implements OnInit, DoCheck { getAllProcessFromDB() { - if (synchro.connected === true ) { - const pathname = window.location.pathname - this.router.events.forEach((event) => { - if (event instanceof NavigationEnd && event.url == pathname) { - - this.waitForDomService.selector({ - selector: 'app-gabinete-digital ion-content .aside-wrapper', - callback: () => { - this.checkRoutes(); - this.LoadCounts(); - } - }) + this.hideRefreshButton(); + + 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.sortArrayISODate(this.allProcessesList).reverse(); + }); - - this.hideRefreshButton(); - - this.waitForDomService.selector({ - selector: 'app-gabinete-digital ion-content .aside-wrapper', - callback: () => { - this.loadAllProcesses(); - } - }) - } else { - this.hideRefreshButton(); - - 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.sortArrayISODate(this.allProcessesList).reverse(); - - }); - console.log("All process from db ", allprocess) - }) - } + console.log("All process from db ", allprocess) + }) } sortArrayISODate(myArray: any) { @@ -376,15 +383,15 @@ export class GabineteDigitalPage implements OnInit, DoCheck { thedate.getMinutes(); } - goToProcess(serialNumber:string, workflowName:string, activityName:string){ - if(workflowName == 'Despacho') { - if(activityName == 'Tarefa de Despacho' || activityName == 'Concluir Despacho'){ - this.router.navigate(['/home/gabinete-digital/despachos',serialNumber,'gabinete-digital']); + goToProcess(serialNumber: string, workflowName: string, activityName: string) { + if (workflowName == 'Despacho') { + if (activityName == 'Tarefa de Despacho' || activityName == 'Concluir Despacho') { + this.router.navigate(['/home/gabinete-digital/despachos', serialNumber, 'gabinete-digital']); } } - else if(workflowName == 'Despacho do Presidente da República') { - if(activityName == 'Tarefa de Despacho' || activityName == 'Concluir Despacho'){ - this.router.navigate(['/home/gabinete-digital/despachos-pr',serialNumber,'gabinete-digital']); + else if (workflowName == 'Despacho do Presidente da República') { + if (activityName == 'Tarefa de Despacho' || activityName == 'Concluir Despacho') { + this.router.navigate(['/home/gabinete-digital/despachos-pr', serialNumber, 'gabinete-digital']); } else if (activityName == 'Revisar Diploma' || activityName == 'Assinar Diploma') { this.router.navigate(['/home/gabinete-digital/diplomas', serialNumber, 'gabinete-digital']); @@ -538,7 +545,7 @@ export class GabineteDigitalPage implements OnInit, DoCheck { let allPreocesses_ = await this.processesbackend.GetTasksList("", false).toPromise(); let count_all_processes = Object.keys(allPreocesses_).length; - + let expedientes = await this.processesbackend.GetTaskListExpediente(false).toPromise(); expedientes = expedientes.filter(data => data.workflowInstanceDataFields.Status == "Active") diff --git a/src/app/pages/gabinete-digital/pedidos/pedido/pedido.page.ts b/src/app/pages/gabinete-digital/pedidos/pedido/pedido.page.ts index f68414f54..3e8365b55 100644 --- a/src/app/pages/gabinete-digital/pedidos/pedido/pedido.page.ts +++ b/src/app/pages/gabinete-digital/pedidos/pedido/pedido.page.ts @@ -21,7 +21,7 @@ import { Location } from '@angular/common'; import { PedidoService } from 'src/app/Rules/pedido.service'; import { SqliteService } from 'src/app/services/sqlite.service'; -import { synchro } from 'src/app/services/socket/synchro.service'; +import { BackgroundService } from 'src/app/services/background.service'; import { PermissionService } from 'src/app/services/worker/permission.service'; import { ViewDocumentPage } from 'src/app/modals/view-document/view-document.page'; @@ -62,6 +62,7 @@ export class PedidoPage implements OnInit { private location: Location, private pedidoService: PedidoService, private sqliteservice: SqliteService, + private backgroundservices: BackgroundService ) { this.loggeduser = authService.ValidatedUser; @@ -79,7 +80,10 @@ export class PedidoPage implements OnInit { } ngOnInit() { - this.getfromDb() + this.LoadTaskDetail(this.serialnumber); + this.backgroundservices.registerBackService('Online', () => { + this.LoadTaskDetail(this.serialnumber); + }); } close() { @@ -155,7 +159,7 @@ export class PedidoPage implements OnInit { this.customDate = this.days[thedate.getDay()] + ", " + thedate.getDate() + " de " + (this.months[thedate.getMonth()]); this.processes.GetTaskParticipants(res.workflowInstanceDataFields.FolderID).subscribe(users => { - this.sqliteservice.updateProcessInterveners(JSON.stringify(this.serialnumber), JSON.stringify(users)).then(() =>{ + this.sqliteservice.updateProcessInterveners(JSON.stringify(this.serialnumber), JSON.stringify(users)).then(() => { console.log('Pedido ') }) this.intervenientes = users.filter(user => { @@ -167,114 +171,108 @@ export class PedidoPage implements OnInit { }); this.getDocumentDetails(res.workflowInstanceDataFields.FolderID, '361'); }, (error) => { - try { - this.goBack() - this.close() - } catch (e) { - window.history.back(); - } finally { - if (error.status == 0) { - this.toastService.badRequest('Não é possível visualizar este processo no modo offline') - } else { - this.toastService.badRequest('Processo não encontrado') + if (error.status == 0) { + this.getfromDb(); + } else { + try { + this.goBack() + this.close() + } catch (e) { + window.history.back(); } + this.toastService.badRequest('Processo não encontrado') } }); } getfromDb() { - if (synchro.connected === true) { - this.LoadTaskDetail(this.serialnumber); - } - if (synchro.connected === false) { - this.sqliteservice.getProcessById(this.serialnumber).then((process) => { + this.sqliteservice.getProcessById(this.serialnumber).then((process) => { - console.log('PROCESS BY ID', process,this.serialnumber ) + console.log('PROCESS BY ID', process, this.serialnumber) - let fulltak = { - Documents: JSON.parse(process[0].Documents), - actions: JSON.parse(process[0].actions), - activityInstanceName: process[0].activityInstanceName, - formURL: process[0].formURL, - originator: JSON.parse(process[0].originator), - serialNumber: process[0].serialNumber, - taskStartDate: process[0].taskStartDate, - totalDocuments: process[0].totalDocuments, - workflowDisplayName: process[0].workflowDisplayName, - workflowID: process[0].workflowID, - workflowInstanceDataFields: JSON.parse(process[0].workflowInstanceDataFields), - workflowInstanceFolio: process[0].workflowInstanceFolio, - workflowInstanceID: process[0].workflowInstanceID, - workflowName: process[0].workflowName + let fulltak = { + Documents: JSON.parse(process[0].Documents) || [], + actions: JSON.parse(process[0].actions), + activityInstanceName: process[0].activityInstanceName, + formURL: process[0].formURL, + originator: JSON.parse(process[0].originator), + serialNumber: process[0].serialNumber, + taskStartDate: process[0].taskStartDate, + totalDocuments: process[0].totalDocuments, + workflowDisplayName: process[0].workflowDisplayName, + workflowID: process[0].workflowID, + workflowInstanceDataFields: JSON.parse(process[0].workflowInstanceDataFields), + workflowInstanceFolio: process[0].workflowInstanceFolio, + workflowInstanceID: process[0].workflowInstanceID, + workflowName: process[0].workflowName + } + + this.fulltask = fulltak; + console.log('FULLTAK OFFLINE', this.fulltask); + + if (process[0].workflowDisplayName == 'Pedido de Parecer' || process[0].workflowDisplayName == 'Pedido de Parecer do Presidente') { + let date = new Date(process[0].taskStartDate); + date.setMonth(date.getMonth() + 1); + let taskDate = date.getFullYear() + "-" + date.getMonth() + "-" + date.getDate() + " " + date.getHours() + ":" + date.getMinutes() + ":" + date.getSeconds(); + + this.task = { + "SerialNumber": process[0].serialNumber, + "Folio": JSON.parse(process[0].workflowInstanceDataFields).Subject, + "Senders": JSON.parse(process[0].workflowInstanceDataFields).Sender, + "CreateDate": taskDate, + "DocumentURL": JSON.parse(process[0].workflowInstanceDataFields).ViewerRequest, + "Remetente": JSON.parse(process[0].workflowInstanceDataFields).Sender, + "Note": JSON.parse(process[0].workflowInstanceDataFields).TaskMessage, + "FolderId": JSON.parse(process[0].workflowInstanceDataFields).FolderID, + "FsId": '361', + "DocId": JSON.parse(process[0].workflowInstanceDataFields).DocIdDeferimento, + "WorkflowName": process[0].workflowDisplayName, + "DeadlineType": JSON.parse(process[0].workflowInstanceDataFields).DeadlineType, + "ProcessInstanceID": JSON.parse(process[0].workflowInstanceDataFields).InstanceID, + "activityInstanceName": process[0].activityInstanceName, + "Status": JSON.parse(process[0].workflowInstanceDataFields).Status, } - this.fulltask = fulltak; - console.log('FULLTAK OFFLINE', this.fulltask); + this.attachments = JSON.parse(process[0].Documents); + } else if (process[0].workflowDisplayName == 'Pedido de Deferimento') { - if (process[0].workflowDisplayName == 'Pedido de Parecer' || process[0].workflowDisplayName == 'Pedido de Parecer do Presidente') { - let date = new Date(process[0].taskStartDate); - date.setMonth(date.getMonth() + 1); - let taskDate = date.getFullYear() + "-" + date.getMonth() + "-" + date.getDate() + " " + date.getHours() + ":" + date.getMinutes() + ":" + date.getSeconds(); - - this.task = { - "SerialNumber": process[0].serialNumber, - "Folio": JSON.parse(process[0].workflowInstanceDataFields).Subject, - "Senders": JSON.parse(process[0].workflowInstanceDataFields).Sender, - "CreateDate": taskDate, - "DocumentURL": JSON.parse(process[0].workflowInstanceDataFields).ViewerRequest, - "Remetente": JSON.parse(process[0].workflowInstanceDataFields).Sender, - "Note": JSON.parse(process[0].workflowInstanceDataFields).TaskMessage, - "FolderId": JSON.parse(process[0].workflowInstanceDataFields).FolderID, - "FsId": '361', - "DocId": JSON.parse(process[0].workflowInstanceDataFields).DocIdDeferimento, - "WorkflowName": process[0].workflowDisplayName, - "DeadlineType": JSON.parse(process[0].workflowInstanceDataFields).DeadlineType, - "ProcessInstanceID": JSON.parse(process[0].workflowInstanceDataFields).InstanceID, - "activityInstanceName": process[0].activityInstanceName, - "Status": JSON.parse(process[0].workflowInstanceDataFields).Status, - } - - this.attachments = JSON.parse(process[0].Documents); - } else if (process[0].workflowDisplayName == 'Pedido de Deferimento') { - - let date = new Date(process[0].taskStartDate); - date.setMonth(date.getMonth() + 1); - let taskDate = date.getFullYear() + "-" + date.getMonth() + "-" + date.getDate() + " " + date.getHours() + ":" + date.getMinutes() + ":" + date.getSeconds(); - this.task = { - "SerialNumber": process[0].serialNumber, - "Folio": JSON.parse(process[0].workflowInstanceDataFields).Subject, - "Senders": JSON.parse(process[0].workflowInstanceDataFields).Sender, - "CreateDate": taskDate, - "DocumentURL": JSON.parse(process[0].workflowInstanceDataFields).ViewerRequest, - "Remetente": JSON.parse(process[0].workflowInstanceDataFields).Sender, - "Note": JSON.parse(process[0].workflowInstanceDataFields).TaskMessage, - "FolderId": JSON.parse(process[0].workflowInstanceDataFields).FolderID, - "FsId": '361', - "DocId": JSON.parse(process[0].workflowInstanceDataFields).DocIdDeferimento, - "WorkflowName": process[0].workflowDisplayName, - "DeadlineType": JSON.parse(process[0].workflowInstanceDataFields).DeadlineType, - "ProcessInstanceID": JSON.parse(process[0].workflowInstanceDataFields).InstanceID, - "activityInstanceName": process[0].activityInstanceName, - "Status": JSON.parse(process[0].workflowInstanceDataFields).Status, - } - this.attachments = JSON.parse(process[0].Documents); + let date = new Date(process[0].taskStartDate); + date.setMonth(date.getMonth() + 1); + let taskDate = date.getFullYear() + "-" + date.getMonth() + "-" + date.getDate() + " " + date.getHours() + ":" + date.getMinutes() + ":" + date.getSeconds(); + this.task = { + "SerialNumber": process[0].serialNumber, + "Folio": JSON.parse(process[0].workflowInstanceDataFields).Subject, + "Senders": JSON.parse(process[0].workflowInstanceDataFields).Sender, + "CreateDate": taskDate, + "DocumentURL": JSON.parse(process[0].workflowInstanceDataFields).ViewerRequest, + "Remetente": JSON.parse(process[0].workflowInstanceDataFields).Sender, + "Note": JSON.parse(process[0].workflowInstanceDataFields).TaskMessage, + "FolderId": JSON.parse(process[0].workflowInstanceDataFields).FolderID, + "FsId": '361', + "DocId": JSON.parse(process[0].workflowInstanceDataFields).DocIdDeferimento, + "WorkflowName": process[0].workflowDisplayName, + "DeadlineType": JSON.parse(process[0].workflowInstanceDataFields).DeadlineType, + "ProcessInstanceID": JSON.parse(process[0].workflowInstanceDataFields).InstanceID, + "activityInstanceName": process[0].activityInstanceName, + "Status": JSON.parse(process[0].workflowInstanceDataFields).Status, } + this.attachments = JSON.parse(process[0].Documents); + } - let thedate = new Date(process[0].taskStartDate); - this.customDate = this.days[thedate.getDay()] + ", " + thedate.getDate() + " de " + (this.months[thedate.getMonth()]); + let thedate = new Date(process[0].taskStartDate); + this.customDate = this.days[thedate.getDay()] + ", " + thedate.getDate() + " de " + (this.months[thedate.getMonth()]); - this.intervenientes = JSON.parse(process[0].interveners).filter(user => { - return user.Type == 'I'; - }); - this.cc = JSON.parse(process[0].interveners).filter(user => { - return user.Type == 'CC'; - }); - this.getDocumentDetails(JSON.parse(process[0].workflowInstanceDataFields).FolderID, '361'); + this.intervenientes = JSON.parse(process[0].interveners).filter(user => { + return user.Type == 'I'; + }); + this.cc = JSON.parse(process[0].interveners).filter(user => { + return user.Type == 'CC'; + }); + this.getDocumentDetails(JSON.parse(process[0].workflowInstanceDataFields).FolderID, '361'); - }) - } + }) } getDocumentDetails(forlderId: string, applicationId: string) { @@ -284,7 +282,7 @@ export class PedidoPage implements OnInit { }) } - async viewDocument(DocId:string, Document) { + async viewDocument(DocId: string, Document) { const modal = await this.modalController.create({ component: ViewDocumentPage, @@ -329,7 +327,7 @@ export class PedidoPage implements OnInit { popover.onDidDismiss().then((res => { - if( res['data'] == 'close') { + if (res['data'] == 'close') { this.goBack() } @@ -478,7 +476,7 @@ export class PedidoPage implements OnInit { // }); // } - async distartExpedientModal(){ + async distartExpedientModal() { console.log(this.fulltask); const modal = await this.modalController.create({ component: DiscartExpedientModalPage, diff --git a/src/app/pages/gabinete-digital/pedidos/pedidos.page.ts b/src/app/pages/gabinete-digital/pedidos/pedidos.page.ts index 4c1c05989..b77c432f0 100644 --- a/src/app/pages/gabinete-digital/pedidos/pedidos.page.ts +++ b/src/app/pages/gabinete-digital/pedidos/pedidos.page.ts @@ -9,7 +9,7 @@ import { PedidosStore } from 'src/app/store/pedidos-store.service'; import { ModalService } from 'src/app/services/modal.service'; import { SqliteService } from 'src/app/services/sqlite.service'; -import { synchro } from 'src/app/services/socket/synchro.service'; +import { BackgroundService } from 'src/app/services/background.service'; import { SortService } from 'src/app/services/functions/sort.service'; @Component({ @@ -19,41 +19,42 @@ import { SortService } from 'src/app/services/functions/sort.service'; }) export class PedidosPage implements OnInit { - @ViewChild(CalendarComponent) myCal: CalendarComponent; + @ViewChild(CalendarComponent) myCal: CalendarComponent; - taskslist:DailyWorkTask[] = []; - parecerList:any[] = []; - listToPresentparecerList: any[] = []; - listToPresentdeferimentoList: any[] = []; - fulltask:any; + taskslist: DailyWorkTask[] = []; + parecerList: any[] = []; + listToPresentparecerList: any[] = []; + listToPresentdeferimentoList: any[] = []; + fulltask: any; - parecerListResult:customTask[] = []; - deferimentoListResult:customTask[] = []; + parecerListResult: customTask[] = []; + deferimentoListResult: customTask[] = []; - deferimentoList:any[] = []; - taskType: string; - serialNumber:string; - skeletonLoader = true - pedidosstorage = PedidosStore; + deferimentoList: any[] = []; + taskType: string; + serialNumber: string; + skeletonLoader = true + pedidosstorage = PedidosStore; - segment:string; - @Output() openExpedientDetail:EventEmitter = new EventEmitter(); + segment: string; + @Output() openExpedientDetail: EventEmitter = new EventEmitter(); - constructor( + constructor( private router: Router, - private processes:ProcessesService, + private processes: ProcessesService, private modalController: ModalController, private alertService: AlertService, private activatedRoute: ActivatedRoute, private modalService: ModalService, private sqliteservice: SqliteService, private sortService: SortService, - ) { - //Inicializar segment + private backgroundservice: BackgroundService + ) { + //Inicializar segment this.segment = 'parecer'; this.activatedRoute.queryParams.subscribe(params => { - if(params['deferimento'] == 'true') { + if (params['deferimento'] == 'true') { this.segment = 'deferimento'; } else if (params['parecer'] == 'true') { this.segment = 'parecer'; @@ -61,12 +62,30 @@ export class PedidosPage implements OnInit { }); - const modal = this.modalService.BookMeetingModalPage({task: ''},{}) + const modal = this.modalService.BookMeetingModalPage({ task: '' }, {}) } ngOnInit() { - this.getFromDb(); + + this.LoadList() + + this.router.events.forEach((event) => { + if (event instanceof NavigationStart && '/home/gabinete-digital/pedidos?parecer=true'.startsWith(event.url) || + event instanceof NavigationStart && '/home/gabinete-digital/pedidos?deferimento=true'.startsWith(event.url) + ) { + + if (window.location.pathname.split('/').length >= 4 && window.location.pathname.startsWith('/home/gabinete-digital')) { + this.refreshing() + } else { + this.LoadList() + } + } + }); + + this.backgroundservice.registerBackService('Online', () => { + this.getFromDb(); + }); } goBack() { @@ -88,8 +107,8 @@ export class PedidosPage implements OnInit { // this.LoadList(); } */ - goToPedido(serialNumber:any) { - this.router.navigate(['/home/gabinete-digital/pedidos',serialNumber,'gabinete-digital']); + goToPedido(serialNumber: any) { + this.router.navigate(['/home/gabinete-digital/pedidos', serialNumber, 'gabinete-digital']); } notImplemented() { @@ -102,27 +121,30 @@ export class PedidosPage implements OnInit { } async LoadList() { - this.skeletonLoader = true - if(this.segment == 'parecer') { - this.taskType = "Pedido de Parecer"; + this.processes.GetTasksList("Pedido de Parecer", false).subscribe(async res => { - let parecer = await this.processes.GetTasksList("Pedido de Parecer", false).toPromise(); - let parecerPr = await this.processes.GetTasksList("Pedido de Parecer do Presidente", false).toPromise(); + this.skeletonLoader = true - this.skeletonLoader = false + if (this.segment == 'parecer') { + this.taskType = "Pedido de Parecer"; - let allParecer = parecer.concat(parecerPr).reverse().filter(data => data.workflowInstanceDataFields.Status == "Active") + let parecer = await this.processes.GetTasksList("Pedido de Parecer", false).toPromise(); + let parecerPr = await this.processes.GetTasksList("Pedido de Parecer do Presidente", false).toPromise(); - this.parecerList =[]; + this.skeletonLoader = false - allParecer.filter(data => data.workflowInstanceDataFields.Status == "Active").forEach(element => { + let allParecer = parecer.concat(parecerPr).reverse().filter(data => data.workflowInstanceDataFields.Status == "Active") - 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(); + this.parecerList = []; - let task = { + allParecer.filter(data => data.workflowInstanceDataFields.Status == "Active").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, @@ -133,32 +155,32 @@ export class PedidosPage implements OnInit { "DocId": element.workflowInstanceDataFields.DocIdDiferimento, "WorkflowName": element.workflowDisplayName, "activityInstanceName": element.activityInstanceName, - } - this.parecerList.push(task); - }); - this.sqliteservice.addProcess(this.parecerList); - this.listToPresentparecerList = this.sortService.sortArrayISODate(this.parecerList); + } + this.parecerList.push(task); + }); + this.sqliteservice.addProcess(this.parecerList); + this.listToPresentparecerList = this.sortService.sortArrayISODate(this.parecerList); - } - else if(this.segment == 'deferimento') { - this.taskType = "Pedido de Deferimento"; - this.processes.GetTasksList("Pedido de Deferimento", false).subscribe(result => { + } + else if (this.segment == 'deferimento') { + this.taskType = "Pedido de Deferimento"; + this.processes.GetTasksList("Pedido de Deferimento", false).subscribe(result => { - this.skeletonLoader = false + this.skeletonLoader = false - console.log(result); + console.log(result); - this.deferimentoList = []; + this.deferimentoList = []; - let res = result.filter(data => data.workflowInstanceDataFields.Status == "Active") - res = res.reverse() + let res = result.filter(data => data.workflowInstanceDataFields.Status == "Active") + res = res.reverse() - res.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(); + res.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 = { + let task = { "SerialNumber": element.serialNumber, "Folio": element.workflowInstanceDataFields.Subject, "Senders": element.workflowInstanceDataFields.Sender, @@ -169,98 +191,80 @@ export class PedidosPage implements OnInit { "DocId": element.workflowInstanceDataFields.DocIdDiferimento, "WorkflowName": element.workflowDisplayName, "activityInstanceName": element.activityInstanceName, - } - - if(element.workflowInstanceDataFields.Status == "Active") { - this.deferimentoList.push(task); - } - + } + if (element.workflowInstanceDataFields.Status == "Active") { + this.deferimentoList.push(task); + } + }); }); this.sqliteservice.addProcess(this.deferimentoList); this.listToPresentdeferimentoList = this.sortService.sortArrayISODate(this.deferimentoList); + } - }); - } + }, (error) => { + this.getFromDb() + }) } getFromDb() { - if(synchro.connected === true) { - this.LoadList() - this.router.events.forEach((event) => { - if(event instanceof NavigationStart && '/home/gabinete-digital/pedidos?parecer=true'.startsWith(event.url) || - event instanceof NavigationStart && '/home/gabinete-digital/pedidos?deferimento=true'.startsWith(event.url) - ) { + let parecerlist = []; + let deferimentolist = [] + this.sqliteservice.getprocessByworkflowpedido("Pedido de Parecer", "Pedido de Parecer do Presidente").then((process: any[]) => { - if(window.location.pathname.split('/').length >= 4 && window.location.pathname.startsWith('/home/gabinete-digital')) { - this.refreshing() - } else { - this.LoadList() - } - } - }); - } - - if(synchro.connected === false) { - let parecerlist = []; - let deferimentolist = [] - this.sqliteservice.getprocessByworkflowpedido("Pedido de Parecer", "Pedido de Parecer do Presidente").then((process: any[]) => { - - process.forEach((element) => { - if(JSON.parse(element.workflowInstanceDataFields).Status == "Active") { - let date = new Date(element.taskStartDate); + process.forEach((element) => { + if (JSON.parse(element.workflowInstanceDataFields).Status == "Active") { + 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 taskDate = date.getFullYear() + "-" + date.getMonth() + "-" + date.getDate() + " " + date.getHours() + ":" + date.getMinutes() + ":" + date.getSeconds(); - let task = { - "SerialNumber": element.serialNumber, - "Folio": JSON.parse(element.workflowInstanceDataFields).Subject, - "Senders": JSON.parse(element.workflowInstanceDataFields).Sender, - "CreateDate": taskDate, - "DocumentURL": JSON.parse(element.workflowInstanceDataFields).ViewerRequest, - "Remetente": JSON.parse(element.workflowInstanceDataFields).Remetente, - "DocumentsQty": element.totalDocuments, - "DocId": JSON.parse(element.workflowInstanceDataFields).DocIdDiferimento, - "WorkflowName": element.workflowDisplayName, - "activityInstanceName": element.activityInstanceName, + let task = { + "SerialNumber": element.serialNumber, + "Folio": JSON.parse(element.workflowInstanceDataFields).Subject, + "Senders": JSON.parse(element.workflowInstanceDataFields).Sender, + "CreateDate": taskDate, + "DocumentURL": JSON.parse(element.workflowInstanceDataFields).ViewerRequest, + "Remetente": JSON.parse(element.workflowInstanceDataFields).Remetente, + "DocumentsQty": element.totalDocuments, + "DocId": JSON.parse(element.workflowInstanceDataFields).DocIdDiferimento, + "WorkflowName": element.workflowDisplayName, + "activityInstanceName": element.activityInstanceName, } - parecerlist.push(task) - } - }) - this.listToPresentparecerList = this.sortService.sortArrayISODate(parecerlist); - console.log('parecer',process) + parecerlist.push(task) + } }) + this.listToPresentparecerList = this.sortService.sortArrayISODate(parecerlist); + console.log('parecer', process) + }) - this.sqliteservice.getprocessByworkflow("Pedido de Deferimento").then((process: any[]) => { - process.forEach((element) => { - if(JSON.parse(element.workflowInstanceDataFields).Status == "Active") { - 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(); + this.sqliteservice.getprocessByworkflow("Pedido de Deferimento").then((process: any[]) => { + process.forEach((element) => { + if (JSON.parse(element.workflowInstanceDataFields).Status == "Active") { + 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": JSON.parse(element.workflowInstanceDataFields).Subject, - "Senders": JSON.parse(element.workflowInstanceDataFields).Sender, - "CreateDate": taskDate, - "DocumentURL": JSON.parse(element.workflowInstanceDataFields).ViewerRequest, - "Remetente": JSON.parse(element.workflowInstanceDataFields).Remetente, - "DocumentsQty": element.totalDocuments, - "DocId": JSON.parse(element.workflowInstanceDataFields).DocIdDiferimento, - "WorkflowName": element.workflowDisplayName, - "activityInstanceName": element.activityInstanceName, - } - deferimentolist.push(task) + let task = { + "SerialNumber": element.serialNumber, + "Folio": JSON.parse(element.workflowInstanceDataFields).Subject, + "Senders": JSON.parse(element.workflowInstanceDataFields).Sender, + "CreateDate": taskDate, + "DocumentURL": JSON.parse(element.workflowInstanceDataFields).ViewerRequest, + "Remetente": JSON.parse(element.workflowInstanceDataFields).Remetente, + "DocumentsQty": element.totalDocuments, + "DocId": JSON.parse(element.workflowInstanceDataFields).DocIdDiferimento, + "WorkflowName": element.workflowDisplayName, + "activityInstanceName": element.activityInstanceName, } - }) - this.listToPresentdeferimentoList = this.sortService.sortArrayISODate(deferimentolist); - console.log('deferimento',process) + deferimentolist.push(task) + } }) - - } + this.listToPresentdeferimentoList = this.sortService.sortArrayISODate(deferimentolist); + console.log('deferimento', process) + }) } segmentChanged(ev: any) { diff --git a/src/app/pages/gabinete-digital/pendentes/pendentes.page.ts b/src/app/pages/gabinete-digital/pendentes/pendentes.page.ts index 54bae18a2..a9ecba812 100644 --- a/src/app/pages/gabinete-digital/pendentes/pendentes.page.ts +++ b/src/app/pages/gabinete-digital/pendentes/pendentes.page.ts @@ -11,7 +11,7 @@ import { AuthService } from 'src/app/services/auth.service'; import { CustomTaskPipe } from 'src/app/pipes/custom-task.pipe'; import { SqliteService } from 'src/app/services/sqlite.service'; -import { synchro } from 'src/app/services/socket/synchro.service'; +import { BackgroundService } from 'src/app/services/background.service'; import { Platform } from '@ionic/angular'; import { SortService } from 'src/app/services/functions/sort.service'; @@ -37,8 +37,6 @@ export class PendentesPage implements OnInit { customTaskPipe = new CustomTaskPipe() listToPresent = []; - synch = synchro - constructor( private processes: ProcessesService, private alertService: AlertService, @@ -47,6 +45,7 @@ export class PendentesPage implements OnInit { private activatedRoute: ActivatedRoute, private sqliteservice: SqliteService, private platform: Platform, + private backgroundservices: BackgroundService, private sortService: SortService, ) { this.loggeduser = authService.ValidatedUser; @@ -56,7 +55,24 @@ export class PendentesPage implements OnInit { ngOnInit() { //Inicializar segment this.segment = "despachos"; - this.getFromDb(); + const location = window.location + const pathname = location.pathname + location.search + + this.LoadList() + + this.router.events.forEach((event) => { + if (event instanceof NavigationEnd && event.url.startsWith(pathname)) { + if (window.location.pathname.split('/').length >= 4 && window.location.pathname.startsWith('/home/gabinete-digital')) { + this.refreshing() + } else { + this.LoadList() + } + } + }); + + this.backgroundservices.registerBackService('Online', () => { + this.LoadList(); + }); } @@ -74,69 +90,58 @@ export class PendentesPage implements OnInit { async LoadList() { - this.skeletonLoader = true; + this.processes.GetPendingTasks(false).subscribe(async res => { + this.skeletonLoader = true; - let pendentes = await this.processes.GetPendingTasks(false).toPromise(); - let pendentesList = []; + let pendentes = await this.processes.GetPendingTasks(false).toPromise(); + let pendentesList = []; - pendentes.forEach(element => { - let task: customTask = this.customTaskPipe.transform(element); - pendentesList.push(task); - }); + pendentes.forEach(element => { + let task: customTask = this.customTaskPipe.transform(element); + pendentesList.push(task); + }); - pendentesList = removeDuplicate(pendentesList) - pendentesList = this.sortService.sortArrayByDate(pendentesList); - this.listToPresent = pendentesList; - this.skeletonLoader = false; + pendentesList = removeDuplicate(pendentesList) + pendentesList = this.sortService.sortArrayISODate(pendentesList); + this.listToPresent = pendentesList; + this.skeletonLoader = false; + + }, (error) => { + if(error.status == 0){ + this.getFromDb(); + } + }) } getFromDb() { - if (synchro.connected === true) { - const location = window.location - const pathname = location.pathname + location.search + this.platform.ready().then(() => { + this.sqliteservice.getAllProcess().then((process: any[]) => { + var pendingList = [] + console.log('Pendentes off off',process ) + process.forEach(element => { + var workflow = JSON.parse(element.workflowInstanceDataFields); + if (workflow.Status === "Pending") { + let task = { + "CreateDate": new Date(element.taskStartDate), + "DocumentsQty": element.totalDocuments, + "FolderID": workflow.FolderID, + "Folio": workflow.Subject, + "Senders": workflow.Sender, + "SerialNumber": element.serialNumber, + "Status": workflow.Status, + "WorkflowName": element.workflowDisplayName - this.LoadList() - - this.router.events.forEach((event) => { - if (event instanceof NavigationEnd && event.url.startsWith(pathname)) { - if (window.location.pathname.split('/').length >= 4 && window.location.pathname.startsWith('/home/gabinete-digital')) { - this.refreshing() - } else { - this.LoadList() - } - } - }); - } - - synchro.registerCallback('Offline', () => { - this.platform.ready().then(() => { - this.sqliteservice.getAllProcess().then((process: any[]) => { - var pendingList = [] - process.forEach(element => { - var workflow = JSON.parse(element.workflowInstanceDataFields); - if (workflow.Status === "Pending") { - let task = { - "CreateDate": new Date(element.taskStartDate), - "DocumentsQty": element.totalDocuments, - "FolderID": workflow.FolderID, - "Folio": workflow.Subject, - "Senders": workflow.Sender, - "SerialNumber": element.serialNumber, - "Status": workflow.Status, - "WorkflowName": element.workflowDisplayName - - } - pendingList.push(task) } - }); + pendingList.push(task) + } + }); - pendingList = this.sortService.sortArrayISODate(pendingList); - this.listToPresent = pendingList; - console.log('pendentes', pendingList) + pendingList = pendingList; + this.listToPresent = pendingList; + console.log('pendentes', pendingList) - }) }) }) } diff --git a/src/app/pages/login/login.page.ts b/src/app/pages/login/login.page.ts index 3ff16263e..e83bae32f 100644 --- a/src/app/pages/login/login.page.ts +++ b/src/app/pages/login/login.page.ts @@ -108,6 +108,7 @@ export class LoginPage implements OnInit { this.changeProfileService.run() await this.authService.loginChat(this.userattempt); + this.getToken(); this.router.navigate(['/pin']); } diff --git a/src/app/pages/publications/publication-detail/publication-detail.page.ts b/src/app/pages/publications/publication-detail/publication-detail.page.ts index 90d2efc93..8160c658b 100644 --- a/src/app/pages/publications/publication-detail/publication-detail.page.ts +++ b/src/app/pages/publications/publication-detail/publication-detail.page.ts @@ -7,7 +7,7 @@ import { ImageModalPage } from '../gallery/image-modal/image-modal.page'; import { NewPublicationPage } from '../new-publication/new-publication.page'; import { Location } from '@angular/common'; import { SqliteService } from 'src/app/services/sqlite.service'; -import { synchro } from 'src/app/services/socket/synchro.service'; +import { BackgroundService } from 'src/app/services/background.service'; @Component({ @@ -28,7 +28,8 @@ export class PublicationDetailPage implements OnInit { private animationController: AnimationController, private toastService: ToastService, private location: Location, - private sqliteservice: SqliteService ) { + private sqliteservice: SqliteService, + private backgroundservice: BackgroundService ) { this.publicationId = this.navParams.get('publicationId'); /* this.folderId = this.navParams.get('folderIdId'); */ @@ -81,11 +82,7 @@ export class PublicationDetailPage implements OnInit { } getFromDB() { - if(synchro.connected === true) { - } else { - - } } close() { diff --git a/src/app/pages/publications/publications.page.ts b/src/app/pages/publications/publications.page.ts index 70b5f7da8..f98774851 100644 --- a/src/app/pages/publications/publications.page.ts +++ b/src/app/pages/publications/publications.page.ts @@ -14,7 +14,7 @@ import { ToastService } from 'src/app/services/toast.service'; import { PublicationEventFolderStorage } from 'src/app/store/publication-event-folder.service'; import { PublicationTravelFolderStore } from 'src/app/store/publication-travel-folder.service'; import { SqliteService } from 'src/app/services/sqlite.service'; -import { synchro } from 'src/app/services/socket/synchro.service'; +import { BackgroundService } from 'src/app/services/background.service'; @Component({ selector: 'app-publications', @@ -64,14 +64,28 @@ export class PublicationsPage implements OnInit { private animationController: AnimationController, private publications: PublicationsService, private toastService: ToastService, - private sqliteservice: SqliteService + private sqliteservice: SqliteService, + private backgroundservice: BackgroundService ) { this.months = ["Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro"]; this.days = ["Domingo", "Segunda-feira", "Terça-feira", "Quarta-feira", "Quinta-feira", "Sexta-feira", "Sábado"]; } ngOnInit() { - this.getFromDB(); + + const pathname = window.location.pathname + + this.router.events.forEach((event) => { + if (event instanceof NavigationEnd && event.url == pathname) { + this.getActions(); + } + }); + this.hideRefreshButton(); + + this.backgroundservice.registerBackService('Online', () => { + this.getActions(); + }) + } hideRefreshButton() { @@ -153,50 +167,40 @@ export class PublicationsPage implements OnInit { }); + }, (error) => { + this.getFromDB(); }); } getFromDB() { - if (synchro.connected === true) { - const pathname = window.location.pathname + this.sqliteservice.getAllActions().then((actions: any[]) => { - this.router.events.forEach((event) => { - if (event instanceof NavigationEnd && event.url == pathname) { - this.getActions(); + console.log('offline publi', actions) + + this.publicationsEventFolderList = new Array(); + this.publicationsTravelFolderList = new Array(); + + actions.forEach(data => { + let folder: PublicationFolder = { + ProcessId: data.ProcessId, + Description: data.Description, + Detail: data.Detail, + DateBegin: data.DateBegin, + DateEnd: data.DateEnd, + ActionType: data.ActionType, } + + if (data.ActionType == "Evento") { + this.publicationsEventFolderList.push(folder); + } + else { + this.publicationsTravelFolderList.push(folder); + } + this.showLoader = false; }); - this.hideRefreshButton(); - } else { - this.sqliteservice.getAllActions().then((actions: any[]) => { - - console.log('offline publi', actions) - - this.publicationsEventFolderList = new Array(); - this.publicationsTravelFolderList = new Array(); - - actions.forEach(data => { - let folder: PublicationFolder = { - ProcessId: data.ProcessId, - Description: data.Description, - Detail: data.Detail, - DateBegin: data.DateBegin, - DateEnd: data.DateEnd, - ActionType: data.ActionType, - } - - if (data.ActionType == "Evento") { - this.publicationsEventFolderList.push(folder); - } - else { - this.publicationsTravelFolderList.push(folder); - } - this.showLoader = false; - }); - - }) - } + }) } async editAction(folderId?: string) { diff --git a/src/app/pages/publications/view-publications/view-publications.page.ts b/src/app/pages/publications/view-publications/view-publications.page.ts index 3fb9a9676..a41378420 100644 --- a/src/app/pages/publications/view-publications/view-publications.page.ts +++ b/src/app/pages/publications/view-publications/view-publications.page.ts @@ -11,7 +11,7 @@ import { PublicationTravelFolderStore } from 'src/app/store/publication-travel-f import { NewPublicationPage } from '../new-publication/new-publication.page'; import { PublicationDetailPage } from './publication-detail/publication-detail.page'; import { SqliteService } from 'src/app/services/sqlite.service'; -import { synchro } from 'src/app/services/socket/synchro.service'; +import { BackgroundService } from 'src/app/services/background.service'; @Component({ selector: 'app-view-publications', @@ -42,7 +42,8 @@ export class ViewPublicationsPage implements OnInit { private publications: PublicationsService, private activatedRoute: ActivatedRoute, private router: Router, - private sqliteservice: SqliteService) { + private sqliteservice: SqliteService, + private backgroundservice: BackgroundService) { this.item = new PublicationFolder(); this.activatedRoute.paramMap.subscribe(params => { @@ -63,7 +64,16 @@ export class ViewPublicationsPage implements OnInit { this.folderId = this.folderId['ProcessId'] } - this.getFromDB(); + this.getPublicationDetail(); + setTimeout(() => { + this.getPublications(); + }, 5000); + + this.backgroundservice.registerBackService('Online',() => { + this.getPublicationDetail(); + this.getPublications(); + + }) } @@ -129,6 +139,9 @@ export class ViewPublicationsPage implements OnInit { this.showLoader = false; }, (error) => { + if(error.status == '0') { + this.getFromDB(); + } if (error.status == '404') { this.error = 'Sem publicações disponíveis!'; this.publicationList = []; @@ -142,47 +155,38 @@ export class ViewPublicationsPage implements OnInit { } getFromDB() { - if (synchro.connected === true) { - this.getPublicationDetail(); - setTimeout(() => { - this.getPublications(); - }, 5000); - } else { + this.sqliteservice.getActionById(this.folderId).then((publications) => { + console.log('publications', publications) + let item = { + ActionType: publications[0].ActionType, + DateBegin: publications[0].DateBegin, + DateEnd: publications[0].DateEnd, + Description: publications[0].Description, + Detail: publications[0].Detail, + ProcessId: publications[0].ProcessId + } + this.publicationDitails = item; - this.sqliteservice.getActionById(this.folderId).then((publications) => { - console.log('publications', publications) - let item = { - ActionType: publications[0].ActionType, - DateBegin: publications[0].DateBegin, - DateEnd: publications[0].DateEnd, - Description: publications[0].Description, - Detail: publications[0].Detail, - ProcessId: publications[0].ProcessId + let publicationArray = []; + JSON.parse(publications[0].publications).forEach(element => { + let publicationlis = { + DateIndex: element.DateIndex, + DatePublication: element.DatePublication, + DocumentId: element.DocumentId, + FileBase64: element.FileBase64, + FileExtension: element.FileExtension, + Message: element.Message, + OrganicEntityId: element.OrganicEntityId, + OriginalFileName: element.OriginalFileName, + ProcessId: element.ProcessId } - this.publicationDitails = item; + publicationArray.push(publicationlis); - let publicationArray = []; - JSON.parse(publications[0].publications).forEach(element => { - let publicationlis = { - DateIndex: element.DateIndex, - DatePublication: element.DatePublication, - DocumentId: element.DocumentId, - FileBase64: element.FileBase64, - FileExtension: element.FileExtension, - Message: element.Message, - OrganicEntityId: element.OrganicEntityId, - OriginalFileName: element.OriginalFileName, - ProcessId: element.ProcessId - } - publicationArray.push(publicationlis); - - }); + }); - this.getpublication = publicationArray; - }) - - } + this.getpublication = publicationArray; + }) } async AddPublication(publicationType: any, folderId: any) { diff --git a/src/app/services/background.service.ts b/src/app/services/background.service.ts index 441a0b76e..84ed29d7c 100644 --- a/src/app/services/background.service.ts +++ b/src/app/services/background.service.ts @@ -5,6 +5,12 @@ import { Injectable } from '@angular/core'; }) export class BackgroundService { + callBacks: { + type: 'Offline' | 'Online' | 'Notification', + object?: string + funx: Function + }[] = [] + constructor() { } online() { @@ -13,6 +19,11 @@ export class BackgroundService { document.body.style.setProperty(`--color3`, "#0782C9"); document.body.style.setProperty(`--color4`, "#0782c9f0"); document.body.style.setProperty(`--color5`, "#45BAFF"); + this.callBacks.forEach((e) => { + if (e.type == 'Online') { + e.funx() + } + }) } offline() { @@ -21,5 +32,18 @@ export class BackgroundService { document.body.style.setProperty(`--color3`, "#ffb703"); document.body.style.setProperty(`--color4`, "#ffb703"); document.body.style.setProperty(`--color5`, "#ffb703"); + this.callBacks.forEach((e) => { + if (e.type == 'Offline') { + e.funx() + } + }) + } + + registerBackService(type: 'Offline' | 'Online' | 'Notification', funx: Function, object = '') { + this.callBacks.push({ + type, + funx, + object + }) } } diff --git a/src/app/services/chat.service.ts b/src/app/services/chat.service.ts index 612975aaf..0b05b66eb 100644 --- a/src/app/services/chat.service.ts +++ b/src/app/services/chat.service.ts @@ -53,14 +53,19 @@ export class ChatService { let headersc = new HttpHeaders(); headersc = headersc.set('X-User-Id', this.loggedUserChat['data'].userId); headersc = headersc.set('X-Auth-Token', this.loggedUserChat['data'].authToken); + headersc = headersc.set('Sec-Fetch-Dest', 'attachment'); + headersc = headersc.set('Sec-Fetch-Mode', 'navigate'); + headersc = headersc.set('Cookie', 'rc_uid=fsMwcNdufWvdnChj7'); + headersc = headersc.set('Cookie', 'rc_token=MLbhikLQI4xo9_vL43HqheKPPbxjag7hKfwxe9AjcvY'); // headersc = headersc.set("Host", "www.tabularium.pt"); // headersc = headersc.set("Origin", "http://localhost:8100"); - // headersc = headersc.set("Referer", "http://localhost:8100/"); + headersc = headersc.set('Referer', 'http://localhost:8100/'); let optionsc = { headers: headersc, + withCredentials: true }; - let fullUrl = "https://www.tabularium.pt/" + url; - return this.http.get(fullUrl, optionsc).subscribe(()=>{ + //let fullUrl = "https://www.tabularium.pt/" + url; + return this.http.get(url, optionsc).subscribe(()=>{ //this.fileService.viewDocumentByUrl(url) }); } diff --git a/src/app/services/events.service.ts b/src/app/services/events.service.ts index c20aae32d..2c7b591f1 100644 --- a/src/app/services/events.service.ts +++ b/src/app/services/events.service.ts @@ -1,12 +1,16 @@ import { Injectable } from '@angular/core'; import { Event, EventToApproveEdit } from '../models/event.model'; import { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http'; -import { Observable } from 'rxjs'; +import { Observable, from } from 'rxjs'; import { environment } from 'src/environments/environment'; import { AuthService } from '../services/auth.service'; import { UserSession } from '../models/user.model'; import { EventList } from '../models/agenda/AgendaEventList'; import { ChangeProfileService } from './change-profile.service'; +import { OfflineManagerService } from 'src/app/services/offline-manager.service'; +import { catchError } from "rxjs/operators"; +import { Storage } from '@ionic/storage'; +import { BackgroundService } from 'src/app/services/background.service'; @Injectable({ @@ -28,10 +32,12 @@ export class EventsService { headersSharedPessoal: HttpHeaders; constructor( - private http: HttpClient, + private http: HttpClient, public user: AuthService, - private changeProfileService: ChangeProfileService) - { + private changeProfileService: ChangeProfileService, + private offlinemanager: OfflineManagerService, + private storage: Storage, + private backgroundservice: BackgroundService) { this.loggeduser = this.user.ValidatedUser; @@ -44,9 +50,9 @@ export class EventsService { this.headersSharedOficial = new HttpHeaders(); this.headersSharedPessoal = new HttpHeaders(); - + this.setHeader() - this.changeProfileService.registerCallback(()=>{ + this.changeProfileService.registerCallback(() => { this.loggeduser = this.user.ValidatedUser; this.setHeader() }) @@ -55,16 +61,16 @@ export class EventsService { setHeader() { - if(this.loggeduser){ - if(this.loggeduser.Profile == 'MDGPR') { + if (this.loggeduser) { + if (this.loggeduser.Profile == 'MDGPR') { this.loggeduser.OwnerCalendars.forEach(calendar => { - if(calendar.CalendarName == 'Oficial') { + if (calendar.CalendarName == 'Oficial') { this.headersMdOficial = this.headersMdOficial.set('Authorization', this.loggeduser.BasicAuthKey); this.headersMdOficial = this.headersMdOficial.set('CalendarId', calendar.CalendarId); this.headersMdOficial = this.headersMdOficial.set('CalendarRoleId', calendar.CalendarRoleId); } - else if(calendar.CalendarName == 'Pessoal') { + else if (calendar.CalendarName == 'Pessoal') { this.headersMdPessoal = this.headersMdPessoal.set('Authorization', this.loggeduser.BasicAuthKey); this.headersMdPessoal = this.headersMdPessoal.set('CalendarId', calendar.CalendarId); this.headersMdPessoal = this.headersMdPessoal.set('CalendarRoleId', calendar.CalendarRoleId); @@ -73,27 +79,27 @@ export class EventsService { }); this.loggeduser.SharedCalendars.forEach(sharedCalendar => { - if(sharedCalendar.CalendarName == 'Oficial') { + if (sharedCalendar.CalendarName == 'Oficial') { this.headersSharedOficial = this.headersSharedOficial.set('Authorization', this.loggeduser.BasicAuthKey); this.headersSharedOficial = this.headersSharedOficial.set('CalendarId', sharedCalendar.CalendarId); this.headersSharedOficial = this.headersSharedOficial.set('CalendarRoleId', sharedCalendar.CalendarRoleId); } - else if(sharedCalendar.CalendarName == 'Pessoal') { + else if (sharedCalendar.CalendarName == 'Pessoal') { this.headersSharedPessoal = this.headersSharedPessoal.set('Authorization', this.loggeduser.BasicAuthKey); this.headersSharedPessoal = this.headersSharedPessoal.set('CalendarId', sharedCalendar.CalendarId); this.headersSharedPessoal = this.headersSharedPessoal.set('CalendarRoleId', sharedCalendar.CalendarRoleId); } }); } - else if(this.loggeduser.Profile == 'PR') { + else if (this.loggeduser.Profile == 'PR') { - this.loggeduser.OwnerCalendars.forEach(calendar =>{ - if(calendar.CalendarName == 'Oficial'){ + this.loggeduser.OwnerCalendars.forEach(calendar => { + if (calendar.CalendarName == 'Oficial') { this.headersPrOficial = this.headersPrOficial.set('Authorization', this.loggeduser.BasicAuthKey); this.headersPrOficial = this.headersPrOficial.set('CalendarId', calendar.CalendarId); this.headersPrOficial = this.headersPrOficial.set('CalendarRoleId', calendar.CalendarRoleId); } - else if(calendar.CalendarName == 'Pessoal') { + else if (calendar.CalendarName == 'Pessoal') { this.headersPrPessoal = this.headersPrPessoal.set('Authorization', this.loggeduser.BasicAuthKey); this.headersPrPessoal = this.headersPrPessoal.set('CalendarId', calendar.CalendarId); this.headersPrPessoal = this.headersPrPessoal.set('CalendarRoleId', calendar.CalendarRoleId); @@ -122,9 +128,9 @@ export class EventsService { } */ - getAllPrOficialEvents(startdate:string, enddate:string): Observable{ + getAllPrOficialEvents(startdate: string, enddate: string): Observable { let geturl = environment.apiURL + 'calendar/pr'; - geturl = geturl.replace('/V4/','/V5/') + geturl = geturl.replace('/V4/', '/V5/') let params = new HttpParams(); @@ -138,9 +144,9 @@ export class EventsService { return this.http.get(`${geturl}`, options); } - getAllPrPessoalEvents(startdate:string, enddate:string): Observable{ + getAllPrPessoalEvents(startdate: string, enddate: string): Observable { let geturl = environment.apiURL + 'calendar/pr'; - geturl = geturl.replace('/V4/','/V5/') + geturl = geturl.replace('/V4/', '/V5/') let params = new HttpParams(); @@ -154,17 +160,17 @@ export class EventsService { return this.http.get(`${geturl}`, options); } - async getAllPrEvents(startdate:string, enddate:string): Promise{ + async getAllPrEvents(startdate: string, enddate: string): Promise { let prO = await this.getAllPrOficialEvents(startdate, enddate).toPromise(); let prP = await this.getAllPrPessoalEvents(startdate, enddate).toPromise(); const resFinal = prO.concat(prP); - return new Promise(resolve =>{ + return new Promise(resolve => { return resolve(resFinal) }) } - getAllMdOficialEvents(startdate:string, enddate:string): Observable{ - let geturl = environment.apiURL + 'calendar/md'; + getAllMdOficialEvents(startdate: string, enddate: string): Observable { + let geturl = environment.apiURL + 'calendar/md'; let params = new HttpParams(); @@ -178,7 +184,7 @@ export class EventsService { return this.http.get(`${geturl}`, options); } - getAllMdPessoalEvents(startdate:string, enddate:string): any{ + getAllMdPessoalEvents(startdate: string, enddate: string): any { let geturl = environment.apiURL + 'calendar/md'; let params = new HttpParams(); @@ -193,30 +199,30 @@ export class EventsService { return this.http.get(`${geturl}`, options) } - async getAllMdEvents(startdate:string, enddate:string) { + async getAllMdEvents(startdate: string, enddate: string) { let prO = await this.getAllMdOficialEvents(startdate, enddate).toPromise(); let prP = await this.getAllMdPessoalEvents(startdate, enddate).toPromise(); const resFinal = prO.concat(prP); - return new Promise(resolve =>{ + return new Promise(resolve => { return resolve(resFinal) }); } - async getAllSharedEvents(startdate:string, enddate:string) { + async getAllSharedEvents(startdate: string, enddate: string) { let prO = await this.getAllSharedOficialEvents(startdate, enddate).toPromise(); let prP = await this.getAllSharedPessoalEvents(startdate, enddate).toPromise(); const resFinal = prO.concat(prP); - return new Promise(resolve =>{ + return new Promise(resolve => { return resolve(resFinal) }); } - getAllSharedOficialEvents(startdate:string, enddate:string): Observable{ + getAllSharedOficialEvents(startdate: string, enddate: string): Observable { let geturl = environment.apiURL + 'calendar/pr'; - geturl = geturl.replace('/V4/','/V5/') + geturl = geturl.replace('/V4/', '/V5/') let params = new HttpParams(); @@ -232,9 +238,9 @@ export class EventsService { return this.http.get(`${geturl}`, options); } - getAllSharedPessoalEvents(startdate:string, enddate:string): Observable{ + getAllSharedPessoalEvents(startdate: string, enddate: string): Observable { let geturl = environment.apiURL + 'calendar/pr'; - geturl = geturl.replace('/V4/','/V5/') + geturl = geturl.replace('/V4/', '/V5/') let params = new HttpParams(); @@ -249,7 +255,7 @@ export class EventsService { } - getRecurrenceTypes(): any{ + getRecurrenceTypes(): any { const geturl = environment.apiURL + 'Calendar/RecurrenceTypes'; let options = { headers: this.headers, @@ -258,7 +264,7 @@ export class EventsService { } - getEvents(calendarname:string, startdate:string, enddate:string): Observable{ + getEvents(calendarname: string, startdate: string, enddate: string): Observable { const geturl = environment.apiURL + 'calendar/GetEvents'; let params = new HttpParams(); @@ -273,7 +279,7 @@ export class EventsService { return this.http.get(`${geturl}`, options); } - getEvent(eventid: string): Observable{ + getEvent(eventid: string): Observable { let geturl = environment.apiURL + 'calendar/GetEvent'; let params = new HttpParams(); @@ -287,8 +293,7 @@ export class EventsService { return this.http.get(`${geturl}`, options); } - putEvent(event: Event, conflictResolutionMode:number, sendInvitationsOrCancellationsMode:number, sharedagenda:string): Observable - { + putEvent(event: Event, conflictResolutionMode: number, sendInvitationsOrCancellationsMode: number, sharedagenda: string): Observable { const puturl = environment.apiURL + 'calendar/' + ((sharedagenda != '') ? sharedagenda : 'PutEvent'); let params = new HttpParams(); @@ -304,32 +309,32 @@ export class EventsService { return this.http.put(`${puturl}`, event, options) } - editEvent(event: Event, conflictResolutionMode:number, sendInvitationsOrCancellationsMode:number): Observable - { + editEvent(event: Event, conflictResolutionMode: number, sendInvitationsOrCancellationsMode: number): Observable { + let arrayReq = []; + arrayReq.push(event); const puturl = environment.apiURL + 'calendar/PutEvent'; - let params = new HttpParams(); params = params.set("conflictResolutionMode", conflictResolutionMode.toString()); params = params.set("sendInvitationsOrCancellationsMode", sendInvitationsOrCancellationsMode.toString()); params.set('CalendarId', event.CalendarId) params.set('CalendarName', event.CalendarName) - this.headers['CalendarId'] = event.CalendarId - this.headers['CalendarName'] = event.CalendarName + this.headers['CalendarId'] = event.CalendarId + this.headers['CalendarName'] = event.CalendarName - if(event.CalendarName == 'Oficial'){ - if(this.loggeduser.Profile == 'MDGPR'){ + if (event.CalendarName == 'Oficial') { + if (this.loggeduser.Profile == 'MDGPR') { this.headers = this.headersMdOficial; } - else if(this.loggeduser.Profile == 'PR'){ + else if (this.loggeduser.Profile == 'PR') { this.headers = this.headersPrOficial; } } - else{ - if(this.loggeduser.Profile == 'MDGPR'){ + else { + if (this.loggeduser.Profile == 'MDGPR') { this.headers = this.headersMdPessoal; } - else if(this.loggeduser.Profile == 'PR'){ + else if (this.loggeduser.Profile == 'PR') { this.headers = this.headersPrPessoal; } } @@ -339,10 +344,15 @@ export class EventsService { params: params }; - return this.http.put(`${puturl}`, event, options) + return this.http.put(`${puturl}`, event, options).pipe( + catchError(err => { + this.offlinemanager.storeRequest(puturl, 'PUT', arrayReq); + throw new Error(err); + }) + ) } - changeAgenda(body:any){ + changeAgenda(body: any) { const puturl = environment.apiURL + 'Calendar/MoveEvent'; let options = { headers: this.headers, @@ -365,14 +375,13 @@ export class EventsService { return this.http.post(`${puturl}`, event, options) } */ - postEventMd(event:Event, calendarName:string) - { + postEventMd(event: Event, calendarName: string) { const puturl = environment.apiURL + 'calendar/md'; let params = new HttpParams(); params = params.set("CalendarName", calendarName); - let options:any; + let options: any; switch (calendarName) { case 'Oficial': console.log(calendarName); @@ -394,14 +403,13 @@ export class EventsService { return this.http.post(`${puturl}`, event, options) } - postEventPr(event:Event, calendarName:string) - { + postEventPr(event: Event, calendarName: string) { const puturl = environment.apiURL + 'calendar/pr'; let params = new HttpParams(); params = params.set("CalendarName", calendarName); - let options:any; + let options: any; switch (calendarName) { case 'Oficial': console.log(calendarName); @@ -423,8 +431,7 @@ export class EventsService { return this.http.post(`${puturl}`, event, options) } - deleteEvent(eventid:string, eventDeleteType:number, calendarName:string) - { + deleteEvent(eventid: string, eventDeleteType: number, calendarName: string) { const puturl = environment.apiURL + 'calendar/DeleteEvent'; let params = new HttpParams(); @@ -436,13 +443,13 @@ export class EventsService { switch (this.loggeduser.Profile) { case 'MDGPR': - if(calendarName == 'Pessoal'){ + if (calendarName == 'Pessoal') { options = { headers: this.headersMdPessoal, params: params }; } - else if(calendarName == 'Oficial'){ + else if (calendarName == 'Oficial') { options = { headers: this.headersMdOficial, params: params @@ -450,13 +457,13 @@ export class EventsService { } break; case 'PR': - if(calendarName == 'Pessoal'){ + if (calendarName == 'Pessoal') { options = { headers: this.headersPrPessoal, params: params }; } - else if(calendarName == 'Oficial'){ + else if (calendarName == 'Oficial') { options = { headers: this.headersPrOficial, params: params @@ -467,8 +474,8 @@ export class EventsService { return this.http.delete(`${puturl}`, options) } - postExpedientEvent(docId:any, body:any, sharedagenda:string, serialNumber:any, applicationID:any){ - const geturl = environment.apiURL + 'calendar/' + ((sharedagenda != '') ? sharedagenda : 'CreateEventExpediente')+'/event'; + postExpedientEvent(docId: any, body: any, sharedagenda: string, serialNumber: any, applicationID: any) { + const geturl = environment.apiURL + 'calendar/' + ((sharedagenda != '') ? sharedagenda : 'CreateEventExpediente') + '/event'; let params = new HttpParams(); let options; @@ -478,13 +485,13 @@ export class EventsService { switch (this.loggeduser.Profile) { case 'MDGPR': - if(body.CalendarName == 'Pessoal'){ + if (body.CalendarName == 'Pessoal') { options = { headers: this.headersMdPessoal, params: params }; } - else if(body.CalendarName == 'Oficial'){ + else if (body.CalendarName == 'Oficial') { options = { headers: this.headersMdOficial, params: params @@ -492,13 +499,13 @@ export class EventsService { } break; case 'PR': - if(body.CalendarName == 'Pessoal'){ + if (body.CalendarName == 'Pessoal') { options = { headers: this.headersPrPessoal, params: params }; } - else if(body.CalendarName == 'Oficial'){ + else if (body.CalendarName == 'Oficial') { options = { headers: this.headersPrOficial, params: params @@ -508,8 +515,8 @@ export class EventsService { } return this.http.post(`${geturl}`, body, options) } - createTaskEvent(folderId:any, body:any, sharedagenda:string, serialNumber:any, applicationID:any){ - const geturl = environment.apiURL + 'calendar/' + ((sharedagenda != '') ? sharedagenda : 'CreateEventExpediente')+'/dispatch'; + createTaskEvent(folderId: any, body: any, sharedagenda: string, serialNumber: any, applicationID: any) { + const geturl = environment.apiURL + 'calendar/' + ((sharedagenda != '') ? sharedagenda : 'CreateEventExpediente') + '/dispatch'; let params = new HttpParams(); let options; @@ -519,13 +526,13 @@ export class EventsService { switch (this.loggeduser.Profile) { case 'MDGPR': - if(body.CalendarName == 'Pessoal'){ + if (body.CalendarName == 'Pessoal') { options = { headers: this.headersMdPessoal, params: params }; } - else if(body.CalendarName == 'Oficial'){ + else if (body.CalendarName == 'Oficial') { options = { headers: this.headersMdOficial, params: params @@ -533,20 +540,20 @@ export class EventsService { } break; case 'PR': - if(body.CalendarName == 'Pessoal'){ + if (body.CalendarName == 'Pessoal') { options = { headers: this.headersPrPessoal, params: params }; } - else if(body.CalendarName == 'Oficial'){ + else if (body.CalendarName == 'Oficial') { options = { headers: this.headersPrOficial, params: params }; } break; - } + } return this.http.post(`${geturl}`, body, options) } diff --git a/src/app/services/functions/file.service.ts b/src/app/services/functions/file.service.ts index d5f3af27b..55483dc5c 100644 --- a/src/app/services/functions/file.service.ts +++ b/src/app/services/functions/file.service.ts @@ -314,7 +314,7 @@ export class FileService { } viewDocumentByUrl(url) { - const browser = this.iab.create(url,"_blank"); + const browser = this.iab.create(url,"_parent"); browser.show(); } } diff --git a/src/app/services/functions/sort.service.ts b/src/app/services/functions/sort.service.ts index 58c866878..9d580897b 100644 --- a/src/app/services/functions/sort.service.ts +++ b/src/app/services/functions/sort.service.ts @@ -8,14 +8,18 @@ export class SortService { constructor() { } sortArrayISODate(myArray: any) { - return myArray.sort(function (a, b) { - return (a.CreateDate < b.CreateDate) ? -1 : ((a.CreateDate > b.CreateDate) ? 1 : 0); - }); + if(myArray.length > 0){ + return myArray.sort(function (a, b) { + return (a.CreateDate < b.CreateDate) ? -1 : ((a.CreateDate > b.CreateDate) ? 1 : 0); + }); + } } sortArrayByDate(myArray: any) { console.log(myArray[0].taskStartDate); - return myArray.sort(function (a, b) { - return (new Date(a.workflowInstanceDataFields.StartDate) < new Date(b.workflowInstanceDataFields.StartDate)) ? -1 : ((new Date(a.workflowInstanceDataFields.StartDate) > new Date(b.workflowInstanceDataFields.StartDate)) ? 1 : 0); - }); + if(myArray.length > 0){ + return myArray.sort(function (a, b) { + return (new Date(a.workflowInstanceDataFields.StartDate) < new Date(b.workflowInstanceDataFields.StartDate)) ? -1 : ((new Date(a.workflowInstanceDataFields.StartDate) > new Date(b.workflowInstanceDataFields.StartDate)) ? 1 : 0); + }); + } } } diff --git a/src/app/services/network-connection.service.spec.ts b/src/app/services/network-connection.service.spec.ts new file mode 100644 index 000000000..f4a185493 --- /dev/null +++ b/src/app/services/network-connection.service.spec.ts @@ -0,0 +1,16 @@ +import { TestBed } from '@angular/core/testing'; + +import { NetworkConnectionService } from './network-connection.service'; + +describe('NetworkConnectionService', () => { + let service: NetworkConnectionService; + + beforeEach(() => { + TestBed.configureTestingModule({}); + service = TestBed.inject(NetworkConnectionService); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); +}); diff --git a/src/app/services/network-connection.service.ts b/src/app/services/network-connection.service.ts new file mode 100644 index 000000000..b9bfb446b --- /dev/null +++ b/src/app/services/network-connection.service.ts @@ -0,0 +1,28 @@ +import { Injectable } from '@angular/core'; +import { BehaviorSubject, Observable } from 'rxjs' +import { Platform } from '@ionic/angular' + +@Injectable({ + providedIn: 'root' +}) + +export class NetworkConnectionService { + online: boolean = true; + + constructor(){} + + checkOnline() { + window.addEventListener('online', (on) => { + this.online === true; + console.log('Became online'); + }); + } + + checkOffline() { + window.addEventListener('offline', (off) => { + this.online === false; + console.log('Became offline') + }); + } + +} \ No newline at end of file diff --git a/src/app/services/notifications.service.ts b/src/app/services/notifications.service.ts index 96ecd49dc..6f7fec31e 100644 --- a/src/app/services/notifications.service.ts +++ b/src/app/services/notifications.service.ts @@ -12,7 +12,7 @@ import { ModalController, AlertController, AnimationController, Platform } from import { NavigationExtras,Router } from '@angular/router'; import { ToastService } from '../services/toast.service'; import { JsonStore } from './jsonStore.service'; -import { synchro } from './socket/synchro.service'; +import { BackgroundService } from './background.service'; import { v4 as uuidv4 } from 'uuid'; import { EventTrigger } from '../services/eventTrigger.service'; import { SessionStore } from '../store/session.service'; @@ -44,7 +44,8 @@ export class NotificationsService { private zone: NgZone, private activeroute: ActivatedRoute, private jsonstore: JsonStore, - private eventtrigger: EventTrigger) { + private eventtrigger: EventTrigger, + private backgroundservice: BackgroundService) { this.storageService.get("Notifications").then((value) => { @@ -60,7 +61,7 @@ export class NotificationsService { const id = uuidv4() this.callbacks.push({type, funx, id}) if(!object.hasOwnProperty('desktop') && object['desktop'] != false) { - synchro.registerCallback('Notification',funx, type) + this.backgroundservice.registerBackService('Notification',funx, type) } return id; @@ -108,7 +109,9 @@ export class NotificationsService { window['MFPPush'].registerDevice(null, async (successResponse) => { console.log("Successfully registered: " + JSON.stringify(successResponse)); console.log('token: ', successResponse.deviceId) - await this.storageService.store(username, successResponse.deviceId); + await this.storageService.store(username, successResponse.deviceId).then((tokennoti) => { + console.log('token store',tokennoti) + }); await this.storageService.get(username).then(value => { console.log('STORAGE TOKEN', value) this.storageService.get(AuthConnstants.USER).then(res => { @@ -176,7 +179,7 @@ export class NotificationsService { }) var data = JSON.parse(message.payload); - synchro.$send(data) + //synchro.$send(data) console.log('data.Service', data.Service); // module console.log('data.IdObject', data.IdObject); // Object id diff --git a/src/app/services/offline-manager.service.spec.ts b/src/app/services/offline-manager.service.spec.ts new file mode 100644 index 000000000..d6cd18851 --- /dev/null +++ b/src/app/services/offline-manager.service.spec.ts @@ -0,0 +1,16 @@ +import { TestBed } from '@angular/core/testing'; + +import { OfflineManagerService } from './offline-manager.service'; + +describe('OfflineManagerService', () => { + let service: OfflineManagerService; + + beforeEach(() => { + TestBed.configureTestingModule({}); + service = TestBed.inject(OfflineManagerService); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); +}); diff --git a/src/app/services/offline-manager.service.ts b/src/app/services/offline-manager.service.ts new file mode 100644 index 000000000..2e44f1624 --- /dev/null +++ b/src/app/services/offline-manager.service.ts @@ -0,0 +1,94 @@ +import { Injectable } from '@angular/core'; +import { Storage } from '@ionic/storage'; +import { Observable, from, of, forkJoin } from 'rxjs'; +import { switchMap, finalize } from 'rxjs/operators'; +import { HttpClient } from '@angular/common/http'; +import { ToastController } from '@ionic/angular'; +const STORAGE_REQ_KEY = 'storedreq'; + +interface StoredRequest { + url: string, + type: string, + data: any, + time: number, + id: string +} + +@Injectable({ + providedIn: 'root' +}) +export class OfflineManagerService { + + constructor( + private storage: Storage, + private http: HttpClient, + private toastController: ToastController) { } + + checkForEvents(): Observable { + return from(this.storage.get(STORAGE_REQ_KEY)).pipe( + switchMap(storedOperations => { + let storedObj = JSON.parse(storedOperations); + if (storedObj && storedObj.length > 0) { + return this.sendRequests(storedObj).pipe( + finalize(() => { + let toast = this.toastController.create({ + message: `Local data succesfully synced to API!`, + duration: 3000, + position: 'bottom' + }); + toast.then(toast => toast.present()); + + this.storage.remove(STORAGE_REQ_KEY); + }) + ); + } else { + console.log('no local events to sync'); + return of(false); + } + }) + ) + } + + storeRequest(url, type, data) { + let toast = this.toastController.create({ + message: `Your data is stored locally because you seem to be offline.`, + duration: 3000, + position: 'bottom' + }); + toast.then(toast => toast.present()); + + let action: StoredRequest = { + url: url, + type: type, + data: data, + time: new Date().getTime(), + id: Math.random().toString(36).replace(/[^a-z]+/g, '').substr(0, 5) + }; + + return this.storage.get(STORAGE_REQ_KEY).then(storedOperations => { + let storedObj = JSON.parse(storedOperations); + + if (storedObj) { + storedObj.push(action); + } else { + storedObj = [action]; + } + // Save old & new local transactions back to Storage + return this.storage.set(STORAGE_REQ_KEY, JSON.stringify(storedObj)); + }); + } + + sendRequests(operations: StoredRequest[]) { + let obs = []; + + for (let op of operations) { + console.log('Make one request: ', op); + let oneObs = this.http.request(op.type, op.url, op.data); + + obs.push(oneObs); + } + + // Send out all local events and return once they are finished + return forkJoin(obs); + } +} \ No newline at end of file diff --git a/src/app/services/socket/synchro.service.ts b/src/app/services/socket/synchro.service.ts index e562513ab..7f5cd2994 100644 --- a/src/app/services/socket/synchro.service.ts +++ b/src/app/services/socket/synchro.service.ts @@ -21,7 +21,7 @@ export interface wss { providedIn: 'root' }) class SynchroService { - [x: string]: any; + /* [x: string]: any; private connection!: WebSocket; private id: string = uuidv4(); @@ -86,7 +86,7 @@ class SynchroService { //if (this._connected === true) { - this.BackgroundService.online() + //this.BackgroundService.online() console.log('Online', this._connected) this.callBacks.forEach((e) => { if (e.type == 'Online') { @@ -183,7 +183,7 @@ class SynchroService { // if (this._connected === false) { - this.BackgroundService.offline(); + // this.BackgroundService.offline(); console.log('Offline', this._connected) this.callBacks.forEach((e) => { if (e.type == 'Offline') { @@ -204,12 +204,12 @@ class SynchroService { private onerror = (event: any) => { console.log(`[error] ${event.message}`); - } + } */ } -export const synchro = new SynchroService() +/* export const synchro = new SynchroService() synchro.setUrl() synchro.connect() -window['synchro'] = synchro \ No newline at end of file +window['synchro'] = synchro */ \ No newline at end of file diff --git a/src/app/services/sqlite.service.ts b/src/app/services/sqlite.service.ts index 8dc23a568..18f451a31 100644 --- a/src/app/services/sqlite.service.ts +++ b/src/app/services/sqlite.service.ts @@ -182,6 +182,20 @@ export class SqliteService { }); } + //updateevent + public updateEvent(data) { + this.dbInstance.executeSql(` + INSERT OR REPLACE INTO ${this.events} (EventId,Subject,HasAttachments,Location,CalendarId,CalendarName,StartDate,EndDate,EventType,Attendees,IsMeeting,IsRecurring,IsAllDayEvent,AppointmentState,TimeZone,Organizer,Category,EventRecurrence,Attachments,Body,Profile,HumanDate ) + VALUES ('${data.EventId}','${data.Subject}','${data.HasAttachments}','${data.Location}','${data.CalendarId}','${data.CalendarName}','${data.StartDate}','${data.EndDate}','${data.EventType}','${data.Attendees}','${data.IsMeeting}','${data.IsRecurring}', + '${data.IsAllDayEvent}','${data.AppointmentState}','${data.TimeZone}','${data.Organizer}','${data.Category}','${data.EventRecurrence}','${data.Attachments}','${data.Body}','${data.Profile}','${data.HumanDate}')`, []) + .then(() => { + console.log("event update with Success"); + + }, (e) => { + console.log(JSON.stringify(e)); + }); + } + //updateActions public updateactions(id,data) { console.log("update action data", data ) @@ -359,6 +373,7 @@ export class SqliteService { if (res.rows.length > 0) { for (var i = 0; i < res.rows.length; i++) { this.ALLPROCESS.push(res.rows.item(i)); + console.log('getEXPEDIENTE DB LOOP') } return this.ALLPROCESS; } diff --git a/src/app/shared/chat/messages/messages.page.html b/src/app/shared/chat/messages/messages.page.html index 1fc04fa76..648d9ed68 100644 --- a/src/app/shared/chat/messages/messages.page.html +++ b/src/app/shared/chat/messages/messages.page.html @@ -12,6 +12,10 @@
+