import React, { useEffect, useState } from "react"; import { useForm } from "react-hook-form"; import { yupResolver } from "@hookform/resolvers/yup"; import * as yup from "yup"; import MkdSDK from "@/utils/MkdSDK"; import { GlobalContext, showToast } from "@/globalContext"; import { useNavigate, useParams } from "react-router-dom"; import { AuthContext, tokenExpireError } from "@/authContext"; import EditAdminPageLayout from "@/layouts/EditAdminPageLayout"; let sdk = new MkdSDK(); const EditAdminPayoutPage = () => { const { dispatch } = React.useContext(AuthContext); const schema = yup .object({ // host_id: yup.number().required().positive().integer(), // customer_id: yup.number().required().positive().integer(), // property_id: yup.number().required().positive().integer(), total: yup.number().required().positive().typeError("total must be a number"), tax: yup.number().required().typeError("tax must be a number"), commission: yup.number().required().typeError("commission must be a number"), booking_id: yup.number().required().positive().integer().typeError("booking id must be a number"), status: yup.string(), }) .required(); const { dispatch: globalDispatch } = React.useContext(GlobalContext); const navigate = useNavigate(); const [id, setId] = useState(0); const [customerId, setCustomerId] = useState(0); const [hostId, setHostId] = useState(0); const [propertyId, setPropertyId] = useState(0); const { register, handleSubmit, setError, setValue, formState: { errors }, } = useForm({ resolver: yupResolver(schema), }); const params = useParams(); const selectStatus = [ { key: "0", value: "Pending" }, { key: "1", value: "initiated" }, { key: "2", value: "Paid" }, { key: "3", value: "Cancelled" }, ]; useEffect(function () { (async function () { try { sdk.setTable("payout"); const result = await sdk.callRestAPI({ id: Number(params?.id) }, "GET"); if (!result.error) { setHostId(result.model.host_id); setCustomerId(result.model.customer_id); setPropertyId(result.model.property_id); setValue("total", result.model.total); setValue("tax", result.model.tax ?? 0); setValue("commission", result.model.commission ?? 0); setValue("booking_id", result.model.booking_id); setValue("status", result.model.status); setId(result.model.id); } } catch (error) { console.log("error", error); tokenExpireError(dispatch, error.message); } })(); }, []); const onSubmit = async (data) => { try { let editedPayout = { id: id, host_id: hostId, customer_id: customerId, property_id: propertyId, total: data.total, tax: data.tax, commission: data.commission, booking_id: data.booking_id, status: data.status, }; if (editedPayout.status == "1") { let todayDate = new Date(); editedPayout.initiated_at = todayDate.toISOString(); } const result = await sdk.callRawAPI("/v2/api/custom/ergo/payout/PUT", { ...editedPayout }, "POST"); if (!result.error) { showToast(globalDispatch, "Updated"); navigate("/admin/payout"); } else { if (result.validation) { const keys = Object.keys(result.validation); for (let i = 0; i < keys.length; i++) { const field = keys[i]; setError(field, { type: "manual", message: result.validation[field], }); } } } } catch (error) { console.log("Error", error); setError("host_id", { type: "manual", message: error.message, }); } }; React.useEffect(() => { globalDispatch({ type: "SETPATH", payload: { path: "payout", }, }); }, []); return (
{/*

{errors.host_id?.message}

{errors.customer_id?.message}

{errors.property_id?.message}

{errors.booking_id?.message}

*/}
$

{errors.total?.message}

$

{errors.tax?.message}

$

{errors.commission?.message}

); }; export default EditAdminPayoutPage;