fix duplication events

This commit is contained in:
Peter Maquiran
2024-06-03 13:28:18 +01:00
parent f38b445bd4
commit 320e7c41b3
10 changed files with 99 additions and 32 deletions
+16 -1
View File
@@ -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++
@@ -186,7 +186,7 @@ export class ViewEventPage implements OnInit {
}
setTimeZone() {
this.TimeZoneString = this.loadedEvent.TimeZone.split(')')[1]
this.TimeZoneString = this.loadedEvent.TimeZone
}
async loadEvent() {
@@ -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,
@@ -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": "",
@@ -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,
@@ -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(),
});
+2 -1
View File
@@ -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] = []
}
+33 -12
View File
@@ -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<T>(url: string, body: any): Promise<Result<T, HttpErrorResponse>> {
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<T>(url: string): Promise<Result<T, HttpErrorResponse>> {
try {
const result = await this.http.get<T>(url).toPromise()
return ok (result as T)
} catch (e) {
return err(e as HttpErrorResponse)
}
}
async put<T>(url: string, body: any): Promise<Result<T, HttpErrorResponse>> {
try {
const result = await this.http.put<T>(url, body).toPromise()
return ok (result as T)
} catch (e) {
return err(e as HttpErrorResponse)
}
}
async delete<T>(url: string): Promise<Result<T, HttpErrorResponse>> {
try {
const result = await this.http.delete<T>(url).toPromise()
return ok (result as T)
} catch (e) {
return err(e as HttpErrorResponse)
}
}
}
@@ -121,7 +121,7 @@ export class ViewEventPage implements OnInit {
setTimeZone() {
this.TimeZoneString = this.loadedEvent.TimeZone.split(')')[1]
this.TimeZoneString = this.loadedEvent.TimeZone
}
async loadEvent() {
+19 -11
View File
@@ -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')
}
});