import { Autocomplete, IconButton, TextField, Typography } from "@mui/material";
import { Grid } from "../../../../components/grid/Grid";
import { useFormik } from "formik";
import { Yup } from "../../../../lib/yup/yup";
import { SPACING } from "../../../../data/spacing";
import { useDispatch, useSelector } from "react-redux";
import { LOADING_END } from "../../../../lib/redux/slices/appSlice";
import {
stewardSellOutGetBuyers,
stewatdSubmitBuyerDataService,
} from "../../../guild/services/steward-sell-out-get-buyers";
import { useContext, useEffect } from "react";
import { AppContext } from "../../../../contexts/AppContext";
import SearchIcon from "@mui/icons-material/Search";
import { slaughterEditBuyerDataService } from "../../../slaughter-house/services/slaughter-house-submit-buyer";
export const validationSchemaForStewardAddBuyer = Yup.object({
mobile: Yup.string()
.required("این فیلد اجباری است!")
.min(11, "شماره موبایل باید 11 رقم باشد")
.max(11, "شماره موبایل باید 11 رقم باشد")
.matches(/^09\d{9}$/, "شماره موبایل باید با 09 شروع شود و 11 رقم باشد"),
firstName: Yup.string()
.required("این فیلد اجباری است!")
.typeError("لطفا فیلد را به درستی وارد کنید!"),
lastName: Yup.string()
.required("این فیلد اجباری است!")
.typeError("لطفا فیلد را به درستی وارد کنید!"),
unit_name: Yup.string()
.required("این فیلد اجباری است!")
.typeError("لطفا فیلد را به درستی وارد کنید!"),
province: Yup.string()
.required("این فیلد اجباری است!")
.typeError("لطفا فیلد را به درستی وارد کنید!"),
city: Yup.string()
.required("این فیلد اجباری است!")
.typeError("لطفا فیلد را به درستی وارد کنید!"),
});
export const handleSubmitForStewardAddBuyer = (
formik,
dispatch,
isEdit,
tableData,
updateTable,
openNotif,
DRAWER,
role
) => {
if (isEdit) {
dispatch(
slaughterEditBuyerDataService({
buyer_key: tableData?.key,
mobile: formik.values.mobile,
first_name: formik.values.firstName,
last_name: formik.values.lastName,
unit_name: formik.values.unit_name,
city: formik.values.city,
province: formik.values.province,
})
).then((r) => {
updateTable();
if (r.payload.error) {
openNotif({
vertical: "top",
horizontal: "center",
msg: r.payload.error,
severity: "error",
});
} else {
dispatch(DRAWER({ right: false, bottom: false, content: null }));
openNotif({
vertical: "top",
horizontal: "center",
msg: "عملیات با موفقیت انجام شد.",
severity: "success",
});
}
});
} else {
dispatch(
stewatdSubmitBuyerDataService({
role: role,
mobile: formik.values.mobile,
first_name: formik.values.firstName,
last_name: formik.values.lastName,
unit_name: formik.values.unit_name,
city: formik.values.city,
province: formik.values.province,
})
).then((r) => {
updateTable();
if (r.payload.error) {
openNotif({
vertical: "top",
horizontal: "center",
msg: r.payload.error,
severity: "error",
});
} else {
dispatch(DRAWER({ right: false, bottom: false, content: null }));
openNotif({
vertical: "top",
horizontal: "center",
msg: "عملیات با موفقیت انجام شد.",
severity: "success",
});
}
});
}
};
export const handleSetFormDataFromTableDataForStewardAddBuyer = (
tableData,
formik
) => {
formik.setValues({
mobile: tableData.mobile || "",
firstName: tableData.firstName || "",
lastName: tableData.lastName || "",
unit_name: tableData.unitName || "",
province: tableData.province || "",
city: tableData.city || "",
});
setTimeout(() => {
formik.validateForm();
}, 1);
};
export const handleSetFormDataFromUserDataForStewardAddBuyer = (
userData,
formik
) => {
const user = userData?.[0];
if (user) {
console.log(user);
formik.setValues({
mobile: user.mobile || "",
firstName: user.firstName || "",
lastName: user.lastName || "",
unit_name: user.unitName || "",
province: user.province || "",
city: user.city || "",
});
setTimeout(() => {
formik.validateForm();
}, 1);
}
};
export const InquiryForStewardAddBuyer = ({
notFound,
setNotFound,
setUserData,
formik,
}) => {
const [openNotif] = useContext(AppContext);
const selectedSubUser = useSelector(
(state) => state.userSlice.selectedSubUser
);
const dispatch = useDispatch();
const formik2 = useFormik({
initialValues: {
mobile: "",
},
validationSchema: Yup.object({
mobile: Yup.string()
.required("این فیلد اجباری است!")
.min(11, "شماره موبایل باید 11 رقم باشد")
.max(11, "شماره موبایل باید 11 رقم باشد")
.matches(/^09\d{9}$/, "شماره موبایل باید با 09 شروع شود و 11 رقم باشد"),
}),
validateOnMount: true,
});
const handleInquiry = () => {
dispatch(
stewardSellOutGetBuyers({
mobile: formik2.values.mobile,
role_key: selectedSubUser?.key || "",
})
).then((r) => {
dispatch(LOADING_END());
if (r.error) {
setNotFound(true);
openNotif({
vertical: "top",
horizontal: "center",
msg: "خریدار یافت نشد، یک خریدار جدید ثبت کنید!",
severity: "error",
});
} else {
const responseData = r.payload?.data;
// Check if response is an empty array
if (Array.isArray(responseData) && responseData.length === 0) {
setNotFound(true);
setUserData(null);
} else {
setNotFound(false);
handleSetFormDataFromUserDataForStewardAddBuyer(responseData, formik);
setUserData(responseData);
}
}
});
};
useEffect(() => {
if (notFound) {
formik.setFieldValue("mobile", formik2.values.mobile);
}
}, [notFound]);
return (
جستجو کاربر
{
formik2.handleChange(e);
// Reset notFound when user starts typing
if (notFound) {
setNotFound(false);
}
}}
onBlur={formik2.handleBlur}
helperText={formik2.touched.mobile && formik2.errors.mobile}
/>
{notFound && (
خریداری یافت نشد
)}
);
};
export const StewardAddBuyerForm = ({
formik,
provinceData,
cityData,
notFound,
}) => {
return (
{provinceData.length > 0 && (
({ id: i.name, label: i.name }))
: []
}
onChange={(e, value) => {
formik.setFieldValue("province", value ? value.id : "");
formik.setFieldValue("city", "");
}}
renderInput={(params) => (
)}
value={
provinceData.find((i) => i.name === formik.values.province)?.name
}
/>
)}
{!notFound && (
استان: {formik.values.province}
)}
{cityData.length > 0 && (
({ id: i.name, label: i.name })) : []
}
onChange={(e, value) => {
formik.setFieldValue("city", value ? value.id : "");
}}
renderInput={(params) => (
)}
value={cityData.find((i) => i.name === formik.values.city)?.name}
/>
)}
{!notFound && (
شهر: {formik.values.city}
)}
);
};