@@ -68,6 +68,7 @@ type DatabaseBooking = Booking & {
6868 eventType : {
6969 id : number ;
7070 slug : string ;
71+ seatsShowAttendees ?: boolean | null ;
7172 } | null ;
7273 attendees : {
7374 name : string ;
@@ -167,6 +168,7 @@ export class OutputBookingsService_2024_08_13 {
167168 getUserDefinedMetadata ( databaseMetadata : DatabaseMetadata ) {
168169 if ( databaseMetadata === null ) return { } ;
169170
171+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
170172 const { videoCallUrl, ...userDefinedMetadata } = databaseMetadata ;
171173
172174 return userDefinedMetadata ;
@@ -266,11 +268,14 @@ export class OutputBookingsService_2024_08_13 {
266268 databaseBooking : DatabaseBooking ,
267269 seatUid : string
268270 ) : Promise < CreateSeatedBookingOutput_2024_08_13 > {
269- const getSeatedBookingOutput = await this . getOutputSeatedBooking ( databaseBooking ) ;
271+ const getSeatedBookingOutput = await this . getOutputSeatedBooking (
272+ databaseBooking ,
273+ ! ! databaseBooking . eventType ?. seatsShowAttendees
274+ ) ;
270275 return { ...getSeatedBookingOutput , seatUid } ;
271276 }
272277
273- async getOutputSeatedBooking ( databaseBooking : DatabaseBooking ) {
278+ async getOutputSeatedBooking ( databaseBooking : DatabaseBooking , showAttendees : boolean ) {
274279 const dateStart = DateTime . fromISO ( databaseBooking . startTime . toISOString ( ) ) ;
275280 const dateEnd = DateTime . fromISO ( databaseBooking . endTime . toISOString ( ) ) ;
276281 const duration = dateEnd . diff ( dateStart , "minutes" ) . minutes ;
@@ -317,41 +322,43 @@ export class OutputBookingsService_2024_08_13 {
317322 const parsed = plainToClass ( GetSeatedBookingOutput_2024_08_13 , booking , { strategy : "excludeAll" } ) ;
318323
319324 // note(Lauris): I don't know why plainToClass erases booking.attendees[n].responses so attaching manually
320- parsed . attendees = databaseBooking . attendees . map ( ( attendee ) => {
321- const { responses } = safeParse (
322- seatedBookingDataSchema ,
323- attendee . bookingSeat ?. data ,
324- defaultSeatedBookingData ,
325- false
326- ) ;
327-
328- const attendeeData = {
329- name : attendee . name ,
330- email : attendee . email ,
331- timeZone : attendee . timeZone ,
332- language : attendee . locale ,
333- absent : ! ! attendee . noShow ,
334- seatUid : attendee . bookingSeat ?. referenceUid ,
335- bookingFieldsResponses : { } ,
336- } ;
337- const attendeeParsed = plainToClass ( SeatedAttendee , attendeeData , { strategy : "excludeAll" } ) ;
338- attendeeParsed . bookingFieldsResponses = responses || { } ;
339- attendeeParsed . metadata = safeParse (
340- seatedBookingMetadataSchema ,
341- attendee . bookingSeat ?. metadata ,
342- defaultSeatedBookingMetadata ,
343- false
344- ) ;
345- // note(Lauris): as of now email is not returned for privacy
346- delete attendeeParsed . bookingFieldsResponses . email ;
347-
348- return attendeeParsed ;
349- } ) ;
325+ parsed . attendees = showAttendees
326+ ? databaseBooking . attendees . map ( ( attendee ) => {
327+ const { responses } = safeParse (
328+ seatedBookingDataSchema ,
329+ attendee . bookingSeat ?. data ,
330+ defaultSeatedBookingData ,
331+ false
332+ ) ;
333+
334+ const attendeeData = {
335+ name : attendee . name ,
336+ email : attendee . email ,
337+ timeZone : attendee . timeZone ,
338+ language : attendee . locale ,
339+ absent : ! ! attendee . noShow ,
340+ seatUid : attendee . bookingSeat ?. referenceUid ,
341+ bookingFieldsResponses : { } ,
342+ } ;
343+ const attendeeParsed = plainToClass ( SeatedAttendee , attendeeData , { strategy : "excludeAll" } ) ;
344+ attendeeParsed . bookingFieldsResponses = responses || { } ;
345+ attendeeParsed . metadata = safeParse (
346+ seatedBookingMetadataSchema ,
347+ attendee . bookingSeat ?. metadata ,
348+ defaultSeatedBookingMetadata ,
349+ false
350+ ) ;
351+ // note(Lauris): as of now email is not returned for privacy
352+ delete attendeeParsed . bookingFieldsResponses . email ;
353+
354+ return attendeeParsed ;
355+ } )
356+ : [ ] ;
350357
351358 return parsed ;
352359 }
353360
354- async getOutputRecurringSeatedBookings ( bookingsIds : number [ ] ) {
361+ async getOutputRecurringSeatedBookings ( bookingsIds : number [ ] , showAttendees : boolean ) {
355362 const transformed = [ ] ;
356363
357364 for ( const bookingId of bookingsIds ) {
@@ -361,7 +368,7 @@ export class OutputBookingsService_2024_08_13 {
361368 throw new Error ( `Booking with id=${ bookingId } was not found in the database` ) ;
362369 }
363370
364- transformed . push ( this . getOutputRecurringSeatedBooking ( databaseBooking ) ) ;
371+ transformed . push ( this . getOutputRecurringSeatedBooking ( databaseBooking , showAttendees ) ) ;
365372 }
366373
367374 return transformed . sort ( ( a , b ) => new Date ( a . start ) . getTime ( ) - new Date ( b . start ) . getTime ( ) ) ;
@@ -386,11 +393,14 @@ export class OutputBookingsService_2024_08_13 {
386393 databaseBooking : DatabaseBooking ,
387394 seatUid : string
388395 ) : CreateRecurringSeatedBookingOutput_2024_08_13 {
389- const getRecurringSeatedBookingOutput = this . getOutputRecurringSeatedBooking ( databaseBooking ) ;
396+ const getRecurringSeatedBookingOutput = this . getOutputRecurringSeatedBooking (
397+ databaseBooking ,
398+ ! ! databaseBooking . eventType ?. seatsShowAttendees
399+ ) ;
390400 return { ...getRecurringSeatedBookingOutput , seatUid } ;
391401 }
392402
393- getOutputRecurringSeatedBooking ( databaseBooking : DatabaseBooking ) {
403+ getOutputRecurringSeatedBooking ( databaseBooking : DatabaseBooking , showAttendees : boolean ) {
394404 const dateStart = DateTime . fromISO ( databaseBooking . startTime . toISOString ( ) ) ;
395405 const dateEnd = DateTime . fromISO ( databaseBooking . endTime . toISOString ( ) ) ;
396406 const duration = dateEnd . diff ( dateStart , "minutes" ) . minutes ;
@@ -430,35 +440,37 @@ export class OutputBookingsService_2024_08_13 {
430440 } ) ;
431441
432442 // note(Lauris): I don't know why plainToClass erases booking.attendees[n].responses so attaching manually
433- parsed . attendees = databaseBooking . attendees . map ( ( attendee ) => {
434- const { responses } = safeParse (
435- seatedBookingDataSchema ,
436- attendee . bookingSeat ?. data ,
437- defaultSeatedBookingData ,
438- false
439- ) ;
440-
441- const attendeeData = {
442- name : attendee . name ,
443- email : attendee . email ,
444- timeZone : attendee . timeZone ,
445- language : attendee . locale ,
446- absent : ! ! attendee . noShow ,
447- seatUid : attendee . bookingSeat ?. referenceUid ,
448- bookingFieldsResponses : { } ,
449- } ;
450- const attendeeParsed = plainToClass ( SeatedAttendee , attendeeData , { strategy : "excludeAll" } ) ;
451- attendeeParsed . bookingFieldsResponses = responses || { } ;
452- attendeeParsed . metadata = safeParse (
453- seatedBookingMetadataSchema ,
454- attendee . bookingSeat ?. metadata ,
455- defaultSeatedBookingMetadata ,
456- false
457- ) ;
458- // note(Lauris): as of now email is not returned for privacy
459- delete attendeeParsed . bookingFieldsResponses . email ;
460- return attendeeParsed ;
461- } ) ;
443+ parsed . attendees = showAttendees
444+ ? databaseBooking . attendees . map ( ( attendee ) => {
445+ const { responses } = safeParse (
446+ seatedBookingDataSchema ,
447+ attendee . bookingSeat ?. data ,
448+ defaultSeatedBookingData ,
449+ false
450+ ) ;
451+
452+ const attendeeData = {
453+ name : attendee . name ,
454+ email : attendee . email ,
455+ timeZone : attendee . timeZone ,
456+ language : attendee . locale ,
457+ absent : ! ! attendee . noShow ,
458+ seatUid : attendee . bookingSeat ?. referenceUid ,
459+ bookingFieldsResponses : { } ,
460+ } ;
461+ const attendeeParsed = plainToClass ( SeatedAttendee , attendeeData , { strategy : "excludeAll" } ) ;
462+ attendeeParsed . bookingFieldsResponses = responses || { } ;
463+ attendeeParsed . metadata = safeParse (
464+ seatedBookingMetadataSchema ,
465+ attendee . bookingSeat ?. metadata ,
466+ defaultSeatedBookingMetadata ,
467+ false
468+ ) ;
469+ // note(Lauris): as of now email is not returned for privacy
470+ delete attendeeParsed . bookingFieldsResponses . email ;
471+ return attendeeParsed ;
472+ } )
473+ : [ ] ;
462474
463475 return parsed ;
464476 }
0 commit comments