"use client"; import { useForm } from "react-hook-form"; import { zodResolver } from "@hookform/resolvers/zod"; import * as z from "zod"; import { Button } from "@/components/ui/button"; import { Form, FormControl, FormField, FormItem, FormLabel, FormMessage } from "@/components/ui/form"; import { Input } from "@/components/ui/input"; import { toast } from "sonner"; import { documentNumberingService } from "@/lib/services/document-numbering.service"; import { CancelNumberDto } from "@/types/dto/numbering.dto"; import { useState } from "react"; const formSchema = z.object({ documentNumber: z.string().min(3, "Document Number is required"), reason: z.string().min(5, "Reason must be at least 5 characters"), }); type CancelNumberFormData = z.infer; export function CancelNumberForm() { const [loading, setLoading] = useState(false); const form = useForm({ resolver: zodResolver(formSchema) as any, defaultValues: { documentNumber: "", reason: "", }, }); async function onSubmit(values: CancelNumberFormData) { setLoading(true); try { const dto: CancelNumberDto = values; await documentNumberingService.cancelNumber(dto); toast.success("Number cancelled successfully."); form.reset(); } catch (error) { toast.error("Failed to cancel number. It may not exist or is already cancelled."); console.error(error); } finally { setLoading(false); } } return (

Cancel Number

Permanently cancel a number (e.g. if generated by mistake). It cannot be reused.

( Document Number )} /> ( Reason )} /> ); }