import { Formik, Form } from "formik"; import * as Yup from "yup"; import { Button } from "@nextui-org/react"; import { useNavigate } from "react-router-dom"; import InsertPostImage from "../components/InsertPostImage"; import NextUIFormikInput from "../components/NextUIFormikInput"; import { NextUIFormikDatePicker } from "../components/NextUIFormikDatePicker"; import instance from "../security/http"; import { ArrowUTurnLeftIcon } from "../icons"; // Validation schema const validationSchema = Yup.object({ brandLogo: Yup.mixed().required("Brand logo is required"), brand: Yup.string().trim().required("Brand name is required"), description: Yup.string().trim().required("Brand name is required"), expirationDate: Yup.date().required("Expiry date is required"), quantityAvailable: Yup.number().typeError("Must be a number").positive("Must be a positive value").required("Quantity is required"), code: Yup.string().trim().required("Code is required"), }); // Initial form values const initialValues = { brandLogo: null, brand: "", description: "", expirationDate: "", quantityAvailable: "", code: "", }; export default function CreateVoucherPage() { const navigate = useNavigate(); const handleSubmit = async ( values: any, { setSubmitting, resetForm, setFieldError, setFieldValue }: any ) => { const formData = new FormData(); if (values.brandLogo) { formData.append("brandLogo", values.brandLogo); } formData.append("brand", values.brand); formData.append("description", values.description); formData.append("expirationDate", values.expirationDate); formData.append("quantityAvailable", values.quantityAvailable); formData.append("code", values.code); try { const response = await instance.post("/vouchers", formData, { headers: { "Content-Type": "multipart/form-data", }, }); if (response.status === 200) { console.log("Voucher created successfully:", response.data); resetForm(); // Clear form after successful submit setFieldValue("brandLogo", null); navigate(-1); } else { console.error("Error creating voucher:", response.statusText); } } catch (error: any) { if (error.response && error.response.data && error.response.data.errors) { const errors = error.response.data.errors; Object.keys(errors).forEach((key) => { setFieldError(key, errors[key]); }); } else { console.error("Unexpected error:", error); } } finally { setSubmitting(false); } }; return (