import { useState } from "react"; import { useForm } from "react-hook-form"; import { zodResolver } from "@hookform/resolvers/zod"; import { z } from "zod"; import { useLanguage } from "../contexts/LanguageContext"; import { useCreateRequest } from "@workspace/api-client-react"; import { Form, FormControl, FormField, FormItem, FormLabel, FormMessage } from "@/components/ui/form"; import { Input } from "@/components/ui/input"; import { Textarea } from "@/components/ui/textarea"; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@/components/ui/select"; import { Button } from "@/components/ui/button"; import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"; import { Badge } from "@/components/ui/badge"; import { CheckCircle, XCircle, Clock } from "lucide-react"; import { Riyal } from "@/components/Riyal"; const schema = z.object({ beneficiaryName: z.string().min(2), nationalId: z.string().min(10).max(10), phone: z.string().min(10), source: z.enum(["beneficiary", "charity", "official"]), sourceName: z.string().min(2), needType: z.enum(["electricity", "water", "food", "health", "housing", "refrigerator", "air_conditioner", "court_order"]), requestedAmount: z.coerce.number().positive(), description: z.string().min(20), }); type FormData = z.infer; export default function RequestSupport() { const { t } = useLanguage(); const [submitted, setSubmitted] = useState(null); const createRequest = useCreateRequest(); const form = useForm({ resolver: zodResolver(schema), defaultValues: { beneficiaryName: "", nationalId: "", phone: "", source: "beneficiary", sourceName: "", needType: "electricity", requestedAmount: 0, description: "", }, }); const onSubmit = (data: FormData) => { createRequest.mutate( { data }, { onSuccess: (result) => { setSubmitted(result); }, } ); }; if (submitted) { const isVerified = submitted.status === "verified"; const isRejected = submitted.status === "rejected"; const isPending = submitted.status === "pending_review"; return (
{isVerified && (

{isVerified ? (t as any).statuses.verified : ""}

{t.request.submitSuccess}

{t.statuses.verified}
)} {isPending && (

{t.statuses.pending_review}

{t.request.submitSuccess}

{t.statuses.pending_review}
)} {isRejected && (

{t.statuses.rejected}

{submitted.rejectionReason}

{t.statuses.rejected}
)}

{submitted.caseId}

{submitted.beneficiaryName}

); } return (

{t.request.title}

{t.home.heroSubtitle}

{t.request.title}
( {t.request.beneficiaryName} )} /> ( {t.request.nationalId} )} />
( {t.request.phone} )} />
( {t.request.source} )} /> ( {t.request.sourceName} )} />
( {t.request.needType} )} /> ( {t.request.amount} () )} />
( {t.request.description}