@@ -16,6 +16,39 @@ const formToJsonMap = {
1616 "expected-guests" : "expectedGuests" ,
1717} ;
1818
19+ interface EventRequestInput {
20+ organizingEntity : string ;
21+ initiatorName : string ;
22+ initiatorEmail : string ;
23+ initiatorPhoneNumber : string ;
24+ organization : string ;
25+ eventType : string ;
26+ eventName : string ;
27+ eventTheme : string ;
28+ eventPurpose : string ;
29+ eventDate : string ;
30+ eventStart : string ;
31+ eventEnd : string ;
32+ eventAgenda : string ;
33+ expectedGuests : number ;
34+ physicalPresence : boolean ;
35+ }
36+
37+ function assertString ( value : unknown , field : string ) : string {
38+ if ( typeof value !== 'string' ) {
39+ throw new Error ( `Field "${ field } " must be a string` ) ;
40+ }
41+ return value ;
42+ }
43+
44+ function assertNumber ( value : unknown , field : string ) : number {
45+ const num = typeof value === 'string' ? Number ( value ) : value ;
46+ if ( typeof num !== 'number' || Number . isNaN ( num ) ) {
47+ throw new Error ( `Field "${ field } " must be a number` ) ;
48+ }
49+ return num ;
50+ }
51+
1952export default {
2053 async submit ( ctx , next ) {
2154 const body = ctx . request . body ;
@@ -35,18 +68,34 @@ export default {
3568 return ;
3669 }
3770
38- const eventRequest = Object . keys ( formData ) . reduce ( ( acc , key ) => {
39- const value = formData [ key ] ;
71+ const raw : Record < string , unknown > = Object . keys ( formData ) . reduce ( ( acc , key ) => {
4072 const mappedKey = formToJsonMap [ key ] ;
4173 if ( mappedKey ) {
42- acc [ mappedKey ] = value ;
74+ acc [ mappedKey ] = formData [ key ] ;
4375 }
4476 return acc ;
4577 } , { } as Record < string , unknown > ) ;
4678
47- eventRequest . physicalPresence = eventRequest . physicalPresence === "yes" ;
48- eventRequest . eventStart += ":00" ;
49- eventRequest . eventEnd += ":00" ;
79+ const eventRequest : EventRequestInput = {
80+ organizingEntity : assertString ( raw . organizingEntity , 'organizingEntity' ) ,
81+ initiatorName : assertString ( raw . initiatorName , 'initiatorName' ) ,
82+ initiatorEmail : assertString ( raw . initiatorEmail , 'initiatorEmail' ) ,
83+ initiatorPhoneNumber : assertString ( raw . initiatorPhoneNumber , 'initiatorPhoneNumber' ) ,
84+ organization : assertString ( raw . organization , 'organization' ) ,
85+ eventType : assertString ( raw . eventType , 'eventType' ) ,
86+ eventName : assertString ( raw . eventName , 'eventName' ) ,
87+ eventTheme : assertString ( raw . eventTheme , 'eventTheme' ) ,
88+ eventPurpose : assertString ( raw . eventPurpose , 'eventPurpose' ) ,
89+ eventDate : assertString ( raw . eventDate , 'eventDate' ) ,
90+ eventStart : assertString ( raw . eventStart , 'eventStart' ) ,
91+ eventEnd : assertString ( raw . eventEnd , 'eventEnd' ) ,
92+ eventAgenda : assertString ( raw . eventAgenda , 'eventAgenda' ) ,
93+ expectedGuests : assertNumber ( raw . expectedGuests , 'expectedGuests' ) ,
94+ physicalPresence : raw . physicalPresence === 'yes' ,
95+ } ;
96+
97+ eventRequest . eventStart += ':00' ;
98+ eventRequest . eventEnd += ':00' ;
5099
51100 const res = await strapi . documents ( "api::event-request.event-request" ) . create ( {
52101 data : eventRequest ,
0 commit comments