Skip to content

Commit 3f16c35

Browse files
committed
new API
1 parent eb61649 commit 3f16c35

File tree

3 files changed

+48
-1
lines changed

3 files changed

+48
-1
lines changed

src/api/routes/roomRequests.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,13 @@ const roomRequestRoutes: FastifyPluginAsync = async (fastify, _options) => {
4343
message: "Could not retrieve username.",
4444
});
4545
}
46-
const body = { ...request.body, requestId, userId: request.username };
46+
const body = {
47+
...request.body,
48+
requestId,
49+
userId: request.username,
50+
"userId#requestId": `${request.username}#${requestId}`,
51+
semesterId: request.body.semester,
52+
};
4753
try {
4854
await fastify.dynamoClient.send(
4955
new PutItemCommand({

src/common/types/roomRequest.ts

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,33 @@ export const eventThemeOptions = [
1313
"Spirituality"
1414
] as [string, ...string[]];
1515

16+
export function getSemesters() {
17+
const currentDate = new Date();
18+
const currentYear = currentDate.getFullYear();
19+
const currentMonth = currentDate.getMonth() + 1;
20+
21+
let semesters = [];
22+
let currentSemester = '';
23+
24+
if (currentMonth >= 1 && currentMonth <= 5) {
25+
currentSemester = 'Spring';
26+
} else if (currentMonth >= 6 && currentMonth <= 12) {
27+
currentSemester = 'Fall';
28+
}
29+
30+
if (currentSemester === 'Spring') {
31+
semesters.push({ value: `sp${currentYear.toString().slice(-2)}`, label: `Spring ${currentYear}` });
32+
semesters.push({ value: `fa${currentYear.toString().slice(-2)}`, label: `Fall ${currentYear}` });
33+
semesters.push({ value: `sp${(currentYear + 1).toString().slice(-2)}`, label: `Spring ${currentYear + 1}` });
34+
} else if (currentSemester === 'Fall') {
35+
semesters.push({ value: `fa${currentYear.toString().slice(-2)}`, label: `Fall ${currentYear}` });
36+
semesters.push({ value: `sp${(currentYear + 1).toString().slice(-2)}`, label: `Spring ${currentYear + 1}` });
37+
semesters.push({ value: `fa${(currentYear + 1).toString().slice(-2)}`, label: `Fall ${currentYear + 1}` });
38+
}
39+
40+
return semesters;
41+
}
42+
1643
export const spaceTypeOptions = [
1744
{ value: "campus_classroom", label: "Campus Classroom" },
1845
{ value: "campus_performance", label: "Campus Performance Space *" },
@@ -33,6 +60,7 @@ export enum RoomRequestStatus {
3360

3461
export const roomRequestSchema = z.object({
3562
host: z.enum(OrganizationList),
63+
semester: z.string().regex(/^(fa|sp|su|wi)\d{2}$/, "Invalid semester provided"),
3664
title: z.string().min(2, "Title must have at least 2 characters"),
3765
theme: z.enum(eventThemeOptions),
3866
description: z.string()

src/ui/pages/roomRequest/NewRoomRequest.tsx

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ import {
2222
spaceTypeOptions,
2323
RoomRequestFormValues,
2424
RoomRequestPostResponse,
25+
getSemesters,
2526
} from '@common/types/roomRequest';
2627
import { useNavigate } from 'react-router-dom';
2728
import { notifications } from '@mantine/notifications';
@@ -142,13 +143,16 @@ const NewRoomRequest: React.FC<NewRoomRequestProps> = ({
142143
const [isSubmitting, setIsSubmitting] = useState(false);
143144
const numSteps = 4;
144145
const navigate = useNavigate();
146+
const semesterOptions = getSemesters();
147+
const semesterValues = semesterOptions.map((x) => x.value);
145148

146149
const form = useForm<RoomRequestFormValues>({
147150
enhanceGetInputProps: () => ({ disabled }),
148151
initialValues: initialValues || {
149152
host: '',
150153
title: '',
151154
theme: '',
155+
semester: '',
152156
description: '',
153157
hostingMinors: undefined,
154158
locationType: 'in-person',
@@ -181,6 +185,7 @@ const NewRoomRequest: React.FC<NewRoomRequestProps> = ({
181185
? null
182186
: 'Your description is too long.'
183187
: 'At least 10 words are required.',
188+
semester: semesterValues.includes(values.semester) ? null : 'Invalid semester selected.',
184189
};
185190
}
186191

@@ -331,6 +336,14 @@ const NewRoomRequest: React.FC<NewRoomRequestProps> = ({
331336
<>
332337
<Stepper active={active}>
333338
<Stepper.Step label="Step 1" description="Basic Information">
339+
<Select
340+
label="Semester"
341+
placeholder="Select event semester"
342+
withAsterisk
343+
searchable
344+
data={semesterOptions}
345+
{...form.getInputProps('semester')}
346+
/>
334347
<Select
335348
label="Event Host"
336349
placeholder="Select host organization"

0 commit comments

Comments
 (0)