diff --git a/apps/admin.saladeaula.digital/app/routes/_.$orgid.enrollments.add/course-picker.tsx b/apps/admin.saladeaula.digital/app/routes/_.$orgid.enrollments.add/course-picker.tsx index 0ffb2c0..ab9b2e6 100644 --- a/apps/admin.saladeaula.digital/app/routes/_.$orgid.enrollments.add/course-picker.tsx +++ b/apps/admin.saladeaula.digital/app/routes/_.$orgid.enrollments.add/course-picker.tsx @@ -146,8 +146,7 @@ export const CoursePicker = forwardRef( id, name, access_period, - metadata__unit_price: unit_price, - matches + metadata__unit_price: unit_price }) => { return ( r.json() as any) + }) + .then((r) => r.json() as any) + .then(({ items }) => items) - return { seats } + const courses = new Promise((resolve, reject) => { + resolve({ + hits: seats.map(({ course }) => ({ metadata__unit_price: 1, ...course })) + }) + }) + return { seats, courses } } -export default function Route({ loaderData: { seats } }: Route.ComponentProps) { - console.log(seats) +export default function Route({ + loaderData: { courses } +}: Route.ComponentProps) { + const { orgid } = useParams() + const form = useForm({ + resolver: zodResolver(formSchema), + defaultValues: { enrollments: [emptyRow] } + }) + const { formState, control, handleSubmit, getValues, setValue } = form + const { fields, insert, remove, append } = useFieldArray({ + control, + name: 'enrollments' + }) + + const onSearch = async (search: string) => { + const params = new URLSearchParams({ q: search }) + const r = await fetch(`/${orgid}/users.json?${params.toString()}`) + const { hits } = (await r.json()) as { hits: User[] } + return hits + } + + const duplicateRow = (index: number, times: number = 1) => { + if (fields.length + times > MAX_ITEMS) { + return null + } + + const { user, ...rest } = getValues(`enrollments.${index}`) + Array.from({ length: times }, (_, i) => { + // @ts-ignore + insert(index + 1 + i, rest) + }) + } + return (
@@ -59,7 +129,158 @@ export default function Route({ loaderData: { seats } }: Route.ComponentProps) { abertas. - ... + + +
+ {/* Header */} + <> + Colaborador + Curso + + Matricular em + + + + + +

+ Escolha a data em que o colaborador será matriculado no + curso. +

+ +

+ Você poderá acompanhar as matrículas em{' '} + Agendamentos +

+
+
+
+ {/**/} + + + {/* Rows */} + <> + {fields.map((field, index) => ( + + {/* Separator only for mobile */} + {index >= 1 &&
} + + ( +
+ + + ( +

+ {message} +

+ )} + /> +
+ )} + /> + + ( +
+ + ( +

+ {message} +

+ )} + /> +
+ )} + /> + + ( + + )} + /> + + {/* Action */} +
+ + + + + +
+
+ ))} + +
+ +
+ +
+
)