"use client"; import { useState } from "react"; import { useRouter } from "next/navigation"; import { ArrowLeft, Loader2 } from "lucide-react"; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; import { Textarea } from "@/components/ui/textarea"; import { Label } from "@/components/ui/label"; import { Switch } from "@/components/ui/switch"; import { Card, CardContent } from "@/components/ui/card"; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from "@/components/ui/select"; import { toast } from "sonner"; interface AlertFormProps { initialData?: { id?: string; title: string; titleEn: string; message: string; messageEn: string; type: string; region: string; active: boolean; activeFrom: string; activeTo: string; }; mode: "create" | "edit"; } export default function AlertForm({ initialData, mode }: AlertFormProps) { const router = useRouter(); const [loading, setLoading] = useState(false); const [title, setTitle] = useState(initialData?.title ?? ""); const [titleEn, setTitleEn] = useState(initialData?.titleEn ?? ""); const [message, setMessage] = useState(initialData?.message ?? ""); const [messageEn, setMessageEn] = useState(initialData?.messageEn ?? ""); const [type, setType] = useState(initialData?.type ?? "WARNING"); const [region, setRegion] = useState(initialData?.region ?? "bordeaux"); const [active, setActive] = useState(initialData?.active ?? true); const [activeFrom, setActiveFrom] = useState(initialData?.activeFrom ?? ""); const [activeTo, setActiveTo] = useState(initialData?.activeTo ?? ""); async function handleSubmit(e: React.FormEvent) { e.preventDefault(); if (loading) return; if (!title.trim() || !message.trim()) { toast.error("Veuillez remplir les champs obligatoires"); return; } setLoading(true); const body = { title: title.trim(), titleEn: titleEn.trim(), message: message.trim(), messageEn: messageEn.trim(), type, region: region.trim(), active, activeFrom: activeFrom || undefined, activeTo: activeTo || null, }; try { const url = mode === "create" ? "/api/alerts" : `/api/alerts/${initialData?.id}`; const method = mode === "create" ? "POST" : "PUT"; const res = await fetch(url, { method, headers: { "Content-Type": "application/json" }, body: JSON.stringify(body), }); if (!res.ok) { const data = await res.json(); toast.error(data.error || "Erreur"); return; } toast.success(mode === "create" ? "Alerte creee" : "Alerte mise a jour"); router.push("/alerts"); router.refresh(); } catch { toast.error("Une erreur est survenue"); } finally { setLoading(false); } } return (

{mode === "create" ? "Nouvelle alerte" : `Modifier — ${initialData?.title}`}

Informations

setTitle(e.target.value)} className="rounded-xl" required />
setTitleEn(e.target.value)} className="rounded-xl" />