mirror of
https://github.com/hanzoai/calendar.git
synced 2026-10-30 14:46:43 +00:00
* feat: add endpoint to add attendees to existing bookings - Created POST /v2/bookings/:bookingUid/attendees endpoint - Added AddAttendeesInput_2024_08_13 for input validation - Added AddAttendeesOutput_2024_08_13 for response format - Created BookingAttendeesService_2024_08_13 for business logic - Created BookingAttendeesController_2024_08_13 for API endpoint - Added validation to check for duplicate attendee emails - Integrated with existing booking and event type repositories - Added validateAndTransformAddAttendeesInput method to InputBookingsService - Fixed pre-existing ESLint no-prototype-builtins warnings - Left placeholder for custom booking field validation logic Co-Authored-By: [email protected] <[email protected]> * refactor: move booking attendee operations to dedicated repository * refactor: move repository files into dedicated repositories directory * feat: validate guests field availability before adding attendees to booking * feat: migrate addAttendees API to use existing addGuests handler * refactor: remove unused validateAndTransformAddAttendeesInput method from InputBookingsService * refactor: rename attendees to guests in booking API endpoints and types * refactor: rename booking-attendees to booking-guests for consistency * WIP: add e2e tests for add booking guests endpoint * faet: improve guest booking tests * refactor: extract getHtml method in email templates * feat: add email toggle support for guest invites based on OAuth client settings * refactor: addGuests handler * feat: add SMS notifications when adding guests to existing bookings * refactor: rename add-attendees to add-guests for consistent terminology * refactor: added repository pattern in addGuests.handler * test: add attendee scheduled email spy to booking guests tests * fix: use event type team ID instead of user org ID for booking permission check * Update BookingEmailSmsHandler.ts * Remove comments * refactor: rename booking guests to booking attendees * refactor: rename guest-related methods to use attendees terminology for consistency * update api docs * refactor: restructure addGuests handler to top * refactor: update guest email format to use object structure in booking tests * docs: clarify API version header requirement for booking attendees endpoint * docs: add email notification details to booking attendees API documentation * refactor: rename booking attendees to guests for consistency * refactor: rename attendees to guests in booking API endpoints * feat: add email validation for guest invites * feat: improve error handling for guest booking failures --------- Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Co-authored-by: Morgan <[email protected]>
35 lines
1.2 KiB
TypeScript
35 lines
1.2 KiB
TypeScript
import { getReplyToHeader } from "@calcom/lib/getReplyToHeader";
|
|
|
|
import generateIcsFile, { GenerateIcsRole } from "../lib/generateIcsFile";
|
|
import renderEmail from "../src/renderEmail";
|
|
import AttendeeScheduledEmail from "./attendee-scheduled-email";
|
|
|
|
export default class AttendeeAddGuestsEmail extends AttendeeScheduledEmail {
|
|
async getHtml() {
|
|
return await renderEmail("AttendeeAddGuestsEmail", {
|
|
calEvent: this.calEvent,
|
|
attendee: this.attendee,
|
|
});
|
|
}
|
|
|
|
protected async getNodeMailerPayload(): Promise<Record<string, unknown>> {
|
|
return {
|
|
icalEvent: generateIcsFile({
|
|
calEvent: this.calEvent,
|
|
role: GenerateIcsRole.ATTENDEE,
|
|
status: "CONFIRMED",
|
|
}),
|
|
to: `${this.attendee.name} <${this.attendee.email}>`,
|
|
from: `${this.calEvent.organizer.name} <${this.getMailerOptions().from}>`,
|
|
...getReplyToHeader(this.calEvent),
|
|
subject: `${this.t("guests_added_event_type_subject", {
|
|
eventType: this.calEvent.type,
|
|
name: this.calEvent.team?.name || this.calEvent.organizer.name,
|
|
date: this.getFormattedDate(),
|
|
})}`,
|
|
html: await this.getHtml(),
|
|
text: this.getTextBody("new_guests_added"),
|
|
};
|
|
}
|
|
}
|