Skip to content

Commit 0d46400

Browse files
committed
feat: select academic year of imports
1 parent 76665ce commit 0d46400

3 files changed

Lines changed: 36 additions & 10 deletions

File tree

collection/app/(app)/CSVImport.tsx

Lines changed: 25 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ import { Dropzone } from "@mantine/dropzone";
2121
import "@mantine/dropzone/styles.css";
2222
import { useForm } from "@mantine/form";
2323
import { useDisclosure } from "@mantine/hooks";
24-
import { RootItem } from "@prisma/client";
24+
import { AcademicYear, RootItem } from "@prisma/client";
2525
import React, { useState, useTransition } from "react";
2626
import {
2727
FaCircleCheck,
@@ -34,11 +34,19 @@ import {
3434
import useSWR from "swr";
3535

3636
interface CSVImportFormProp {
37-
/** Undefiend treated as loading UI */
3837
productsByAcademicYear: Record<string, RootItem[]>;
38+
/** Current academic year */
39+
academicYear: string;
40+
/** Valid academic years */
41+
validAcademicYears: string[];
3942
}
4043

41-
const CSVImportForm: React.FC<CSVImportFormProp> = ({ productsByAcademicYear }) => {
44+
// TODO: Pass in academic years explicitly, default to current year
45+
const CSVImportForm: React.FC<CSVImportFormProp> = ({
46+
productsByAcademicYear,
47+
academicYear,
48+
validAcademicYears,
49+
}) => {
4250
const [isPending, startTransition] = useTransition();
4351
const [formState, setFormState] = useState<StatusReturn>({
4452
status: "pending",
@@ -49,7 +57,7 @@ const CSVImportForm: React.FC<CSVImportFormProp> = ({ productsByAcademicYear })
4957
productId:
5058
productsByAcademicYear[Object.keys(productsByAcademicYear)[0]][0].id.toString(10),
5159
csv: [],
52-
academicYear: Object.keys(productsByAcademicYear)[0],
60+
academicYear: academicYear,
5361
},
5462
validate: {
5563
productId: (value: string) => {
@@ -120,7 +128,7 @@ const CSVImportForm: React.FC<CSVImportFormProp> = ({ productsByAcademicYear })
120128
name="academicYear"
121129
key={form.key("academicYear")}
122130
description="Import into this academic year"
123-
data={Object.keys(productsByAcademicYear)}
131+
data={validAcademicYears}
124132
required
125133
{...form.getInputProps("academicYear")}
126134
/>
@@ -219,7 +227,13 @@ const fetcher = async (...args: Parameters<typeof fetch>) => {
219227
return res.json();
220228
};
221229

222-
export const CSVImport = () => {
230+
export const CSVImport = ({
231+
academicYears,
232+
currentAcademicYear,
233+
}: {
234+
academicYears: string[];
235+
currentAcademicYear: string;
236+
}) => {
223237
const [opened, { open, close }] = useDisclosure(false);
224238

225239
const { data } = useSWR<Record<string, RootItem[]>>("/api/products", fetcher);
@@ -244,7 +258,11 @@ export const CSVImport = () => {
244258
</Center>
245259
</Stack>
246260
) : (
247-
<CSVImportForm productsByAcademicYear={data} />
261+
<CSVImportForm
262+
academicYear={currentAcademicYear}
263+
validAcademicYears={academicYears}
264+
productsByAcademicYear={data}
265+
/>
248266
)}
249267
</Stack>
250268
</Modal>

collection/app/(app)/PageActions.tsx

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,17 @@
11
import { AcademicYear } from "@docsoc/eactivities";
22
import { Paper, MultiSelect, Group } from "@mantine/core";
33
import { UseFormReturnType } from "@mantine/form";
4-
import React, { Suspense } from "react";
54

65
import { CSVImport } from "./CSVImport";
76

87
export const PageActions = ({
98
formHook,
109
academicYears,
10+
currentAcademicYear,
1111
}: {
1212
formHook: UseFormReturnType<{ academicYears: AcademicYear[]; shortcode: string }>;
1313
academicYears: string[];
14+
currentAcademicYear: string;
1415
}) => {
1516
return (
1617
<Paper p="lg" withBorder>
@@ -22,7 +23,10 @@ export const PageActions = ({
2223
data={academicYears}
2324
{...formHook.getInputProps("academicYears")}
2425
/>
25-
<CSVImport />
26+
<CSVImport
27+
academicYears={academicYears}
28+
currentAcademicYear={currentAcademicYear}
29+
/>
2630
</Group>
2731
</Paper>
2832
);

collection/app/(app)/UserSearch.tsx

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,11 @@ export const UserSearch: React.FC<UserSearchProps> = ({
108108
return (
109109
<Container w="70%">
110110
<Stack gap="lg">
111-
<PageActions academicYears={validAcaemicYears} formHook={form} />
111+
<PageActions
112+
currentAcademicYear={currentAcademicYear}
113+
academicYears={validAcaemicYears}
114+
formHook={form}
115+
/>
112116
<Center>
113117
<Stack w="90%" justify="centre" align="centre">
114118
<form

0 commit comments

Comments
 (0)