diff --git a/src/app/pages/agenda/agenda.page.ts b/src/app/pages/agenda/agenda.page.ts index bbb4ebb32..924ba236d 100644 --- a/src/app/pages/agenda/agenda.page.ts +++ b/src/app/pages/agenda/agenda.page.ts @@ -611,6 +611,19 @@ export class AgendaPage implements OnInit { delete this.loadRequest[index] } + + removeDuplicatesByOwnerUserId = (array) => { + const seen = new Set(); + return array.filter(item => { + if (seen.has(item.OwnerUserId)) { + return false; + } else { + seen.add(item.OwnerUserId); + return true; + } + }); + }; + async loadRangeEventRun(startTime: Date, endTime: Date) { if (SessionStore.user.OwnerCalendars.length == 0 && SessionStore.user.SharedCalendars.length == 0) { @@ -632,8 +645,9 @@ export class AgendaPage implements OnInit { this.myCal.loadEvents(); } catch (error) {} + let load = 0; - for (const selectedCalendar of selectedCalendarIds) { + for (const selectedCalendar of this.removeDuplicatesByOwnerUserId(selectedCalendarIds)) { const response = await this.AgendaDataRepositoryService.EventList({userId: selectedCalendar.OwnerUserId, calendarOwnerName: selectedCalendar['FullName'] }) @@ -654,6 +668,7 @@ export class AgendaPage implements OnInit { this.CalendarStore.pushEvent(eventsList, label, selectedCalendar.OwnerUserId); this.listToPresent = this.CalendarStore.getEventsByCalendarIds(selectedCalendarIds) + // console.log('this.listToPresent', this.listToPresent) this.showTimelinePR = true; load++ 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 12877e975..71c410370 100644 --- a/src/app/pages/agenda/view-event/view-event.page.ts +++ b/src/app/pages/agenda/view-event/view-event.page.ts @@ -186,7 +186,7 @@ export class ViewEventPage implements OnInit { } setTimeZone() { - this.TimeZoneString = this.loadedEvent.TimeZone.split(')')[1] + this.TimeZoneString = this.loadedEvent.TimeZone } async loadEvent() { diff --git a/src/app/services/Repositorys/Agenda/mapper/EventDetailsMapper.ts b/src/app/services/Repositorys/Agenda/mapper/EventDetailsMapper.ts index 9c4baac3a..defbd4c32 100644 --- a/src/app/services/Repositorys/Agenda/mapper/EventDetailsMapper.ts +++ b/src/app/services/Repositorys/Agenda/mapper/EventDetailsMapper.ts @@ -1,5 +1,15 @@ import { EventOutputDTO } from "../model/eventDTOOutput" +function getTextInsideParentheses(inputString) { + var startIndex = inputString.indexOf('('); + var endIndex = inputString.indexOf(')'); + if (startIndex !== -1 && endIndex !== -1) { + return inputString.substring(startIndex + 1, endIndex); + } else { + return null; + } +} + export class EventMapper { constructor() {} @@ -25,9 +35,10 @@ export class EventMapper { EmailAddress: e.emailAddress, Name: e.name, IsRequired: e.attendeeType == '0' ? true : false, + //IsRequired: e.attendeeType == 'Acknowledgment', UserType: "GD", // "IsPR": false, - Acknowledgment: e.attendeeType == '0' ? true : false, + // Acknowledgment: e.attendeeType == '0' ? true : false, // "RoleDescription": null, // "RoleId": 0 })), @@ -35,7 +46,7 @@ export class EventMapper { "IsRecurring": dto.isRecurring, "IsAllDayEvent": dto.isAllDayEvent, "AppointmentState": 1, - "TimeZone": "UTC", + "TimeZone": getTextInsideParentheses(new Date(dto.startDate)+ ''), "Organizer": { "Id": dto.organizer.wxUserId, "EmailAddress": dto.organizer.wxeMail, diff --git a/src/app/services/Repositorys/Agenda/mapper/EventToApproveDetailsMapper.ts b/src/app/services/Repositorys/Agenda/mapper/EventToApproveDetailsMapper.ts index 40c943dc9..09318897a 100644 --- a/src/app/services/Repositorys/Agenda/mapper/EventToApproveDetailsMapper.ts +++ b/src/app/services/Repositorys/Agenda/mapper/EventToApproveDetailsMapper.ts @@ -1,6 +1,17 @@ import { EventToApproveDetails } from "src/app/models/entiry/agenda/eventToApproveDetails" import { EventOutputDTO } from "../model/eventDTOOutput" +function getTextInsideParentheses(inputString) { + var startIndex = inputString.indexOf('('); + var endIndex = inputString.indexOf(')'); + if (startIndex !== -1 && endIndex !== -1) { + return inputString.substring(startIndex + 1, endIndex); + } else { + return null; + } +} + + export class EventToApproveDetailsMapper { constructor() {} @@ -63,7 +74,7 @@ export class EventToApproveDetailsMapper { // "MDEmail": "evilarinho@gabinetedigital.local", // "OriginatorComments": "", "Status": "Active", - //"TimeZone": "", + "TimeZone": getTextInsideParentheses(new Date(dto.startDate)+ ''), "Agenda": category , "EventType": "Reunião", //"EventID": "", diff --git a/src/app/services/Repositorys/Agenda/mapper/eventToApproveListMapper.ts b/src/app/services/Repositorys/Agenda/mapper/eventToApproveListMapper.ts index cb7c53bc5..10610068c 100644 --- a/src/app/services/Repositorys/Agenda/mapper/eventToApproveListMapper.ts +++ b/src/app/services/Repositorys/Agenda/mapper/eventToApproveListMapper.ts @@ -47,7 +47,7 @@ export class EventListToApproveMapper { Agenda: dto.category, EndDate: dto.endDate, StartDate: dto.startDate, - Subject: dto.body, + Subject: dto.subject, Location: dto.location, Status: dto.status, IsAllDayEvent: dto.isAllDayEvent, diff --git a/src/app/services/Repositorys/Agenda/model/eventDTOOutput.ts b/src/app/services/Repositorys/Agenda/model/eventDTOOutput.ts index 4a0827760..07e0c9ccd 100644 --- a/src/app/services/Repositorys/Agenda/model/eventDTOOutput.ts +++ b/src/app/services/Repositorys/Agenda/model/eventDTOOutput.ts @@ -18,7 +18,7 @@ const CommentSchema = z.object({ const AttendeeSchema = z.object({ id: z.string(), name: z.string(), - attendeeType: EAttendeeTypeDTO, + attendeeType: z.enum(["0", "1", "2"]), emailAddress: z.string(), wxUserId: z.number(), }); diff --git a/src/app/services/agenda/list-box.service.ts b/src/app/services/agenda/list-box.service.ts index afbd53d31..5d880f711 100644 --- a/src/app/services/agenda/list-box.service.ts +++ b/src/app/services/agenda/list-box.service.ts @@ -75,6 +75,8 @@ export class ListBoxService { // daysObject[day] = object[day] // } + console.log('newStracture', newStracture) + return this.display(newStracture, selectedDate).year // const daysStringNum = Object.keys(daysObject) @@ -116,7 +118,6 @@ export class ListBoxService { event['manyDays'] = !this.dateService.isSameDate(event.start, event.end) event['todayOnly'] = this.dateService.isSameDate(event.start, event.end) - if(!days.hasOwnProperty(day)) { days[day] = [] } diff --git a/src/app/services/http.service.ts b/src/app/services/http.service.ts index 568d9b080..fd5f35a4a 100644 --- a/src/app/services/http.service.ts +++ b/src/app/services/http.service.ts @@ -1,7 +1,6 @@ -import { HttpClient, HttpErrorResponse, HttpHeaderResponse, HttpHeaders } from '@angular/common/http'; +import { HttpClient, HttpErrorResponse } from '@angular/common/http'; import { Injectable } from '@angular/core'; -import { ok, err } from 'neverthrow'; -import { environment } from 'src/environments/environment'; +import { ok, err, Result } from 'neverthrow'; @Injectable({ providedIn: 'root' @@ -10,21 +9,43 @@ export class HttpService { constructor(private http:HttpClient) { } - async post(serviceName:string, data:any) { - const headers = new HttpHeaders(); - const url = environment.apiChatUrl+serviceName; + async post(url: string, body: any): Promise> { try { - const result = await this.http.post(url, {}).toPromise() - return ok (result) + const result = await this.http.post(url, body).toPromise() + return ok (result as T) } catch (e) { return err(e as HttpErrorResponse) } } - async get(serviceName:string, options:any) { - const url = environment.apiChatUrl+serviceName; - return this.http.get(url, options); + async get(url: string): Promise> { + try { + const result = await this.http.get(url).toPromise() + return ok (result as T) + } catch (e) { + return err(e as HttpErrorResponse) + } + } + + async put(url: string, body: any): Promise> { + + try { + const result = await this.http.put(url, body).toPromise() + return ok (result as T) + } catch (e) { + return err(e as HttpErrorResponse) + } + + } + + async delete(url: string): Promise> { + + try { + const result = await this.http.delete(url).toPromise() + return ok (result as T) + } catch (e) { + return err(e as HttpErrorResponse) + } } } - diff --git a/src/app/shared/agenda/view-event/view-event.page.ts b/src/app/shared/agenda/view-event/view-event.page.ts index 45fe5cced..b7822276d 100644 --- a/src/app/shared/agenda/view-event/view-event.page.ts +++ b/src/app/shared/agenda/view-event/view-event.page.ts @@ -121,7 +121,7 @@ export class ViewEventPage implements OnInit { setTimeZone() { - this.TimeZoneString = this.loadedEvent.TimeZone.split(')')[1] + this.TimeZoneString = this.loadedEvent.TimeZone } async loadEvent() { diff --git a/src/app/store/calendar.service.ts b/src/app/store/calendar.service.ts index 61a74a666..9484db497 100644 --- a/src/app/store/calendar.service.ts +++ b/src/app/store/calendar.service.ts @@ -63,9 +63,10 @@ export class CalendarService { } removeRangeForCalendar(rangeStartDate, rangeEndDate, profile, calendarId) { + this._eventSource = this._eventSource.filter((e)=> { if(new Date(rangeStartDate).getTime() <= new Date(e.startTime).getTime() && - new Date(rangeEndDate).getTime() >= new Date(e.endTime).getTime() && e.CalendarId == calendarId) { + new Date(rangeEndDate).getTime() >= new Date(e.endTime).getTime() && e.CalendarId != calendarId) { return false } return true @@ -77,16 +78,23 @@ export class CalendarService { let news = [] eventsList.forEach((element, eventIndex) => { - news.push({ - startTime: new Date(element.StartDate), - endTime: new Date(element.EndDate), - allDay: false, - event: element, - calendarName: element.CalendarName, - profile: profile, - id: element.EventId, - CalendarId: CalendarId - }); + const found = this._eventSource.find( e => e.id == element.EventId) + + if(!found) { + news.push({ + startTime: new Date(element.StartDate), + endTime: new Date(element.EndDate), + allDay: false, + event: element, + calendarName: element.CalendarName, + profile: profile, + id: element.EventId, + CalendarId: CalendarId + }); + } else { + console.log('found') + } + });