diff --git a/angular.json b/angular.json index b01a787d3..cd7b53a72 100644 --- a/angular.json +++ b/angular.json @@ -54,7 +54,7 @@ "vendorChunk": true, "extractLicenses": false, "buildOptimizer": false, - "sourceMap": false, + "sourceMap": true, "optimization": false, "namedChunks": true }, @@ -68,7 +68,7 @@ ], "optimization": true, "outputHashing": "all", - "sourceMap": false, + "sourceMap": true, "namedChunks": false, "aot": true, "extractLicenses": true, diff --git a/src/app/interceptors/token.interceptors.ts b/src/app/interceptors/token.interceptors.ts index 0b43c7ce4..2d8027338 100644 --- a/src/app/interceptors/token.interceptors.ts +++ b/src/app/interceptors/token.interceptors.ts @@ -8,7 +8,6 @@ import { HTTP_INTERCEPTORS, HttpClient, } from "@angular/common/http"; -import { AuthService } from '../services/auth.service'; import { Observable, throwError, BehaviorSubject, of } from "rxjs"; import { catchError, filter, take, switchMap, tap } from "rxjs/operators"; import { SessionStore } from '../store/session.service'; 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 28bba7024..129ea2d33 100644 --- a/src/app/pages/agenda/edit-event/edit-event.page.ts +++ b/src/app/pages/agenda/edit-event/edit-event.page.ts @@ -23,6 +23,7 @@ import { TableSharedCalendar } from 'src/app/services/Repositorys/Agenda/agenda- import { Observable } from 'rxjs'; import { RoleIdService } from 'src/app/services/role-id.service' import { TracingType, XTracerAsync } from 'src/app/services/monitoring/opentelemetry/tracer'; +import { AttendeesLIstChangeDetector } from 'src/app/services/Repositorys/Agenda/async/change/attendeesLIstChangeDetector'; const CUSTOM_DATE_FORMATS: NgxMatDateFormats = { parse: { @@ -99,7 +100,7 @@ export class EditEventPage implements OnInit { hasChangeCalendar = false selectedUserCalendar:any; SessionStore = SessionStore - + serverCurrentList = [] constructor( private modalController: ModalController, private navParams: NavParams, @@ -119,6 +120,8 @@ export class EditEventPage implements OnInit { this.isEventEdited = false; /* this.postEvent.EventRecurrence = { Type:'-1', LastOccurrence:''}; */ this.postEvent = this.navParams.get('event'); + this.serverCurrentList = this.postEvent.Attendees + console.log('this.postEvent', this.postEvent) this.caller = this.navParams.get('caller'); this.initCalendarName = this.postEvent.CalendarName; @@ -430,6 +433,9 @@ export class EditEventPage implements OnInit { this.injectValidation() this.runValidation() + + + if (this.Form.invalid) { return false } @@ -449,11 +455,31 @@ export class EditEventPage implements OnInit { console.log('edit event error: ', error) })); - this.agendaDataRepository.addEventAttendee(this.postEvent.EventId, this.postEvent.Attendees).subscribe((value) => { - console.log(value) - }, ((error) => { - console.log('add Attendee error: ', error) - })); + console.log({serverCurrentList: this.serverCurrentList, Attendees: this.postEvent.Attendees}) + + const { insert, remove } = AttendeesLIstChangeDetector(this.serverCurrentList as any, this.postEvent.Attendees as any) + + console.log({insert, remove }) + if(insert.length >= 1) { + this.agendaDataRepository.addEventAttendee(this.postEvent.EventId, insert).subscribe((value) => { + console.log(value) + }, ((error) => { + tracing.setAttribute('failed.attendees', 'true') + console.log('add Attendee error: ', error) + })); + + } + + if(remove.length >= 1) { + + this.agendaDataRepository.removeEventAttendee(this.postEvent.EventId, remove).subscribe((value) => { + console.log(value) + }, ((error) => { + tracing.setAttribute('failed.attendees', 'true') + console.log('add Attendee error: ', error) + })); + + } await this.saveDocument() diff --git a/src/app/pages/events/events.page.ts b/src/app/pages/events/events.page.ts index 52d27d211..fb7c1ae6a 100644 --- a/src/app/pages/events/events.page.ts +++ b/src/app/pages/events/events.page.ts @@ -17,6 +17,7 @@ import { SessionStore } from 'src/app/store/session.service'; import { TaskService } from 'src/app/services/task.service'; import { AgendaDataRepositoryService } from 'src/app/services/Repositorys/Agenda/agenda-data-repository.service'; import { EEventFilterStatus } from 'src/app/services/Repositorys/Agenda/model/enums'; +import { TracingType, XTracerAsync } from 'src/app/services/monitoring/opentelemetry/tracer'; @Component({ selector: 'app-events', @@ -220,7 +221,8 @@ export class EventsPage implements OnInit { } - async RefreshEvents() { + @XTracerAsync({name:'home/getTask', bugPrint: true}) + async RefreshEvents(tracing?: TracingType) { this.currentEvent = ""; this.showLoader = true; @@ -232,29 +234,37 @@ export class EventsPage implements OnInit { let start = date.getFullYear() + "-" + month + "-" + date.getDate() + " " + date.getHours() + ":" + date.getMinutes() + ":" + date.getSeconds(); let end = date.getFullYear() + "-" + month + "-" + date.getDate() + " 23:59:59"; - if(SessionStore.user) { + try { + if(SessionStore.user) { - const response = await this.AgendaDataRepositoryService.EventList({ - userId: SessionStore.user.UserId, - calendarOwnerName: SessionStore.user.FullName, - startDate: date.toISOString(), - endDate: new Date(end).toISOString(), - status: EEventFilterStatus.AllToCommunicate - }) + const response = await this.AgendaDataRepositoryService.EventList({ + userId: SessionStore.user.UserId, + calendarOwnerName: SessionStore.user.FullName, + startDate: date.toISOString(), + endDate: new Date(end).toISOString(), + status: EEventFilterStatus.AllToCommunicate + }) - if(response.isOk()) { - this.listToPresent = response.value; - if(response.value?.length) { - this.totalEvent = response.value.length; + if(response.isOk()) { + this.listToPresent = response.value; + if(response.value?.length) { + this.totalEvent = response.value.length; + } + tracing.setAttribute('outcome', 'success') + } else { + tracing.setAttribute('outcome', 'failed') } + + this.showLoader = false; + this.showAgendaLoader = false; + + this.storage.set('events', this.listToPresent) } else { - + tracing.setAttribute('session', 'false') } - - this.showLoader = false; - this.showAgendaLoader = false; - - this.storage.set('events', this.listToPresent) + } catch (error) { + tracing.setAttribute('component.catch', 'true') + tracing.setAttribute('outcome', 'failed') } this.showLoader = false; 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 5bb58b266..a2ed0fe1b 100644 --- a/src/app/services/Repositorys/Agenda/agenda-data-repository.service.ts +++ b/src/app/services/Repositorys/Agenda/agenda-data-repository.service.ts @@ -160,7 +160,6 @@ export class AgendaDataRepositoryService { } createEvent(eventData: Event, documents, calendar: TableSharedCalendar, tracing: TracingType) { - console.log('create repository 1',eventData, calendar) let eventInput = { userId: calendar.wxUserId, @@ -182,8 +181,6 @@ export class AgendaDataRepositoryService { isAllDayEvent: eventData.IsAllDayEvent, } - console.log('create repository 2',eventInput) - APINODReturn(EventInputDTOSchema, eventInput, 'post/Events', tracing) return this.agendaDataService.createEvent(eventInput) } @@ -230,12 +227,15 @@ export class AgendaDataRepositoryService { return this.agendaDataService.addEventAttendee(id, { attendees: this.utils.attendeesAdded(attendeeData) }); } + removeEventAttendee(id, attendeeData: {Id : string}[]) { + + return this.agendaDataService.removeEventAttendee(id, { attendees: attendeeData.map(e => e.Id || e['id']) } ); + } + addEventAttachment(id, attachmentData, tracing: TracingType) { console.log(attachmentData) const attachments = { attachments: this.utils.documentAdded(attachmentData) } - console.log('post attachment', attachments) - APINODReturn(AttachInputDTOSchema, attachments, `POST/${id}/Attendee`, tracing) return this.agendaDataService.addEventAttachment(id, attachments); } diff --git a/src/app/services/Repositorys/Agenda/agenda-data.service.ts b/src/app/services/Repositorys/Agenda/agenda-data.service.ts index cfe3674b5..b56cd21db 100644 --- a/src/app/services/Repositorys/Agenda/agenda-data.service.ts +++ b/src/app/services/Repositorys/Agenda/agenda-data.service.ts @@ -9,6 +9,7 @@ import { APIReturn } from '../../decorator/api-validate-schema.decorator'; import { TracingType } from '../../monitoring/opentelemetry/tracer'; import { EventListOutputDTO, EventListOutputDTOSchema } from './model/eventListDTOOutput'; import { EventOutputDTO } from './model/eventDTOOutput'; +import { AttendeesRemoveInputDTO } from './model/attendeeRemoveInputDTO'; @Injectable({ providedIn: 'root' @@ -98,7 +99,8 @@ export class AgendaDataService { return this.http.post(`${this.baseUrl}/Events/${id}/Attendee`, attendeeData); } - removeEventAttendee(id: string, attendeeData: any): Observable { + + removeEventAttendee(id: string, attendeeData: AttendeesRemoveInputDTO): Observable { return this.http.delete(`${this.baseUrl}/Events/${id}/Attendee`, { body: attendeeData }); } diff --git a/src/app/services/Repositorys/Agenda/async/change/attendeesLIstChangeDetector.ts b/src/app/services/Repositorys/Agenda/async/change/attendeesLIstChangeDetector.ts new file mode 100644 index 000000000..7e3eba5fc --- /dev/null +++ b/src/app/services/Repositorys/Agenda/async/change/attendeesLIstChangeDetector.ts @@ -0,0 +1,41 @@ +interface attendees { + + EmailAddress : string + Name: string + UserType: string + attendeeType: string + wxUserId: string + Id: string +} + +type Changes = { + insert: attendees[]; + remove: attendees[]; +}; + +export function AttendeesLIstChangeDetector( + localList: attendees[], + serverList: attendees[] +): Changes { + const changes: Changes = { insert: [], remove: [] }; + + const localMap = new Map(localList.map(item => [item.wxUserId, item])); + const serverMap = new Map(serverList.map(item => [item.wxUserId, item])); + + // Detect new or updated items + for (const [id, serverItem] of serverMap) { + const localItem = localMap.get(id); + if (!localItem) { + changes.insert.push(serverItem); + } + } + + // Detect deleted items + for (const [id, localItem] of localMap) { + if (!serverMap.has(id)) { + changes.remove.push(localItem); + } + } + + return changes; +} diff --git a/src/app/services/Repositorys/Agenda/mapper/EventDetailsMapper.ts b/src/app/services/Repositorys/Agenda/mapper/EventDetailsMapper.ts index 6d84e4001..5c5e1e317 100644 --- a/src/app/services/Repositorys/Agenda/mapper/EventDetailsMapper.ts +++ b/src/app/services/Repositorys/Agenda/mapper/EventDetailsMapper.ts @@ -71,7 +71,7 @@ export class EventMapper { "EndDate": dto.endDate, "EventType": "Single", "Attendees": dto.attendees.map((e) => ({ - //Id: e.id, + Id: e.id, wxUserId: e.wxUserId, EmailAddress: e.emailAddress, Name: e.name, diff --git a/src/app/services/Repositorys/Agenda/mapper/EventToApproveDetailsMapper.ts b/src/app/services/Repositorys/Agenda/mapper/EventToApproveDetailsMapper.ts index 80804cd5d..cb58b86d3 100644 --- a/src/app/services/Repositorys/Agenda/mapper/EventToApproveDetailsMapper.ts +++ b/src/app/services/Repositorys/Agenda/mapper/EventToApproveDetailsMapper.ts @@ -127,6 +127,7 @@ export class EventToApproveDetailsMapper { //"HasAttachments": true, "ParticipantsList": [ ...dto.attendees.map( e => ({ + Id: e.id, Name: e.name, EmailAddress: e.emailAddress, IsRequired: FEAttendeeType(e.attendeeType) == 'Required', diff --git a/src/app/services/Repositorys/Agenda/model/attendeeRemoveInputDTO.ts b/src/app/services/Repositorys/Agenda/model/attendeeRemoveInputDTO.ts new file mode 100644 index 000000000..50243b25d --- /dev/null +++ b/src/app/services/Repositorys/Agenda/model/attendeeRemoveInputDTO.ts @@ -0,0 +1,8 @@ +import { z } from "zod" + +export const AttendeesRemoveInputDTOSchema = z.object({ + attendees: z.array(z.string()), + +}) + +export type AttendeesRemoveInputDTO = z.infer diff --git a/src/app/services/notification/notification-holder.service.ts b/src/app/services/notification/notification-holder.service.ts index 1e950eded..ac76b2c48 100644 --- a/src/app/services/notification/notification-holder.service.ts +++ b/src/app/services/notification/notification-holder.service.ts @@ -36,21 +36,23 @@ export class NotificationHolderService { const element = notification const i = this.notificationList.length + 1 + console.log({notification}) + let notificationObject; if (element.notification) { notificationObject = { index: i, title: element.notification.title, - Service: element.data.Service, - Object: element.data.Object, - IdObject: element.data.IdObject, - FolderId: element.data.FolderId, + Service: element.data.Service || element.data.service, + Object: element.data.Object || element.data.object, + IdObject: element.data.IdObject || element.data.idObject, + FolderId: element.data.FolderId || element.data.folderId, body: element.notification.body, dateInit: this.getFormatedTime(element.data.dateInit), dateEnd: this.getFormatedTime(element.data.dateEnd), - Location: element.data.Location, - TypeAgenda: element.data.TypeAgenda, + Location: element.data.Location || element.data.Location, + TypeAgenda: element.data.TypeAgenda || element.data.typeAgenda, Role: element.data.Role, Status: element.data.Status, read: false, @@ -60,15 +62,15 @@ export class NotificationHolderService { notificationObject = { index: i, title: element.title, - Service: element.data.Service, - Object: element.data.Object, - IdObject: element.data.IdObject, - FolderId: element.data.FolderId, + Service: element.data.Service || element.data.service, + Object: element.data.Object || element.data.object, + IdObject: element.data.IdObject || element.data.idObject, + FolderId: element.data.FolderId || element.data.folderId, body: element.body, dateInit: this.getFormatedTime(element.data.dateInit), dateEnd: this.getFormatedTime(element.data.dateEnd), - Location: element.data.Location, - TypeAgenda: element.data.TypeAgenda, + Location: element.data.Location || element.data.folderId, + TypeAgenda: element.data.TypeAgenda || element.data.folderId, Role: element.data.Role, Status: element.data.Status, read: false, @@ -77,12 +79,12 @@ export class NotificationHolderService { } else { { notificationObject = { - FolderId: element.FolderId, - IdObject: element.IdObject, - Location: element.Location, - Object: element.Object, - Role: element.Role, - Service: element.Service, + FolderId: element.FolderId || element.data.folderId, + IdObject: element.IdObject || element.data.idObject, + Location: element.Location || element.data.location, + Object: element.Object || element.data.object, + Role: element.Role || element.data.role, + Service: element.Service || element.data.service, Status: element.Status, TypeAgenda: element.TypeAgenda, body: element.body, diff --git a/src/app/shared/agenda/edit-event-to-approve/edit-event-to-approve.page.html b/src/app/shared/agenda/edit-event-to-approve/edit-event-to-approve.page.html index f594c3423..6a48283ef 100644 --- a/src/app/shared/agenda/edit-event-to-approve/edit-event-to-approve.page.html +++ b/src/app/shared/agenda/edit-event-to-approve/edit-event-to-approve.page.html @@ -353,9 +353,9 @@

