diff --git a/src/app/models/entiry/agenda/eventToApproveList.ts b/src/app/models/entiry/agenda/eventToApproveList.ts index f1191c95a..7f77b220a 100644 --- a/src/app/models/entiry/agenda/eventToApproveList.ts +++ b/src/app/models/entiry/agenda/eventToApproveList.ts @@ -1,5 +1,27 @@ import { z } from 'zod'; +// { +// "serialNumber": "48002_71", +// "taskStatus": "Open", +// "taskStartDate": "2024-04-29T09:41:15.847", +// "taskReceiveDate": "2024-04-29T09:41:21.707", +// "deadline": null, +// "workflowDisplayName": "Agenda Pessoal MDGPR", +// "activityInstanceName": "Aprovar Evento", +// "totalDocuments": 1, +// "workflowInstanceDataFields": { +// "Agenda": "Pessoal", +// "EndDate": "2024-04-30 09:45:00", +// "StartDate": "2024-04-29 09:45:00", +// "Subject": "Encontro", +// "Location": "Luanda", +// "Status": "Active", +// "IsAllDayEvent": false, +// "InstanceId": "AGD_dlima_2024-04-29_09:41:15.572", +// "originator": "dlima@gabinetedigital.local" +// } +// }, + const WorkflowInstanceDataFieldsSchema = z.object({ Agenda: z.string(), EndDate: z.string(), diff --git a/src/app/pages/gabinete-digital/event-list/approve-event/approve-event.page.html b/src/app/pages/gabinete-digital/event-list/approve-event/approve-event.page.html index a94cdaab3..6553412c2 100644 --- a/src/app/pages/gabinete-digital/event-list/approve-event/approve-event.page.html +++ b/src/app/pages/gabinete-digital/event-list/approve-event/approve-event.page.html @@ -5,7 +5,7 @@
- Evento Pendente de Aprovação + Evento Pendente de Aprovação 5
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 acba86506..6cf7e9d8a 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 @@ -16,7 +16,7 @@ import { RouteService } from 'src/app/services/route.service'; import { HttpErrorHandle } from 'src/app/services/http-error-handle.service'; import { TaskService } from 'src/app/services/task.service'; import { AttachmentsService } from 'src/app/services/attachments.service'; - +import { AgendaDataRepositoryService } from 'src/app/services/Repositorys/Agenda/agenda-data-repository.service'; @Component({ selector: 'app-approve-event', @@ -59,6 +59,7 @@ export class ApproveEventPage implements OnInit { private httpErrorHandle: HttpErrorHandle, public TaskService: TaskService, private attachmentsService: AttachmentsService, + public AgendaDataRepositoryService: AgendaDataRepositoryService ) { this.activatedRoute.paramMap.subscribe(params => { // @@ -128,28 +129,18 @@ export class ApproveEventPage implements OnInit { } async getTask () { - this.processes.GetTask(this.serialNumber).subscribe(async res => { - this.loadedEvent = res - this.getAttachments(); - this.addProcessToDB(this.loadedEvent) + const res = await this.AgendaDataRepositoryService.getEventToApproveById(this.serialNumber) - try { - this.today = new Date(this.loadedEvent.workflowInstanceDataFields.StartDate); - this.customDate = this.days[this.today.getDay()] + ", " + this.today.getDate() + " de " + (this.months[this.today.getMonth()]); - - } catch(error) { - // console.log(this.loadedEvent) - throw(error) - } - - }, (error) => { - if(error.status == 0) { - this.getProcessFromDB(); - } else { - this.httpErrorHandle.httpStatusHandle(error) - } - }) + if(res.isOk()) { + this.loadedEvent = res.value; + this.today = new Date(res.value.workflowInstanceDataFields.StartDate); + // + this.customDate = this.days[this.today.getDay()]+ ", " + this.today.getDate() +" de " + ( this.months[this.today.getMonth()]); + } else { + console.log(res.error.status) + this.httpErrorHandle.httpStatusHandle(res.error) + } } async approveTask(serialNumber: string) { diff --git a/src/app/services/Repositorys/Agenda/agenda-data-repository.service.ts b/src/app/services/Repositorys/Agenda/agenda-data-repository.service.ts index 16b6574af..f25beb037 100644 --- a/src/app/services/Repositorys/Agenda/agenda-data-repository.service.ts +++ b/src/app/services/Repositorys/Agenda/agenda-data-repository.service.ts @@ -64,13 +64,19 @@ export class AgendaDataRepositoryService { } } - eventToApproveList({userId, startDate = null, endDate = null, status = 0, category= null, type= null, calendarOwnerName = ''}) { + async eventToApproveList({userId, startDate = null, endDate = null, status = 0, category= null, type= null, calendarOwnerName = ''}) { - return this.agendaDataService.getEvents(userId, startDate = null, endDate = null, status, category= null, type= null).pipe( - map((response) => { - return EventListToApproveMapper.toDomain(response.data, calendarOwnerName, userId) - } - )) + try { + const result = await this.agendaDataService.getEvents(userId, startDate = null, endDate = null, status, category= null, type= null).pipe( + map((response) => { + return EventListToApproveMapper.toDomain(response.data, calendarOwnerName, userId) + } + )).toPromise() + + return ok (result) + } catch (e) { + return err(e as HttpErrorResponse) + } } createEvent(eventData: Event,CalendarName,documents) { diff --git a/src/app/services/Repositorys/Agenda/mapper/EventToApproveDetailsMapper.ts b/src/app/services/Repositorys/Agenda/mapper/EventToApproveDetailsMapper.ts index 5ab19024a..69d7bab77 100644 --- a/src/app/services/Repositorys/Agenda/mapper/EventToApproveDetailsMapper.ts +++ b/src/app/services/Repositorys/Agenda/mapper/EventToApproveDetailsMapper.ts @@ -6,6 +6,23 @@ export class EventToApproveDetailsMapper { constructor() {} static toDomain(dto: EventOutputDTO): EventToApproveDetails { + const category = dto.category + let color; + + if(dto.ownerType != 'PR') { + color = 'MDGPR' + } else { + color = 'PR' + } + + let activityInstanceName; + + if(dto.status == 'Pending') { + activityInstanceName = 'Aprovar Evento' + } else if (dto.status == 'Revision') { + activityInstanceName = 'Editar Evento' + } + return { "serialNumber": dto.id, "taskStatus": dto.status, @@ -23,14 +40,14 @@ export class EventToApproveDetailsMapper { // "Reenviar", // "Descartar" // ], - "activityInstanceName": "Editar Evento", + "activityInstanceName": activityInstanceName, // "workflowInstanceFolio": "MTk4", // "taskStartDate": "2024-04-10T14:30:39.58", // "deadline": null, // "workflowID": 24744, // "workflowInstanceID": 47026, //"workflowName": "Agenda\\Agenda Oficial MDGPR", - "workflowDisplayName": "Agenda Oficial MDGPR", + "workflowDisplayName": `Agenda ${category} ${color}`, //"formURL": "http://bpmdev.gabinetedigital.local/Runtime/Runtime/Form/Exchange+Calendar+Meeting+Edition/?SerialNo=47026_169&ProcessInstanceID=&InstanceId=", "workflowInstanceDataFields": { "Body": "safsafas", diff --git a/src/app/services/Repositorys/Agenda/mapper/eventToApproveListMapper.ts b/src/app/services/Repositorys/Agenda/mapper/eventToApproveListMapper.ts index 985192937..48970d935 100644 --- a/src/app/services/Repositorys/Agenda/mapper/eventToApproveListMapper.ts +++ b/src/app/services/Repositorys/Agenda/mapper/eventToApproveListMapper.ts @@ -15,28 +15,46 @@ function getTextInsideParentheses(inputString): string { } export class EventListToApproveMapper { - static toDomain(dto: EventToApproveListOutputDTO, calendarOwnerName: string, userId: string): EventToApproveList { - return dto.map((e) => ({ - serialNumber: e.id, - taskStatus: e.status, - taskStartDate: e.startDate, - taskReceiveDate: e.startDate, - deadline: null, - workflowDisplayName: "", - activityInstanceName: "", - totalDocuments: 0, - workflowInstanceDataFields: { - Agenda: e.category, - EndDate: e.endDate, - StartDate: e.startDate, - Subject: e.body, - Location: e.location, - Status: e.status, - IsAllDayEvent: e.isAllDayEvent, - InstanceId: "", - originator: "" + static toDomain(dtoList: EventToApproveListOutputDTO, calendarOwnerName: string, userId: string): EventToApproveList { + + + return dtoList.map((dto) => { + const category = dto.category + let color; + let workflowDisplayName; + + if(dto.ownerType == 'PR') { + color = 'PR' + workflowDisplayName = `Agenda ${category} ${color}` + } else if(dto.ownerType == 'MD') { + color = 'MDGPR' + workflowDisplayName = `Agenda ${category} ${color}` + } else { + workflowDisplayName = `Agenda ${category}` } - })) + + return { + serialNumber: dto.id, + taskStatus: dto.status, + taskStartDate: dto.startDate, + taskReceiveDate: dto.startDate, + deadline: null, + workflowDisplayName, + activityInstanceName: "", + totalDocuments: 0, + workflowInstanceDataFields: { + Agenda: dto.category, + EndDate: dto.endDate, + StartDate: dto.startDate, + Subject: dto.body, + Location: dto.location, + Status: dto.status, + IsAllDayEvent: dto.isAllDayEvent, + InstanceId: "", + originator: "" + } + } + }) } static toDTO() {} @@ -65,21 +83,4 @@ export class EventListToApproveMapper { -// { -// "id": "5b170417-df57-4b5c-9a5e-3c73726a116d", -// "owner": null, -// "ownerType": "PR", -// "subject": "string", -// "body": "string", -// "location": "string", -// "startDate": "2024-05-29T00:00:00+00:00", -// "endDate": "2024-05-29T23:59:00+00:00", -// "type": "Meeting", -// "category": "Oficial", -// "isRecurring": false, -// "eventRecurrence": null, -// "hasAttachments": false, -// "isPrivate": false, -// "isAllDayEvent": true, -// "status": "Pending" -// } + diff --git a/src/app/services/Repositorys/Agenda/model/eventDTOOutput.ts b/src/app/services/Repositorys/Agenda/model/eventDTOOutput.ts index 33e88224a..5de3c99d7 100644 --- a/src/app/services/Repositorys/Agenda/model/eventDTOOutput.ts +++ b/src/app/services/Repositorys/Agenda/model/eventDTOOutput.ts @@ -39,7 +39,7 @@ const OrganizerSchema = z.object({ export const EventOutputDTOSchema = z.object({ id: z.string(), owner: OwnerSchema, - ownerType: z.string(), + ownerType: z.enum(["PR", "MD", "Other"]), subject: z.string(), body: z.string(), location: z.string(), @@ -56,7 +56,7 @@ export const EventOutputDTOSchema = z.object({ isPrivate: z.boolean(), isAllDayEvent: z.boolean(), organizer: OrganizerSchema, - status: z.string(), + status: z.enum(['Pending', 'Revision']), }); export type EventOutputDTO = z.infer diff --git a/src/app/services/functions/sort.service.ts b/src/app/services/functions/sort.service.ts index d8ee507ea..402887680 100644 --- a/src/app/services/functions/sort.service.ts +++ b/src/app/services/functions/sort.service.ts @@ -35,7 +35,7 @@ export class SortService { if(!Array.isArray(array)) { array = [] } - + return array.sort( (a,b)=> { return (new Date(this.ObjectService.deepFind(a, path)) < new Date(this.ObjectService.deepFind(b, path))) ? -1 : ((new Date(this.ObjectService.deepFind(a, path)) > new Date(this.ObjectService.deepFind(b, path))) ? 1 : 0); diff --git a/src/app/services/task.service.ts b/src/app/services/task.service.ts index d4971285b..3316e26d0 100644 --- a/src/app/services/task.service.ts +++ b/src/app/services/task.service.ts @@ -19,7 +19,8 @@ import { Router } from '@angular/router'; import { v4 as uuidv4 } from 'uuid' import { ChangeProfileService } from './change-profile.service'; import { PermissionService } from './permission.service'; - +import { AgendaDataRepositoryService } from 'src/app/services/Repositorys/Agenda/agenda-data-repository.service'; +import { SortService } from './functions/sort.service'; @Injectable({ providedIn: 'root' }) @@ -67,6 +68,8 @@ export class TaskService { private router: Router, private changeProfileService: ChangeProfileService, public p: PermissionService, + public AgendaDataRepositoryService: AgendaDataRepositoryService, + private sortService: SortService, ) { this.changeProfileService.registerCallback(() => { @@ -315,30 +318,26 @@ export class TaskService { /* if(this.SessionStore.user.Profile != 'PR') { */ try { for(let calendar of this.eventService.calendarNamesAry) { - if(calendar == 'Meu calendario') { - // color - let genericEvents = await this.processesbackend.eventsToApprove(SessionStore.user.UserId, false).toPromise(); - let eventsList - try { - eventsList = genericEvents - } catch (error) { - eventsList = []; - } - console.log(calendar, eventsList) - this.eventoaprovacaostore.save(calendar, eventsList) + let userId; + + if(calendar == 'Meu calendario') { + userId = SessionStore.user.UserId } else { - let allEvents = await this.processesbackend.eventsToApprove(calendar.OwnerUserId, 'againete page').toPromise() - let eventsList - try { - eventsList = allEvents - } catch(error) { - eventsList = [] - } + userId = calendar.OwnerUserId + } - console.log(calendar, eventsList) - this.eventoaprovacaostore.save(calendar.OwnerUserId, eventsList) + let allEvents = await this.AgendaDataRepositoryService.eventToApproveList({userId}) + if(allEvents.isOk()) { + + let eventsList = [] + if(allEvents.value.length >= 1) { + eventsList = this.sortService.sortArrayByDate(allEvents.value).reverse(); + this.eventoaprovacaostore.save(userId, eventsList) + } else { + this.eventoaprovacaostore.save(userId, []) + } } } } catch (error) { diff --git a/src/app/shared/agenda/approve-event/approve-event.page.ts b/src/app/shared/agenda/approve-event/approve-event.page.ts index ced51461c..a68888e6f 100644 --- a/src/app/shared/agenda/approve-event/approve-event.page.ts +++ b/src/app/shared/agenda/approve-event/approve-event.page.ts @@ -13,7 +13,6 @@ import { HttpErrorHandle } from 'src/app/services/http-error-handle.service'; import { TaskService } from 'src/app/services/task.service' import { AgendaDataRepositoryService } from 'src/app/services/Repositorys/Agenda/agenda-data-repository.service'; import { EventToApproveDetails } from 'src/app/models/entiry/agenda/eventToApproveDetails'; -import { HttpResponseBase } from '@angular/common/http'; @Component({ selector: 'app-approve-event', @@ -85,6 +84,7 @@ export class ApproveEventPage implements OnInit { if(res.isOk()) { this.loadedEvent = res.value; + this.loadedAttachments = this.loadedEvent.Attachments this.today = new Date(res.value.workflowInstanceDataFields.StartDate); // this.customDate = this.days[this.today.getDay()]+ ", " + this.today.getDate() +" de " + ( this.months[this.today.getMonth()]); diff --git a/src/app/shared/agenda/event-list/event-list.page.ts b/src/app/shared/agenda/event-list/event-list.page.ts index 2817fb53a..e9a72c7cc 100644 --- a/src/app/shared/agenda/event-list/event-list.page.ts +++ b/src/app/shared/agenda/event-list/event-list.page.ts @@ -113,14 +113,22 @@ export class EventListPage implements OnInit { userId = segment } - try { - let allEvents = await this.AgendaDataRepositoryService.eventToApproveList({userId}).toPromise() - this.eventsList = this.sortService.sortArrayByDate(allEvents).reverse(); - this.eventoaprovacaostore.save(segment, this.eventsList) - } catch (e) { + let allEvents = await this.AgendaDataRepositoryService.eventToApproveList({userId}) + if(allEvents.isOk()) { + + if(allEvents.value.length >= 1) { + this.eventsList = this.sortService.sortArrayByDate(allEvents.value).reverse(); + this.eventoaprovacaostore.save(segment, this.eventsList) + } else { + this.eventoaprovacaostore.save(segment, []) + } + } else { this.eventsList = []; - this.showLoader = false; + // this.showLoader = false; } + + this.showLoader = false; + } async LoadToApproveEventsNoLoader() { diff --git a/src/app/shared/gabinete-digital/events-to-approve/events-to-approve.page.ts b/src/app/shared/gabinete-digital/events-to-approve/events-to-approve.page.ts index 2609fa03d..4c3e17829 100644 --- a/src/app/shared/gabinete-digital/events-to-approve/events-to-approve.page.ts +++ b/src/app/shared/gabinete-digital/events-to-approve/events-to-approve.page.ts @@ -12,6 +12,7 @@ import { EventsService } from 'src/app/services/events.service'; import { environment } from 'src/environments/environment'; import { TaskService } from 'src/app/services/task.service' import { ThemeService } from 'src/app/services/theme.service' +import { AgendaDataRepositoryService } from 'src/app/services/Repositorys/Agenda/agenda-data-repository.service'; @Component({ selector: 'app-events-to-approve', @@ -33,9 +34,9 @@ export class EventsToApprovePage implements OnInit { eventoaprovacaostore = EventoAprovacaoStore; environment = environment filterName: 'Para hoje' | 'Novos'| 'Lidos'| 'Não lidos'| 'OverdueTasks' | 'Todos' = 'Todos' - - // + + // showSearch = false searchSubject = '' list = [] @@ -57,11 +58,12 @@ export class EventsToApprovePage implements OnInit { public eventService: EventsService, public TaskService: TaskService, public ThemeService: ThemeService, + public AgendaDataRepositoryService: AgendaDataRepositoryService ) {} ngOnInit() { - + this.eventService.onCalendarFinishLoad.subscribe(() => { if(!this.segment) { if(this.eventService.calendarNamesAry.includes('Meu calendario')) { @@ -69,7 +71,7 @@ export class EventsToApprovePage implements OnInit { } else { this.segment = this.eventService.calendarNamesAry[0].OwnerUserId } - + // select pr by default const pr = this.eventService.calendarNamesAry.find( e => e.Role == 'Presidente da República') if(pr) { @@ -80,7 +82,7 @@ export class EventsToApprovePage implements OnInit { } else { this.dynamicSearch(); } - + }) this.LoadToApproveEvents() @@ -90,7 +92,7 @@ export class EventsToApprovePage implements OnInit { funx:() => { this.dynamicSearch() - + } }) @@ -116,7 +118,7 @@ export class EventsToApprovePage implements OnInit { ngOnDestroy() { this.listSubscription.delete() - + this.routerSubscription?.unsubscribe(); } @@ -132,7 +134,7 @@ export class EventsToApprovePage implements OnInit { async dynamicSearch() { if(this.showSearch && this.searchSubject) { - + const list = this.eventoaprovacaostore.get(this.segment).filter((task) => { let subject = task.Folio || task.Subject || task.workflowInstanceDataFields.Subject subject = subject.toLowerCase(); @@ -176,52 +178,39 @@ export class EventsToApprovePage implements OnInit { this.showLoader = true; const segment = this.segment - + let userId; if(this.segment == 'Meu calendario') { // color - if(SessionStore.user.Profile == 'PR') { this.color = 'pr' } else { this.color = 'mdgpr' } - + userId = SessionStore.user.UserId - let genericEvents = await this.processes.eventsToApprove(SessionStore.user.UserId,'mobile agenda').toPromise() - try { - this.eventsList = this.sortService.sortArrayByDate(genericEvents).reverse(); - } catch (error) { - this.eventsList = []; - } - - this.eventoaprovacaostore.save(segment, this.eventsList) - this.dynamicSearch() } else { - - this.color = 'pr' - let allEvents = await this.processes.eventsToApprove(segment, 'gabinete').toPromise() - try { - this.eventsList = this.sortService.sortArrayByDate(allEvents).reverse(); - } catch(error) { - this.eventsList = [] - } - - this.eventsList = this.eventsList - this.eventsList = this.eventsList - this.showLoader = false; - this.eventoaprovacaostore.save(segment, this.eventsList) - this.dynamicSearch() + userId = segment } - this.showLoader = false; + let allEvents = await this.AgendaDataRepositoryService.eventToApproveList({userId}) + if(allEvents.isOk()) { + if(allEvents.value.length >= 1) { + this.eventsList = this.sortService.sortArrayByDate(allEvents.value).reverse(); + this.eventoaprovacaostore.save(segment, this.eventsList) + } else { + this.eventoaprovacaostore.save(segment, []) + } + + this.showLoader = false; + } else { + this.showLoader = false; + } } - getFromDB() {} - toDateString(e) { return new Date(e).toDateString() }