Skip to content

Commit a2874fe

Browse files
authored
Merge pull request #14 from 42dotmk/events-backend-suport
Created seperate interface to fix build
2 parents 6abebbb + 00f87e3 commit a2874fe

1 file changed

Lines changed: 55 additions & 6 deletions

File tree

  • cms/src/api/event-request/controllers

cms/src/api/event-request/controllers/form.ts

Lines changed: 55 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -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+
1952
export 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

Comments
 (0)