diff --git a/src/models/calendar/events/event.interface.ts b/src/models/calendar/events/event.interface.ts index 9135fc9..1151a4f 100644 --- a/src/models/calendar/events/event.interface.ts +++ b/src/models/calendar/events/event.interface.ts @@ -53,6 +53,10 @@ * format: date-time * description: The date and time when the event was created * example: "2023-05-01T10:00:00.000Z" + * lastModifiedDate: + * type: string + * format: date-time + * example: "2023-05-01T10:00:00.000Z" * location: * type: string * description: The location of the event @@ -65,6 +69,14 @@ * type: integer * description: The ID of the user who created the event * example: 456 + * lastModifiedBy: + * type: string + * description: The name of the user who last modified the event + * example: "John Doe" + * lastModifiedById: + * type: integer + * description: The ID of the user who last modified the event + * example: 456 * url: * type: string * description: A URL with more information about the event @@ -88,9 +100,12 @@ export interface Event { startDateTime: Date; endDateTime: Date; createdDate: Date; + lastModifiedDate?: Date; location: string; createdBy?: string; createdById: number; + lastModifiedBy?: string; + lastModifiedById?: number; url: string; wholeDay: boolean; status?: string; diff --git a/src/models/calendar/events/events.service.ts b/src/models/calendar/events/events.service.ts index 57a2889..f262b5e 100644 --- a/src/models/calendar/events/events.service.ts +++ b/src/models/calendar/events/events.service.ts @@ -23,7 +23,7 @@ export const getAllEvents = async (calendarId: number): Promise => { } const eventsQuery = ` - SELECT e.calendar_id, e.uuid, e.created_date, e.created_by_id, u.full_name, v.* FROM events e + SELECT e.calendar_id, e.uuid, e.created_date, e.created_by_id, u.full_name as created_by_name, u2.full_name as last_modified_by_name, v.* FROM events e INNER JOIN ( SELECT event_id, MAX(event_version_id) AS latest_version FROM event_versions @@ -33,6 +33,7 @@ export const getAllEvents = async (calendarId: number): Promise => { INNER JOIN event_versions v ON v.event_id = latest_versions.event_id AND v.event_version_id = latest_versions.latest_version LEFT OUTER JOIN users u ON u.user_id = e.created_by_id + LEFT OUTER JOIN users u2 ON u2.user_id = v.version_created_by_id WHERE e.calendar_id IN (?) AND v.status = 'PUBLIC' ORDER BY e.event_id`; const eventsRes = await conn.query(eventsQuery, [calendarsToFetch]); @@ -47,9 +48,12 @@ export const getAllEvents = async (calendarId: number): Promise => { startDateTime: row.start_datetime, endDateTime: row.end_datetime, createdDate: row.created_date, + lastModifiedDate: row.version_created_at, location: row.location, - createdBy: row.full_name, + createdBy: row.created_by_name, createdById: row.created_by_id, + lastModifiedBy: row.last_modified_by_name, + lastModifiedById: row.version_created_by_id, url: row.url, wholeDay: row.whole_day }); @@ -74,7 +78,7 @@ export const getAllEventsAdmin = async (calendarId: number): Promise => let eventRows: Event[] = []; try { const eventsQuery = ` - SELECT e.calendar_id, e.uuid, e.created_date, e.created_by_id, u.full_name, v.* FROM events e + SELECT e.calendar_id, e.uuid, e.created_date, e.created_by_id, u.full_name as created_by_name, u2.full_name as last_modified_by_name, v.* FROM events e INNER JOIN ( SELECT event_id, MAX(event_version_id) AS latest_version FROM event_versions @@ -84,6 +88,7 @@ export const getAllEventsAdmin = async (calendarId: number): Promise => INNER JOIN event_versions v ON v.event_id = latest_versions.event_id AND v.event_version_id = latest_versions.latest_version LEFT OUTER JOIN users u ON u.user_id = e.created_by_id + LEFT OUTER JOIN users u2 ON u2.user_id = v.version_created_by_id WHERE e.calendar_id = ? ORDER BY e.event_id`; const eventsRes = await conn.query(eventsQuery, calendarId); @@ -98,9 +103,12 @@ export const getAllEventsAdmin = async (calendarId: number): Promise => startDateTime: row.start_datetime, endDateTime: row.end_datetime, createdDate: row.created_date, + lastModifiedDate: row.version_created_at, location: row.location, - createdBy: row.full_name, + createdBy: row.created_by_name, createdById: row.created_by_id, + lastModifiedBy: row.last_modified_by_name, + lastModifiedById: row.version_created_by_id, url: row.url, wholeDay: row.whole_day, status: row.status @@ -229,7 +237,7 @@ export const getNextUpcomingEvent = async (calendarId: number): Promise ? ORDER BY v.start_datetime ASC LIMIT 1`; @@ -258,9 +267,12 @@ export const getNextUpcomingEvent = async (calendarId: number): Promise