diff --git a/src/app/home/home-routing.module.ts b/src/app/home/home-routing.module.ts index f07e7867c..cc9c5c97e 100644 --- a/src/app/home/home-routing.module.ts +++ b/src/app/home/home-routing.module.ts @@ -5,6 +5,7 @@ import { HomeGuard } from '../guards/home.guard'; import { LoginGuard } from '../guards/login.guard'; import { GroupMessagesPage } from '../pages/chat/group-messages/group-messages.page'; import { MessagesPage } from '../pages/chat/messages/messages.page'; +import { PendentesResolverService } from '../resolvers/pendentes-resolver.service'; import { ProcessesResolverService } from '../resolvers/processes-resolver.service'; import { UserDataResolver } from '../resolvers/userData.resolver'; import { DiplomasPage } from '../shared/gabinete-digital/diplomas/diplomas.page'; @@ -142,9 +143,6 @@ const routes: Routes = [ }, { path: 'gabinete-digital', - resolve: { - diplomas: ProcessesResolverService - }, children: [ { path:'', diff --git a/src/app/models/agenda/eventrecurrence.model.ts b/src/app/models/agenda/eventrecurrence.model.ts new file mode 100644 index 000000000..a62224831 --- /dev/null +++ b/src/app/models/agenda/eventrecurrence.model.ts @@ -0,0 +1,11 @@ +export class EventRecurrence{ + Type: string; + Day?: number; + DayOfWeek?:number; + Month?: number; + LastOcurrence?: Date; + + /* public EventRecurrence(){ + this.Type = "-1"; + } */ +} \ No newline at end of file diff --git a/src/app/models/event.model.ts b/src/app/models/event.model.ts index 831bbf1e7..3df19a86d 100644 --- a/src/app/models/event.model.ts +++ b/src/app/models/event.model.ts @@ -1,6 +1,6 @@ +import { EventRecurrence } from './agenda/eventrecurrence.model'; import { EventBody } from './eventbody.model'; import { EventPerson } from './eventperson.model'; -import { SearchDocument } from './search-document'; export class Event{ ParentId?: string; @@ -20,8 +20,12 @@ export class Event{ TimeZone: string; Organizer: string; Categories: string[]; - HasAttachments: boolean; - // documents?: SearchDocument[] + HasAttachments: boolean; + EventRecurrence?: EventRecurrence; + + /* public Event(){ + this.EventRecurrence = new EventRecurrence(); + } */ } export class EventToApproveEdit { diff --git a/src/app/pages/agenda/agenda.page.ts b/src/app/pages/agenda/agenda.page.ts index c09dca1f4..d03ca0d63 100644 --- a/src/app/pages/agenda/agenda.page.ts +++ b/src/app/pages/agenda/agenda.page.ts @@ -556,7 +556,7 @@ export class AgendaPage implements OnInit { } - else { + else if(this.loggeduser.Profile == 'PR') { 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) => { diff --git a/src/app/pages/agenda/edit-event/edit-event.page.html b/src/app/pages/agenda/edit-event/edit-event.page.html index a167d9ae2..5e5d2fb38 100644 --- a/src/app/pages/agenda/edit-event/edit-event.page.html +++ b/src/app/pages/agenda/edit-event/edit-event.page.html @@ -151,24 +151,45 @@ - +
-
- + - Não se repete - Repete + {{recurring.Description}}
+ +
+
+
+ +
+
+ + + +
+
+
+
diff --git a/src/app/pages/agenda/edit-event/edit-event.page.ts b/src/app/pages/agenda/edit-event/edit-event.page.ts index 75dfabae1..a2f2f4cdd 100644 --- a/src/app/pages/agenda/edit-event/edit-event.page.ts +++ b/src/app/pages/agenda/edit-event/edit-event.page.ts @@ -36,6 +36,8 @@ export class EditEventPage implements OnInit { minDate: string; initCalendarName: string; caller:string; + recurringTypes: any; + selectedRecurringType: any; loadedEventAttachments: Attachment[] = []; @@ -56,10 +58,10 @@ export class EditEventPage implements OnInit { private router: Router, ) { - - + this.postEvent = new Event(); this.isEventEdited = false; this.postEvent = this.navParams.get('event'); + this.postEvent.EventRecurrence = {Type:'-1'}; this.caller = this.navParams.get('caller'); this.initCalendarName = this.postEvent.CalendarName; @@ -97,8 +99,7 @@ export class EditEventPage implements OnInit { } ngOnInit() { - - console.log(this.caller); + this.selectedRecurringType = "-1"; window.onresize = (event) => { // if not mobile remove all component @@ -109,6 +110,8 @@ export class EditEventPage implements OnInit { if(window.innerWidth > 800){ this.showAttendees=true; } + + this.getRecurrenceTypes(); } @@ -121,6 +124,24 @@ export class EditEventPage implements OnInit { this.router.navigate(['/home',this.caller]); } + getRecurrenceTypes() { + this.eventsService.getRecurrenceTypes().subscribe(res=>{ + console.log(res); + this.recurringTypes = res; + }); + } + + onSelectedRecurringChanged(ev:any){ + console.log(ev); + if(ev.length > 1){ + console.log(ev.filter(data => data != '-1')); + this.selectedRecurringType = ev.filter(data => data != '-1'); + } + if(ev.length == 0){ + this.selectedRecurringType = "-1"; + } + } + runValidation() { this.validateFrom = true @@ -162,6 +183,9 @@ export class EditEventPage implements OnInit { this.postEvent.Attendees = this.taskParticipants.concat(this.taskParticipantsCc) try{ + console.log(this.postEvent); + this.postEvent.EventRecurrence.Type = this.selectedRecurringType; + this.eventsService.editEvent(this.postEvent, 2, 3).subscribe(async () => { if(this.initCalendarName != this.postEvent.CalendarName){ let body = { diff --git a/src/app/pages/agenda/new-event/new-event.page.html b/src/app/pages/agenda/new-event/new-event.page.html index 0ee91705b..58a8a76e5 100644 --- a/src/app/pages/agenda/new-event/new-event.page.html +++ b/src/app/pages/agenda/new-event/new-event.page.html @@ -154,20 +154,44 @@
-
+
-
- - Não se repete - Repete +
+ + {{recurring.Description}}
+
+
+
+ +
+
+ + + +
+
+
+
diff --git a/src/app/pages/agenda/new-event/new-event.page.ts b/src/app/pages/agenda/new-event/new-event.page.ts index a9e11a2b2..4ec826d8c 100644 --- a/src/app/pages/agenda/new-event/new-event.page.ts +++ b/src/app/pages/agenda/new-event/new-event.page.ts @@ -14,6 +14,7 @@ import { AttendeesPageModal } from '../../events/attendees/attendees.page'; import { SearchPage } from '../../search/search.page'; import { ThemePalette } from '@angular/material/core'; import { FormControl, FormGroup, Validators } from '@angular/forms'; +import { EventRecurrence } from 'src/app/models/agenda/eventrecurrence.model'; @Component({ @@ -47,6 +48,8 @@ export class NewEventPage implements OnInit { eventAttendees: EventPerson[]; selectedSegment: string; selectedDate: Date; + recurringTypes: any; + selectedRecurringType: any; adding: "intervenient" | "CC"; @@ -68,6 +71,7 @@ export class NewEventPage implements OnInit { ) { this.loggeduser = userService.ValidatedUser; this.postEvent = new Event(); + this.postEvent.EventRecurrence = {Type:'-1'}; this.eventBody = { BodyType : "1", Text : ""}; this.postEvent.Body = this.eventBody; /* this.profile = this.navParams.get('profile'); */ @@ -81,6 +85,8 @@ export class NewEventPage implements OnInit { } ngOnInit() { + this.selectedRecurringType = "-1"; + this.getRecurrenceTypes(); /* console.log(this.profile); */ @@ -108,6 +114,7 @@ export class NewEventPage implements OnInit { Organizer: '', Categories: ['Reunião'], HasAttachments: false, + EventRecurrence: {Type:'-1'}, }; } else{ @@ -129,6 +136,7 @@ export class NewEventPage implements OnInit { Organizer: '', Categories: ['Reunião'], HasAttachments: false, + EventRecurrence: {Type:'-1'}, }; } @@ -144,6 +152,25 @@ export class NewEventPage implements OnInit { close(){ this.modalController.dismiss(); } + + + getRecurrenceTypes() { + this.eventService.getRecurrenceTypes().subscribe(res=>{ + console.log(res); + this.recurringTypes = res; + }); + } + + onSelectedRecurringChanged(ev:any){ + console.log(ev); + if(ev.length > 1){ + console.log(ev.filter(data => data != '-1')); + this.selectedRecurringType = ev.filter(data => data != '-1'); + } + if(ev.length == 0){ + this.selectedRecurringType = "-1"; + } + } runValidation() { @@ -197,6 +224,9 @@ export class NewEventPage implements OnInit { if(this.documents.length >= 0) { this.postEvent.HasAttachments = true; } + if(this.selectedRecurringType != '-1'){ + this.postEvent.EventRecurrence.Type = this.selectedRecurringType; + } let eventId: any; @@ -204,6 +234,8 @@ export class NewEventPage implements OnInit { if(this.loggeduser.Profile == 'MDGPR') { console.log(this.loggeduser.Profile); + + console.log(this.postEvent); eventId = await this.eventService.postEventMd(this.postEvent, this.postEvent.CalendarName).toPromise(); console.log(eventId); diff --git a/src/app/pages/gabinete-digital/expediente/book-meeting-modal/book-meeting-modal.page.ts b/src/app/pages/gabinete-digital/expediente/book-meeting-modal/book-meeting-modal.page.ts index c3eb314df..e31a94a0e 100644 --- a/src/app/pages/gabinete-digital/expediente/book-meeting-modal/book-meeting-modal.page.ts +++ b/src/app/pages/gabinete-digital/expediente/book-meeting-modal/book-meeting-modal.page.ts @@ -246,6 +246,7 @@ export class BookMeetingModalPage implements OnInit { Organizer: null, Categories: null, HasAttachments: true, + EventRecurrence: null, } console.log(this.postData); diff --git a/src/app/pages/gabinete-digital/expedientes-pr/expedientes-pr.page.html b/src/app/pages/gabinete-digital/expedientes-pr/expedientes-pr.page.html index d2dbf3ede..2c0bca6ff 100644 --- a/src/app/pages/gabinete-digital/expedientes-pr/expedientes-pr.page.html +++ b/src/app/pages/gabinete-digital/expedientes-pr/expedientes-pr.page.html @@ -9,7 +9,7 @@
Expediente
-
diff --git a/src/app/pages/gabinete-digital/pendentes/pendentes.page.html b/src/app/pages/gabinete-digital/pendentes/pendentes.page.html index cf7806367..f917efde2 100644 --- a/src/app/pages/gabinete-digital/pendentes/pendentes.page.html +++ b/src/app/pages/gabinete-digital/pendentes/pendentes.page.html @@ -27,8 +27,8 @@ -
-
+
+
- diff --git a/src/app/pages/gabinete-digital/pendentes/pendentes.page.ts b/src/app/pages/gabinete-digital/pendentes/pendentes.page.ts index 5b26ddcc8..3d9309608 100644 --- a/src/app/pages/gabinete-digital/pendentes/pendentes.page.ts +++ b/src/app/pages/gabinete-digital/pendentes/pendentes.page.ts @@ -1,15 +1,11 @@ import { Component, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core'; -import { NavigationExtras, Router } from '@angular/router'; +import { ActivatedRoute, NavigationEnd, Router } from '@angular/router'; import { CalendarComponent } from 'ionic2-calendar'; - +import { removeDuplicate } from 'src/plugin/removeDuplicate.js' import { DailyWorkTask } from '../../../models/dailyworktask.model'; import { ProcessesService } from 'src/app/services/processes.service'; import { formatDate } from '@angular/common'; -import { ModalController, NavParams } from '@ionic/angular'; import { AlertService } from 'src/app/services/alert.service'; -import { DespachoPage } from 'src/app/pages/gabinete-digital/despachos/despacho/despacho.page'; -import { AuthService } from 'src/app/services/auth.service'; -import { PedidoPage } from 'src/app/pages/gabinete-digital/pedidos/pedido/pedido.page'; @Component({ @@ -32,10 +28,9 @@ export class PendentesPage implements OnInit { constructor( private processes:ProcessesService, - private modalController: ModalController, private alertService: AlertService, - private authService: AuthService, private router: Router, + private activatedRoute: ActivatedRoute, ) { this.profile = 'mdgpr'; } @@ -43,11 +38,15 @@ export class PendentesPage implements OnInit { ngOnInit() { //Inicializar segment this.segment = "despachos"; - this.LoadList(); + this.router.events.forEach((event) => { + if(event instanceof NavigationEnd && event.url == this.router.url) { + this.refreshing(); + } + }); } segmentChanged(ev: any) { - this.LoadList(); + this.refreshing(); } goBack() { @@ -98,6 +97,7 @@ export class PendentesPage implements OnInit { "Status": element.workflowInstanceDataFields.Status, } this.pendentesList.push(task); + this.pendentesList = removeDuplicate( this.pendentesList) }, (error)=>{ let task = { @@ -114,10 +114,17 @@ export class PendentesPage implements OnInit { "Status": element.workflowInstanceDataFields.Status, } this.pendentesList.push(task); + this.pendentesList = removeDuplicate( this.pendentesList) }); }); this.showLoader = false; } + + async refreshing() { + setTimeout(() => { + this.LoadList(); + }, 1500); + } doRefresh(event) { this.LoadList(); diff --git a/src/app/resolvers/pendentes-resolver.service.spec.ts b/src/app/resolvers/pendentes-resolver.service.spec.ts new file mode 100644 index 000000000..3a816d759 --- /dev/null +++ b/src/app/resolvers/pendentes-resolver.service.spec.ts @@ -0,0 +1,16 @@ +import { TestBed } from '@angular/core/testing'; + +import { PendentesResolverService } from './pendentes-resolver.service'; + +describe('PendentesResolverService', () => { + let service: PendentesResolverService; + + beforeEach(() => { + TestBed.configureTestingModule({}); + service = TestBed.inject(PendentesResolverService); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); +}); diff --git a/src/app/resolvers/pendentes-resolver.service.ts b/src/app/resolvers/pendentes-resolver.service.ts new file mode 100644 index 000000000..d7adabe52 --- /dev/null +++ b/src/app/resolvers/pendentes-resolver.service.ts @@ -0,0 +1,28 @@ +import { Injectable } from '@angular/core'; +import { ActivatedRouteSnapshot, Resolve, RouterStateSnapshot } from '@angular/router'; +import { Observable } from 'rxjs'; +import { ProcessesService } from '../services/processes.service'; + +@Injectable({ + providedIn: 'root' +}) +export class PendentesResolverService implements Resolve { + + constructor( + private processesService: ProcessesService, + ) { } + + async resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): + Promise { + + let despachos = await this.processesService.GetTasksList("Despacho", false).toPromise(); + let pareceres = await this.processesService.GetTasksList("Pedido de Parecer", false).toPromise(); + let deferimentos = await this.processesService.GetTasksList("Pedido de Deferimento", false).toPromise(); + let expedientes = await this.processesService.GetTasksList("Expediente", false).toPromise(); + let expedientes_pr = await this.processesService.GetTasksList("Expediente do Presidente", false).toPromise(); + + let pendentes = despachos.concat(pareceres, deferimentos, expedientes, expedientes_pr).filter(data => data.workflowInstanceDataFields.Status == "Pending"); + + return pendentes; + } +} diff --git a/src/app/services/events.service.ts b/src/app/services/events.service.ts index 52381241d..3179d1616 100644 --- a/src/app/services/events.service.ts +++ b/src/app/services/events.service.ts @@ -200,6 +200,8 @@ export class EventsService { headers: this.headersSharedOficial, params: params }; + console.log(options); + return this.http.get(`${geturl}`, options); } @@ -228,6 +230,14 @@ export class EventsService { }); } + getRecurrenceTypes(): any{ + const geturl = environment.apiURL + 'Calendar/RecurrenceTypes'; + let options = { + headers: this.headers, + }; + return this.http.get(`${geturl}`, options); + } + diff --git a/src/app/shared/agenda/new-event/new-event.page.ts b/src/app/shared/agenda/new-event/new-event.page.ts index 0cd20dbb0..1bdd7e343 100644 --- a/src/app/shared/agenda/new-event/new-event.page.ts +++ b/src/app/shared/agenda/new-event/new-event.page.ts @@ -173,6 +173,7 @@ export class NewEventPage implements OnInit { Organizer: '', Categories: ['Reunião'], HasAttachments: false, + EventRecurrence: null, }; } else{ @@ -194,6 +195,7 @@ export class NewEventPage implements OnInit { Organizer: '', Categories: ['Reunião'], HasAttachments: false, + EventRecurrence: null, }; } diff --git a/src/app/shared/gabinete-digital/expedientes-pr/expedientes-pr.page.html b/src/app/shared/gabinete-digital/expedientes-pr/expedientes-pr.page.html index 2d8f048d2..2e6981968 100644 --- a/src/app/shared/gabinete-digital/expedientes-pr/expedientes-pr.page.html +++ b/src/app/shared/gabinete-digital/expedientes-pr/expedientes-pr.page.html @@ -2,18 +2,13 @@
Expediente
-
- - - - -
diff --git a/src/app/shared/gabinete-digital/expedientes-pr/expedientes-pr.page.ts b/src/app/shared/gabinete-digital/expedientes-pr/expedientes-pr.page.ts index 62bfd8120..e945a551d 100644 --- a/src/app/shared/gabinete-digital/expedientes-pr/expedientes-pr.page.ts +++ b/src/app/shared/gabinete-digital/expedientes-pr/expedientes-pr.page.ts @@ -117,9 +117,10 @@ export class ExpedientesPrPage implements OnInit { }, 1500); } - doRefresh() { + doRefresh(event) { this.LoadList(); setTimeout(() => { + event.target.complete(); }, 2000); }