{{document.subject || document.Description || document.SourceName || document.sourceName || 'Sem título'}} - Correspondencia - AccoesPresidenciais - ArquivoDespachoElect + Correspondencia + AccoesPresidenciais + ArquivoDespachoElect diff --git a/src/app/shared/agenda/edit-event-to-approve/edit-event-to-approve.page.ts b/src/app/shared/agenda/edit-event-to-approve/edit-event-to-approve.page.ts index 49934dfd4..63cf0681f 100644 --- a/src/app/shared/agenda/edit-event-to-approve/edit-event-to-approve.page.ts +++ b/src/app/shared/agenda/edit-event-to-approve/edit-event-to-approve.page.ts @@ -17,6 +17,7 @@ import { ThemeService } from 'src/app/services/theme.service' import { HttpErrorHandle } from 'src/app/services/http-error-handle.service'; import { AgendaDataRepositoryService } from 'src/app/services/Repositorys/Agenda/agenda-data-repository.service'; import { TracingType, XTracerAsync } from 'src/app/services/monitoring/opentelemetry/tracer'; +import { AttendeesLIstChangeDetector } from 'src/app/services/Repositorys/Agenda/async/change/attendeesLIstChangeDetector'; const CUSTOM_DATE_FORMATS: NgxMatDateFormats = { parse: { @@ -154,33 +155,34 @@ export class EditEventToApprovePage implements OnInit { } - + + @XTracerAsync({name:'edit-event-approve/getTask', bugPrint: true}) async getTask(tracing?: TracingType) { const res = await this.agendaDataRepository.getEventToApproveById(this.serialNumber) if(res.isOk()) { console.log('evento to apro to edit', res.value) this.eventProcess = res.value as any; - + this.eventProcess.workflowInstanceDataFields.LastOccurrence = new Date(this.eventProcess.workflowInstanceDataFields.LastOccurrence) - + this.restoreDatepickerData() - + // description - + try { let body: any = this.eventProcess.workflowInstanceDataFields?.Body?.replace(/<[^>]+>/g, '') this.eventProcess.workflowInstanceDataFields.Body = body - + } catch (error) {} - + this.eventProcess.workflowInstanceDataFields.Category = this.setEventType(this.eventProcess.workflowInstanceDataFields.EventType) this.InstanceId = this.eventProcess.workflowInstanceDataFields.InstanceId this.loadedAttachments = res.value.Attachments; console.log(this.loadedAttachments) - + this.setOtherData() - + this.saveTemporaryData() tracing.setAttribute('outcome', 'success') @@ -189,7 +191,7 @@ export class EditEventToApprovePage implements OnInit { tracing.bugFlag() this.httpErroHalde.httpStatusHandle(res.error) } - + } getRecurrenceTypes() { @@ -337,11 +339,10 @@ export class EditEventToApprovePage implements OnInit { if (this.Form.invalid) return false - // set dates to eventProcess object + const serverCurrentList = this.eventProcess.workflowInstanceDataFields.ParticipantsList + this.dateControlStart = new FormControl(moment(new Date(this.eventProcess.workflowInstanceDataFields.StartDate)).add(1, 'hours')); this.dateControlEnd = new FormControl(moment(new Date(this.eventProcess.workflowInstanceDataFields.EndDate)).add(1, 'hours')); - // this.restoreDatepickerData() - // this.getDatepickerData() this.taskParticipantsCc.forEach(e => { e.IsRequired = false @@ -399,12 +400,32 @@ export class EditEventToApprovePage implements OnInit { tracing.setAttribute('outcome', 'failed') })); - this.agendaDataRepository.addEventAttendee(this.eventProcess.serialNumber, this.eventProcess.workflowInstanceDataFields.ParticipantsList).subscribe((value) => { - console.log(value) - }, ((error) => { - console.log('add Attendee error: ', error) - tracing.setAttribute('failed.attendees', 'true') - })); + console.log({serverCurrentList, list: this.eventProcess.workflowInstanceDataFields.ParticipantsList, e: this.eventProcess}) + + const { insert, remove } = AttendeesLIstChangeDetector(serverCurrentList as any, this.eventProcess.workflowInstanceDataFields.ParticipantsList as any) + + console.log({insert, remove}) + + if(insert.length >= 1) { + this.agendaDataRepository.addEventAttendee(this.eventProcess.serialNumber, insert).subscribe((value) => { + console.log(value) + }, ((error) => { + console.log('add Attendee error: ', error) + tracing.setAttribute('failed.attendees', 'true') + })); + } + + + if(remove.length >= 1) { + + this.agendaDataRepository.removeEventAttendee(this.eventProcess.serialNumber, remove).subscribe((value) => { + + }, ((error) => { + console.log('add Attendee error: ', error) + tracing.setAttribute('failed.attendees', 'true') + })); + } + if (this.addedAttachmentsList.length > 0) { this.agendaDataRepository.addEventAttachment(this.eventProcess.serialNumber, this.loadedAttachments, tracing).subscribe((value) => { @@ -435,24 +456,24 @@ export class EditEventToApprovePage implements OnInit { this.toastService._badRequest('Evento não editado'); } - this.loadedAttachments.forEach((document: any) => { - if (document['action'] == 'add') { - delete document.action - this.attachmentsService.setEventAttachmentById(document).subscribe(() => { - window['edit-approve-event-desktop']() - }, error => { - this.toastService.badRequest(); - }); - } else if (document['action'] == 'delete') { - delete document.action - this.attachmentsService.deleteEventAttachmentById(document.Id).subscribe(res => { - window['edit-approve-event-desktop']() - }, error => { - this.toastService.badRequest() - }) - } + // this.loadedAttachments.forEach((document: any) => { + // if (document['action'] == 'add') { + // delete document.action + // this.attachmentsService.setEventAttachmentById(document).subscribe(() => { + // window['edit-approve-event-desktop']() + // }, error => { + // this.toastService.badRequest(); + // }); + // } else if (document['action'] == 'delete') { + // delete document.action + // this.attachmentsService.deleteEventAttachmentById(document.Id).subscribe(res => { + // window['edit-approve-event-desktop']() + // }, error => { + // this.toastService.badRequest() + // }) + // } - }) + // }) } diff --git a/src/app/shared/agenda/edit-event/edit-event.page.ts b/src/app/shared/agenda/edit-event/edit-event.page.ts index 7f2981bb8..b60407245 100644 --- a/src/app/shared/agenda/edit-event/edit-event.page.ts +++ b/src/app/shared/agenda/edit-event/edit-event.page.ts @@ -20,6 +20,7 @@ import { Observable } from 'rxjs'; import { TableSharedCalendar } from 'src/app/services/Repositorys/Agenda/agenda-local-data-source.service'; import { RoleIdService } from 'src/app/services/role-id.service' import { XTracerAsync, TracingType } from 'src/app/services/monitoring/opentelemetry/tracer'; +import { AttendeesLIstChangeDetector } from 'src/app/services/Repositorys/Agenda/async/change/attendeesLIstChangeDetector'; @Component({ selector: 'app-edit-event', templateUrl: './edit-event.page.html', @@ -423,6 +424,8 @@ export class EditEventPage implements OnInit { return false } + const serverCurrentList = this._postEvent.Attendees + this._postEvent.Attendees = this.taskParticipants.concat(this.taskParticipantsCc); @@ -448,15 +451,35 @@ export class EditEventPage implements OnInit { tracing.setAttribute('outcome', 'failed') })); - this.agendaDataRepository.addEventAttendee(this._postEvent.EventId, this._postEvent.Attendees).subscribe((value) => { - console.log(value) - }, ((error) => { - tracing.setAttribute('failed.attendees', 'true') - console.log('add Attendee error: ', error) - })); + console.log({serverCurrentList, Attendees: this._postEvent.Attendees}) + + const { insert, remove } = AttendeesLIstChangeDetector(serverCurrentList as any, this._postEvent.Attendees as any) + + console.log({ insert, remove }); + + if(insert.length >= 1) { + this.agendaDataRepository.addEventAttendee(this._postEvent.EventId, insert).subscribe((value) => { + console.log(value) + }, ((error) => { + tracing.setAttribute('failed.attendees', 'true') + console.log('add Attendee error: ', error) + })); + + } + + if(remove.length >= 1) { + + this.agendaDataRepository.removeEventAttendee(this._postEvent.EventId, remove).subscribe((value) => { + console.log(value) + }, ((error) => { + tracing.setAttribute('failed.attendees', 'true') + console.log('add Attendee error: ', error) + })); + + } - if (this.addedAttachmentsList.length > 0) { + if (this.addedAttachmentsList.length >= 1) { this.agendaDataRepository.addEventAttachment(this._postEvent.EventId, this.loadedEventAttachments, tracing).subscribe((value) => { console.log(value) }, ((error) => { @@ -466,7 +489,7 @@ export class EditEventPage implements OnInit { })); } - if (this.deletedAttachmentsList.length > 0) { + if (this.deletedAttachmentsList.length >= 1) { this.agendaDataRepository.removeEventAttachment(this._postEvent.EventId, { attachments: this.deletedAttachmentsList }).subscribe((value) => { console.log(value) }, ((error) => { @@ -518,7 +541,7 @@ export class EditEventPage implements OnInit { postEvent: this._postEvent, eventBody: this.eventBody, segment: this.segment, - loadedEventAttachments: this.loadedEventAttachments + loadedEventAttachments: this.loadedEventAttachments, } } @@ -687,13 +710,19 @@ export class EditEventPage implements OnInit { } setEventType(eventType) { - var selectedEventType = { - 1: 'Meeting', - 2: 'Travel', - 3: 'Conference', - 4: 'Encontro' + + if(typeof eventType == 'number') { + var selectedEventType = { + 1: 'Meeting', + 2: 'Travel', + 3: 'Conference', + 4: 'Encontro' + } + return selectedEventType[eventType]; + } else { + return this._postEvent.Category } - return selectedEventType[eventType]; + } } diff --git a/src/app/shared/gabinete-digital/edit-event-to-approve/edit-event.page.html b/src/app/shared/gabinete-digital/edit-event-to-approve/edit-event.page.html index 4a974627f..7dc7e8b69 100644 --- a/src/app/shared/gabinete-digital/edit-event-to-approve/edit-event.page.html +++ b/src/app/shared/gabinete-digital/edit-event-to-approve/edit-event.page.html @@ -292,9 +292,9 @@

{{document.subject || document.Description || 'Sem título'}} - Correspondencia - AccoesPresidenciais - ArquivoDespachoElect + Correspondencia + AccoesPresidenciais + ArquivoDespachoElect diff --git a/src/app/shared/gabinete-digital/edit-event-to-approve/edit-event.page.ts b/src/app/shared/gabinete-digital/edit-event-to-approve/edit-event.page.ts index d2db7400e..6dc6eaab2 100644 --- a/src/app/shared/gabinete-digital/edit-event-to-approve/edit-event.page.ts +++ b/src/app/shared/gabinete-digital/edit-event-to-approve/edit-event.page.ts @@ -16,6 +16,7 @@ import { ThemeService } from 'src/app/services/theme.service' import { HttpErrorHandle } from 'src/app/services/http-error-handle.service' import { AgendaDataRepositoryService } from 'src/app/services/Repositorys/Agenda/agenda-data-repository.service'; import { TracingType, XTracerAsync } from 'src/app/services/monitoring/opentelemetry/tracer'; +import { AttendeesLIstChangeDetector } from 'src/app/services/Repositorys/Agenda/async/change/attendeesLIstChangeDetector'; const CUSTOM_DATE_FORMATS: NgxMatDateFormats = { parse: { @@ -115,12 +116,8 @@ export class EditEventToApproveComponent implements OnInit { constructor( private modalController: ModalController, private navParams: NavParams, - private eventsService: EventsService, public alertController: AlertController, private attachmentsService: AttachmentsService, - private processes: ProcessesService, - private toastService: ToastService, - private router: Router, public ThemeService: ThemeService, private httpErroHalde: HttpErrorHandle, private agendaDataRepository: AgendaDataRepositoryService @@ -169,9 +166,9 @@ export class EditEventToApproveComponent implements OnInit { let body: any = this.eventProcess.workflowInstanceDataFields.Body.replace(/<[^>]+>/g, '') this.eventProcess.workflowInstanceDataFields.Body = body - + } catch (error) {} - + this.Location = this.eventProcess.workflowInstanceDataFields.Location this.InstanceId = this.eventProcess.workflowInstanceDataFields.InstanceId @@ -280,6 +277,7 @@ export class EditEventToApproveComponent implements OnInit { e.IsRequired = false }) + const serverCurrentList = this.eventProcess.workflowInstanceDataFields.ParticipantsList this.eventProcess.workflowInstanceDataFields.ParticipantsList = this.taskParticipants.concat(this.taskParticipantsCc) this.eventProcess.workflowInstanceDataFields.ParticipantsList.forEach(e => { @@ -334,12 +332,32 @@ export class EditEventToApproveComponent implements OnInit { tracing.setAttribute('outcome', 'failed') })); - this.agendaDataRepository.addEventAttendee(this.eventProcess.serialNumber, this.eventProcess.workflowInstanceDataFields.ParticipantsList).subscribe((value) => { + console.log({serverCurrentList, ParticipantsList:this.eventProcess.workflowInstanceDataFields.ParticipantsList}) + const { insert, remove } = AttendeesLIstChangeDetector(serverCurrentList as any, this.eventProcess.workflowInstanceDataFields.ParticipantsList as any) + + console.log({insert, remove}) + + if(insert.length >= 1) { + + this.agendaDataRepository.addEventAttendee(this.eventProcess.serialNumber, insert).subscribe((value) => { + + }, ((error) => { + console.log('add Attendee error: ', error) + tracing.setAttribute('failed.attendees', 'true') + })); + } + + + if(remove.length >= 1) { + + this.agendaDataRepository.removeEventAttendee(this.eventProcess.serialNumber, remove).subscribe((value) => { + + }, ((error) => { + console.log('add Attendee error: ', error) + tracing.setAttribute('failed.attendees', 'true') + })); + } - }, ((error) => { - console.log('add Attendee error: ', error) - tracing.setAttribute('failed.attendees', 'true') - })); if (this.addedAttachmentsList.length > 0) { diff --git a/src/app/store/notification-holder.service.ts b/src/app/store/notification-holder.service.ts index 686f972f7..e72e7865b 100644 --- a/src/app/store/notification-holder.service.ts +++ b/src/app/store/notification-holder.service.ts @@ -54,10 +54,10 @@ export class NotificationHolderService { id: notification?.id || uuidv4(), index: i, title: element.notification.title, - Service: element.data.Service, - Object: element.data.Object, - IdObject: element.data.IdObject, - FolderId: element.data.FolderId, + Service: element.data.Service || element.data.service, + Object: element.data.Object || element.data.object, + IdObject: element.data.IdObject || element.data.idObject, + FolderId: element.data.FolderId || element.data.folderId, body: element.notification.body, dateInit: this.getFormatedTime(element.data.dateInit), dateEnd: this.getFormatedTime(element.data.dateEnd), @@ -73,10 +73,10 @@ export class NotificationHolderService { id: notification?.id || uuidv4(), index: i, title: element.title, - Service: element.data.Service, - Object: element.data.Object, - IdObject: element.data.IdObject, - FolderId: element.data.FolderId, + Service: element.data.Service || element.data.service, + Object: element.data.Object || element.data.object, + IdObject: element.data.IdObject || element.data.idObject, + FolderId: element.data.FolderId || element.data.folderId, body: element.body, dateInit: this.getFormatedTime(element.data.dateInit), dateEnd: this.getFormatedTime(element.data.dateEnd), @@ -91,12 +91,12 @@ export class NotificationHolderService { { notificationObject = { id: notification?.id || uuidv4(), - FolderId: element.FolderId, - IdObject: element.IdObject, + FolderId: element.FolderId || element.data.folderId, + IdObject: element.IdObject || element.data.idObject, Location: element.Location, - Object: element.Object, + Object: element.Object || element.data.service, Role: element.Role, - Service: element.Service, + Service: element.Service || element.data.service, Status: element.Status, TypeAgenda: element.TypeAgenda, body: element.body, @@ -124,10 +124,10 @@ export class NotificationHolderService { notificationObject = { id: notification?.id || uuidv4(), title: element.notification.title, - Service: element.data.Service, - Object: element.data.Object, - IdObject: element.data.IdObject, - FolderId: element.data.FolderId, + Service: element.data.Service || element.data.service, + Object: element.data.Object || element.data.object, + IdObject: element.data.IdObject || element.data.idObject, + FolderId: element.data.FolderId || element.data.folderId, body: element.notification.body, dateInit: this.getFormatedTime(element.data.dateInit), dateEnd: this.getFormatedTime(element.data.dateEnd), @@ -142,10 +142,10 @@ export class NotificationHolderService { notificationObject = { id: notification?.id || uuidv4(), title: element.title, - Service: element.data.Service, - Object: element.data.Object, - IdObject: element.data.IdObject, - FolderId: element.data.FolderId, + Service: element.data.Service || element.data.service, + Object: element.data.Object || element.data.object, + IdObject: element.data.IdObject || element.data.odObject, + FolderId: element.data.FolderId || element.data.folderId, body: element.body, dateInit: this.getFormatedTime(element.data.dateInit), dateEnd: this.getFormatedTime(element.data.dateEnd), @@ -160,12 +160,12 @@ export class NotificationHolderService { { notificationObject = { id: notification?.id || uuidv4(), - FolderId: element.FolderId, - IdObject: element.IdObject, + FolderId: element.FolderId || element.data.folderId, + IdObject: element.IdObject || element.data.idObject, Location: element.Location, - Object: element.Object, + Object: element.Object || element.data.object, Role: element.Role, - Service: element.Service, + Service: element.Service || element.data.service, Status: element.Status, TypeAgenda: element.TypeAgenda, body: element.body, diff --git a/version/git-version.ts b/version/git-version.ts index d94c150bd..ab6ca2b42 100644 --- a/version/git-version.ts +++ b/version/git-version.ts @@ -1,11 +1,11 @@ export let versionData = { - "shortSHA": "e1914505f", - "SHA": "e1914505f2e3ab233df288f980a028ecbcf1e2ed", + "shortSHA": "ca50ae9da", + "SHA": "ca50ae9dae0ac0d3ed0e5f2a820a780fd6509564", "branch": "feature/agenda-api-peter", "lastCommitAuthor": "'Peter Maquiran'", - "lastCommitTime": "'Sat Jun 22 21:51:40 2024 +0100'", - "lastCommitMessage": "ITOTEAM-525 no mobile ao adicionar attachments aparece um sem título", - "lastCommitNumber": "5838", - "changeStatus": "On branch feature/agenda-api-peter\nYour branch is ahead of 'origin/feature/agenda-api-peter' by 1 commit.\n (use \"git push\" to publish your local commits)\n\nChanges to be committed:\n (use \"git restore --staged ...\" to unstage)\n\tmodified: src/app/modals/profile/profile.page.ts\n\tmodified: src/app/modals/view-event/view-event.page.ts\n\tmodified: src/app/pages/agenda/edit-event/edit-event.page.ts\n\tmodified: src/app/pages/agenda/view-event/view-event.page.ts\n\tmodified: src/app/services/Repositorys/Agenda/model/addAttachmentDTOInput.ts\n\tmodified: src/app/services/Repositorys/Agenda/utils.ts\n\tmodified: src/app/services/task.service.ts\n\tmodified: src/app/shared/agenda/edit-event-to-approve/edit-event-to-approve.page.ts\n\tmodified: src/app/shared/gabinete-digital/edit-event-to-approve/edit-event.page.html\n\tmodified: src/app/shared/gabinete-digital/edit-event-to-approve/edit-event.page.ts\n\tmodified: version/git-version.ts", + "lastCommitTime": "'Sun Jun 23 21:47:34 2024 +0100'", + "lastCommitMessage": "ITOTEAM-525 data validation", + "lastCommitNumber": "5839", + "changeStatus": "On branch feature/agenda-api-peter\nYour branch is ahead of 'origin/feature/agenda-api-peter' by 2 commits.\n (use \"git push\" to publish your local commits)\n\nChanges to be committed:\n (use \"git restore --staged ...\" to unstage)\n\tmodified: angular.json\n\tmodified: src/app/pages/agenda/edit-event/edit-event.page.ts\n\tmodified: src/app/pages/events/events.page.ts\n\tmodified: src/app/services/Repositorys/Agenda/agenda-data-repository.service.ts\n\tmodified: src/app/services/Repositorys/Agenda/agenda-data.service.ts\n\tnew file: src/app/services/Repositorys/Agenda/async/change/attendeesLIstChangeDetector.ts\n\tmodified: src/app/services/Repositorys/Agenda/mapper/EventDetailsMapper.ts\n\tmodified: src/app/services/Repositorys/Agenda/mapper/EventToApproveDetailsMapper.ts\n\tnew file: src/app/services/Repositorys/Agenda/model/attendeeRemoveInputDTO.ts\n\tmodified: src/app/shared/agenda/edit-event-to-approve/edit-event-to-approve.page.html\n\tmodified: src/app/shared/agenda/edit-event-to-approve/edit-event-to-approve.page.ts\n\tmodified: src/app/shared/agenda/edit-event/edit-event.page.ts\n\tmodified: src/app/shared/gabinete-digital/edit-event-to-approve/edit-event.page.html\n\tmodified: src/app/shared/gabinete-digital/edit-event-to-approve/edit-event.page.ts\n\nChanges not staged for commit:\n (use \"git add ...\" to update what will be committed)\n (use \"git restore ...\" to discard changes in working directory)\n\tmodified: src/app/interceptors/token.interceptors.ts\n\tmodified: src/app/services/notification/notification-holder.service.ts\n\tmodified: src/app/store/notification-holder.service.ts", "changeAuthor": "peter.maquiran" } \ No newline at end of file