@@ -124,6 +124,14 @@ const SecondaryActions = styled(Flex)`
124124 margin-top: var(--spacing-l);
125125` ;
126126
127+ function formatReserveeName (
128+ reservation : Pick < NodeT , "reserveeFirstName" | "reserveeLastName" >
129+ ) : string {
130+ return `${ reservation . reserveeFirstName || "" } ${
131+ reservation . reserveeLastName || ""
132+ } `. trim ( ) ;
133+ }
134+
127135function ReserveeBusinessInfo ( {
128136 reservation,
129137 supportedFields,
@@ -140,50 +148,52 @@ function ReserveeBusinessInfo({
140148 supportedFields : Pick < ReservationMetadataFieldNode , "fieldName" > [ ] ;
141149} ) : JSX . Element {
142150 const { t } = useTranslation ( ) ;
151+ const arr = [ ] ;
152+ if ( containsField ( supportedFields , "reserveeOrganisationName" ) ) {
153+ arr . push ( {
154+ key : "organisationName" ,
155+ label : t ( "reservations:organisationName" ) ,
156+ value : reservation . reserveeOrganisationName || "-" ,
157+ testId : "reservation__reservee-organisation-name" ,
158+ } ) ;
159+ }
160+ if ( containsField ( supportedFields , "reserveeId" ) ) {
161+ arr . push ( {
162+ key : "id" ,
163+ label : t ( "reservations:reserveeId" ) ,
164+ value : reservation . reserveeId || "-" ,
165+ testId : "reservation__reservee-id" ,
166+ } ) ;
167+ }
168+ if ( containsNameField ( supportedFields ) ) {
169+ arr . push ( {
170+ key : "name" ,
171+ label : t ( "reservations:contactName" ) ,
172+ value : formatReserveeName ( reservation ) ,
173+ testId : "reservation__reservee-name" ,
174+ } ) ;
175+ }
176+ if ( containsField ( supportedFields , "reserveePhone" ) ) {
177+ arr . push ( {
178+ key : "phone" ,
179+ label : t ( "reservations:contactPhone" ) ,
180+ value : reservation . reserveePhone ?? "-" ,
181+ testId : "reservation__reservee-phone" ,
182+ } ) ;
183+ }
184+ if ( containsField ( supportedFields , "reserveeEmail" ) ) {
185+ arr . push ( {
186+ key : "email" ,
187+ label : t ( "reservations:contactEmail" ) ,
188+ value : reservation . reserveeEmail ?? "-" ,
189+ testId : "reservation__reservee-email" ,
190+ } ) ;
191+ }
143192 return (
144193 < >
145- { containsField ( supportedFields , "reserveeOrganisationName" ) && (
146- < p >
147- { t ( "reservations:organisationName" ) } :{ " " }
148- < span data-testid = "reservation__reservee-organisation-name" >
149- { reservation . reserveeOrganisationName || "-" }
150- </ span >
151- </ p >
152- ) }
153- { containsField ( supportedFields , "reserveeId" ) && (
154- < p >
155- { t ( "reservations:reserveeId" ) } :
156- < span data-testid = "reservation__reservee-id" >
157- { reservation . reserveeId || "-" }
158- </ span >
159- </ p >
160- ) }
161- { containsNameField ( supportedFields ) && (
162- < p >
163- { t ( "reservations:contactName" ) } :{ " " }
164- < span data-testid = "reservation__reservee-name" >
165- { `${ reservation . reserveeFirstName || "" } ${
166- reservation . reserveeLastName || ""
167- } `. trim ( ) }
168- </ span >
169- </ p >
170- ) }
171- { containsField ( supportedFields , "reserveePhone" ) && (
172- < p >
173- { t ( "reservations:contactPhone" ) } :
174- < span data-testid = "reservation__reservee-phone" >
175- { reservation . reserveePhone }
176- </ span >
177- </ p >
178- ) }
179- { containsField ( supportedFields , "reserveeEmail" ) && (
180- < p >
181- { t ( "reservations:contactEmail" ) } :
182- < span data-testid = "reservation__reservee-email" >
183- { reservation . reserveeEmail }
184- </ span >
185- </ p >
186- ) }
194+ { arr . map ( ( { key, ...rest } ) => (
195+ < LabelValuePair key = { key } { ...rest } />
196+ ) ) }
187197 </ >
188198 ) ;
189199}
@@ -203,9 +213,7 @@ function ReserveePersonInfo({
203213 if ( containsNameField ( supportedFields ) ) {
204214 arr . push ( {
205215 key : "name" ,
206- value : `${ reservation . reserveeFirstName || "" } ${
207- reservation . reserveeLastName || ""
208- } `. trim ( ) ,
216+ value : formatReserveeName ( reservation ) ,
209217 } ) ;
210218 }
211219 if ( containsField ( supportedFields , "reserveePhone" ) ) {
@@ -222,12 +230,16 @@ function ReserveePersonInfo({
222230 }
223231 return (
224232 < >
225- { arr . map ( ( { key, value } ) => (
226- < p key = { key } >
227- { t ( `common:${ key } ` ) } :{ " " }
228- < span data-testid = { `reservation__reservee-${ key } ` } > { value } </ span >
229- </ p >
230- ) ) }
233+ { arr
234+ . map ( ( { key, value } ) => ( {
235+ key,
236+ label : t ( `common:${ key } ` ) ,
237+ value,
238+ testId : `reservation__reservee-${ key } ` ,
239+ } ) )
240+ . map ( ( { key, ...rest } ) => (
241+ < LabelValuePair key = { key } { ...rest } />
242+ ) ) }
231243 </ >
232244 ) ;
233245}
@@ -296,18 +308,38 @@ function ReservationInfo({
296308 return (
297309 < div >
298310 < H4 as = "h2" > { t ( "reservationApplication:applicationInfo" ) } </ H4 >
299- { fields . map ( ( field ) => (
300- < p key = { field } >
301- { t ( `reservationApplication:label.common.${ field } ` ) } :{ " " }
302- < span data-testid = { `reservation__${ field } ` } >
303- { getReservationValue ( reservation , field ) || "-" }
304- </ span >
305- </ p >
306- ) ) }
311+ { fields
312+ . map ( ( field ) => ( {
313+ key : field ,
314+ label : t ( `reservationApplication:label.common.${ field } ` ) ,
315+ value : getReservationValue ( reservation , field ) ?? "-" ,
316+ testId : `reservation__${ field } ` ,
317+ } ) )
318+ . map ( ( { key, ...rest } ) => (
319+ < LabelValuePair key = { key } { ...rest } />
320+ ) ) }
307321 </ div >
308322 ) ;
309323}
310324
325+ type LabelValuePairProps = {
326+ label : string ;
327+ value : string | number ;
328+ testId : string ;
329+ } ;
330+
331+ function LabelValuePair ( {
332+ label,
333+ value,
334+ testId,
335+ } : LabelValuePairProps ) : JSX . Element {
336+ return (
337+ < p >
338+ { label } : < span data-testid = { testId } > { value } </ span >
339+ </ p >
340+ ) ;
341+ }
342+
311343// TODO add a state check => if state is Created redirect to the reservation funnel
312344// if state is Cancelled, Denied, WaitingForPayment what then?
313345function Reservation ( {
0 commit comments