@@ -8,6 +8,7 @@ import { v4 as uuidv4 } from "uuid";
88import dayjs from "@calcom/dayjs" ;
99import generateIcsString from "@calcom/emails/lib/generateIcsString" ;
1010import { getCalEventResponses } from "@calcom/features/bookings/lib/getCalEventResponses" ;
11+ import { BookingSeatRepository } from "@calcom/features/bookings/repositories/BookingSeatRepository" ;
1112import { getBookerBaseUrl } from "@calcom/features/ee/organizations/lib/getBookerUrlServer" ;
1213import logger from "@calcom/lib/logger" ;
1314import { safeStringify } from "@calcom/lib/safeStringify" ;
@@ -121,6 +122,18 @@ export async function handler(req: NextRequest) {
121122 }
122123 const referenceUid = reminder . uuid ?? uuidv4 ( ) ;
123124
125+ // For seated events, get the correct attendee based on seatReferenceId
126+ let targetAttendee = reminder . booking ?. attendees [ 0 ] ;
127+ if ( reminder . seatReferenceId ) {
128+ const bookingSeatRepository = new BookingSeatRepository ( prisma ) ;
129+ const seatAttendeeData = await bookingSeatRepository . getByReferenceUidWithAttendeeDetails (
130+ reminder . seatReferenceId
131+ ) ;
132+ if ( seatAttendeeData ?. attendee ) {
133+ targetAttendee = seatAttendeeData . attendee ;
134+ }
135+ }
136+
124137 if ( ! reminder . isMandatoryReminder && reminder . workflowStep ) {
125138 try {
126139 let sendTo ;
@@ -143,31 +156,31 @@ export async function handler(req: NextRequest) {
143156 }
144157 break ;
145158 case WorkflowActions . EMAIL_ATTENDEE :
146- sendTo = reminder . booking . attendees [ 0 ] . email ;
159+ sendTo = targetAttendee ? .email ;
147160 break ;
148161 case WorkflowActions . EMAIL_ADDRESS :
149162 sendTo = reminder . workflowStep . sendTo ;
150163 }
151164
152165 const name =
153166 reminder . workflowStep . action === WorkflowActions . EMAIL_ATTENDEE
154- ? reminder . booking . attendees [ 0 ] . name
167+ ? targetAttendee ? .name
155168 : reminder . booking . user ?. name ;
156169
157170 const attendeeName =
158171 reminder . workflowStep . action === WorkflowActions . EMAIL_ATTENDEE
159172 ? reminder . booking . user ?. name
160- : reminder . booking . attendees [ 0 ] . name ;
173+ : targetAttendee ? .name ;
161174
162175 const timeZone =
163176 reminder . workflowStep . action === WorkflowActions . EMAIL_ATTENDEE
164- ? reminder . booking . attendees [ 0 ] . timeZone
177+ ? targetAttendee ? .timeZone
165178 : reminder . booking . user ?. timeZone ;
166179
167180 const locale =
168181 reminder . workflowStep . action === WorkflowActions . EMAIL_ATTENDEE ||
169182 reminder . workflowStep . action === WorkflowActions . SMS_ATTENDEE
170- ? reminder . booking . attendees [ 0 ] . locale
183+ ? targetAttendee ? .locale
171184 : reminder . booking . user ?. locale ;
172185
173186 let emailContent = {
@@ -199,16 +212,16 @@ export async function handler(req: NextRequest) {
199212
200213 const recipientEmail = getWorkflowRecipientEmail ( {
201214 action : reminder . workflowStep . action || WorkflowActions . EMAIL_ADDRESS ,
202- attendeeEmail : reminder . booking . attendees [ 0 ] . email ,
215+ attendeeEmail : targetAttendee ? .email ,
203216 organizerEmail : reminder . booking . user ?. email ,
204217 sendToEmail : reminder . workflowStep . sendTo ,
205218 } ) ;
206219
207220 const variables : VariablesType = {
208221 eventName : reminder . booking . eventType ?. title || "" ,
209222 organizerName : reminder . booking . user ?. name || "" ,
210- attendeeName : reminder . booking . attendees [ 0 ] . name ,
211- attendeeEmail : reminder . booking . attendees [ 0 ] . email ,
223+ attendeeName : targetAttendee ?. name || "" ,
224+ attendeeEmail : targetAttendee ?. email || "" ,
212225 eventDate : dayjs ( reminder . booking . startTime ) . tz ( timeZone ) ,
213226 eventEndTime : dayjs ( reminder . booking ?. endTime ) . tz ( timeZone ) ,
214227 timeZone : timeZone ,
@@ -224,13 +237,9 @@ export async function handler(req: NextRequest) {
224237 } `,
225238 ratingUrl : `${ bookerUrl } /booking/${ reminder . booking . uid } ?rating` ,
226239 noShowUrl : `${ bookerUrl } /booking/${ reminder . booking . uid } ?noShow=true` ,
227- attendeeTimezone : reminder . booking . attendees [ 0 ] . timeZone ,
228- eventTimeInAttendeeTimezone : dayjs ( reminder . booking . startTime ) . tz (
229- reminder . booking . attendees [ 0 ] . timeZone
230- ) ,
231- eventEndTimeInAttendeeTimezone : dayjs ( reminder . booking ?. endTime ) . tz (
232- reminder . booking . attendees [ 0 ] . timeZone
233- ) ,
240+ attendeeTimezone : targetAttendee ?. timeZone ,
241+ eventTimeInAttendeeTimezone : dayjs ( reminder . booking . startTime ) . tz ( targetAttendee ?. timeZone ) ,
242+ eventEndTimeInAttendeeTimezone : dayjs ( reminder . booking ?. endTime ) . tz ( targetAttendee ?. timeZone ) ,
234243 } ;
235244 const emailLocale = locale || "en" ;
236245 const brandingDisabled = reminder . booking . eventType ?. team
@@ -408,10 +417,10 @@ export async function handler(req: NextRequest) {
408417 }
409418 } else if ( reminder . isMandatoryReminder ) {
410419 try {
411- const sendTo = reminder . booking . attendees [ 0 ] . email ;
412- const name = reminder . booking . attendees [ 0 ] . name ;
420+ const sendTo = targetAttendee ? .email ;
421+ const name = targetAttendee ? .name ;
413422 const attendeeName = reminder . booking . user ?. name ;
414- const timeZone = reminder . booking . attendees [ 0 ] . timeZone ;
423+ const timeZone = targetAttendee ? .timeZone ;
415424
416425 let emailContent = {
417426 emailSubject : "" ,
0 commit comments