diff --git a/frontend/app/(auth)/dashboard/members/new/page.tsx b/frontend/app/(auth)/dashboard/members/new/page.tsx deleted file mode 100644 index 33cc8b8..0000000 --- a/frontend/app/(auth)/dashboard/members/new/page.tsx +++ /dev/null @@ -1,233 +0,0 @@ -"use client"; - -import { z } from "zod"; -import { zodResolver } from "@hookform/resolvers/zod"; -import { useForm } from "react-hook-form"; - -import { - Form, - FormControl, - FormField, - FormItem, - FormLabel, - FormMessage, -} from "@/components/ui/form"; -import { Button } from "@/components/ui/button"; -import { - Card, - CardContent, - CardDescription, - CardHeader, - CardTitle, -} from "@/components/ui/card"; -import { Input } from "@/components/ui/input"; -import useApiMutation from "@/hooks/use-api"; -import { - Select, - SelectContent, - SelectGroup, - SelectItem, - SelectLabel, - SelectTrigger, - SelectValue, -} from "@/components/ui/select" - -const formSchema = z.object({ - firstname: z.string().min(2, { message: "Prénom trop court." }), - lastname: z.string().min(2, { message: "Nom trop court." }), - role: z.enum(["admin", "user"], { message: "Rôle invalide." }), - phone: z - .string() - .max(10, { message: "Un numéro de téléphone à 10 chiffres." }) - .optional(), - email: z.string().email({ message: "Email invalide." }) -}); - -export default function CreateMemberForm() { - const { - trigger - } = useApiMutation( - "/users/new", - { onSuccess: () => console.log("Member created") }, - "POST", - true, - false - ) - - const form = useForm>({ - resolver: zodResolver(formSchema), - defaultValues: { - firstname: "", - lastname: "", - role: "user", - phone: "", - email: "", - }, - }); - - async function onSubmit(values: z.infer) { - try { - const res = await trigger(values) - if (!res) throw new Error("The server hasn't responded."); - if (res.status === "Error") throw new Error(res.message); - } catch (error) { - console.error("Form submission error", error); - } - console.log("submited"); - } - - return ( -
- - - Création de membre - - Remplissez les différents champs pour créer un membre. - Un code sera envoyé par mail à l'utilisateur. - Il pourra ensuite modifier le mot de passe de son compte avec ce code. - - - -
- -
- {/* Firstname Field */} - ( - - - Prénom - - - - - - - )} - /> -
- {/* Firstname Field */} - ( - - - Nom - - - - - - - )} - /> - - {/* Email Field */} - ( - - - Email - - - - - - - )} - /> - - ( - - - Role - - - - - - - )} - /> - - {/* Phone Field */} - ( - - - Phone number - - - - - - - )} - /> - - -
-
-
- -
-
-
- ); -} diff --git a/frontend/components/app-sidebar.tsx b/frontend/components/app-sidebar.tsx index 3efcdfb..06db639 100644 --- a/frontend/components/app-sidebar.tsx +++ b/frontend/components/app-sidebar.tsx @@ -58,10 +58,6 @@ const data = { title: "Liste des membres", url: "/dashboard/members", }, - { - title: "Création d'un membre", - url: "/dashboard/members/new", - }, ], }, { diff --git a/frontend/components/member-dialog.tsx b/frontend/components/member-dialog.tsx index 9539c55..730fb4c 100644 --- a/frontend/components/member-dialog.tsx +++ b/frontend/components/member-dialog.tsx @@ -11,7 +11,6 @@ import { } from "@/components/ui/dialog"; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; -import { Label } from "@/components/ui/label"; import { Form, FormControl, @@ -20,6 +19,15 @@ import { FormLabel, FormMessage, } from "@/components/ui/form"; +import { + Select, + SelectContent, + SelectGroup, + SelectItem, + SelectLabel, + SelectTrigger, + SelectValue, +} from "./ui/select"; const memberSchema = z.object({ userId: z.string().optional(), @@ -94,51 +102,171 @@ export default function MemberDialog({ {member - ? "Mis à jour du membre" + ? "Mise à jour du membre" : "Créer un nouveau membre"}
- {( - [ - "userId", - "firstname", - "lastname", - "email", - "password", - "phone", - "role", - ] as const - ).map((field) => ( +
+ {/* Firstname Field */} ( - - - {field.name - .charAt(0) - .toUpperCase() + - field.name.slice(1)} + + + Prénom )} /> - ))} +
+ {/* Firstname Field */} + ( + + + Nom + + + + + + + )} + /> + + {/* Email Field */} + ( + + + Email + + + + + + + )} + /> + {/* Password Field */} + {!member?.userId && ( + ( + + + Mot de passe + + + + + + + )} + /> + )} + + ( + + + Role + + + + + + + )} + /> + + {/* Phone Field */} + ( + + + Phone number + + + + + + + )} + /> +
+