import React, { useEffect, useState } from "react";
import Checkbox from "@mui/material/Checkbox";
import FormControlLabel from "@mui/material/FormControlLabel";
import { Grid } from "../../../../components/grid/Grid";
import { useDispatch } from "react-redux";
import { provinceGetLimitation } from "../../services/province-get-limitation";
import { toUnderscore } from "../../../../utils/toCamelCase";
import { provincePolicyUpdateLimitations } from "../../services/province-policy-update-limitation";

const ProvincePolicyLimitAccess = () => {
  const dispatch = useDispatch();
  const [checkedItems, setCheckedItems] = useState();

  useEffect(() => {
    dispatch(provinceGetLimitation()).then((r) => {
      setCheckedItems(r.payload.data);
    });
  }, []);

  const handleChange = (event) => {
    const { name, checked } = event.target;
    setCheckedItems((prevCheckedItems) => {
      const updatedCheckedItems = {
        ...prevCheckedItems,
        [name]: checked,
      };
      handleSubmit(updatedCheckedItems);
      return updatedCheckedItems;
    });
  };

  const handleSubmit = (updatedCheckedItems) => {
    const newObject = {};
    for (const key in updatedCheckedItems) {
      if (Object.prototype.hasOwnProperty.call(updatedCheckedItems, key)) {
        const newKey = toUnderscore(key);
        newObject[newKey] = updatedCheckedItems[key];
      }
    }
    dispatch(provincePolicyUpdateLimitations(newObject));
  };

  return (
    <>
      {checkedItems && (
        <Grid display="grid" xs={12}>
          <FormControlLabel
            control={
              <Checkbox
                onChange={handleChange}
                name="vetFarmLimitation"
                checked={checkedItems?.vetFarmLimitation}
              />
            }
            label="محدودیت کد قرنطینه برای بار داخل استان"
          />

          <FormControlLabel
            control={
              <Checkbox
                checked={checkedItems?.vetFarmOutProvinceLimitation}
                onChange={handleChange}
                name="vetFarmOutProvinceLimitation"
              />
            }
            label="بار خارج از استان"
          />
          <FormControlLabel
            control={
              <Checkbox
                checked={checkedItems?.provinceAllocationLimitation}
                onChange={handleChange}
                name="provinceAllocationLimitation"
              />
            }
            label="محدودیت تخصیص استان به کشتارگاه"
          />
          <FormControlLabel
            control={
              <Checkbox
                checked={checkedItems?.killHouseAllocationLimitation}
                onChange={handleChange}
                name="killHouseAllocationLimitation"
              />
            }
            label="محدودیت ایجاد بار برای کشتارگاه"
          />
          <FormControlLabel
            control={
              <Checkbox
                checked={checkedItems?.killHouseVetLimitation}
                onChange={handleChange}
                name="killHouseVetLimitation"
              />
            }
            label="محدودیت تایید تخلیه برای دامپزشک"
          />
          <FormControlLabel
            control={
              <Checkbox
                checked={checkedItems?.vetCheckKillHouseAssignmentLimitation}
                onChange={handleChange}
                name="vetCheckKillHouseAssignmentLimitation"
              />
            }
            label="محدودیت تایید تخلیه ورود اطلاعات بار"
          />
          <FormControlLabel
            control={
              <Checkbox
                checked={checkedItems?.killHouseAssignmentLimitation}
                onChange={handleChange}
                name="killHouseAssignmentLimitation"
              />
            }
            label="محدودیت ورود اطلاعات بار کشتارگاه "
          />
          <FormControlLabel
            control={
              <Checkbox
                checked={checkedItems?.killHouseInputBarLimitation}
                onChange={handleChange}
                name="killHouseInputBarLimitation"
              />
            }
            label="محدودیت ورود بار به انبار کشتارگاه"
          />
          <FormControlLabel
            control={
              <Checkbox
                checked={
                  checkedItems?.killHouseStewardGuildAllocationLimitation
                }
                onChange={handleChange}
                name="killHouseStewardGuildAllocationLimitation"
              />
            }
            label="محدودیت تخصیص کشتارگاه به مباشر یا صنف"
          />
          <FormControlLabel
            control={
              <Checkbox
                checked={checkedItems?.killHouseFreezingLimitation}
                onChange={handleChange}
                name="killHouseFreezingLimitation"
              />
            }
            label="محدودیت انجماد برای کشتارگاه"
          />
          <FormControlLabel
            control={
              <Checkbox
                checked={checkedItems?.killHouseFreeSaleLimitation}
                onChange={handleChange}
                name="killHouseFreeSaleLimitation"
              />
            }
            label="محدودیت فروش آزاد برای کشتارگاه"
          />
          <FormControlLabel
            control={
              <Checkbox
                checked={checkedItems?.killHouseFreeBuyLimitation}
                onChange={handleChange}
                name="killHouseFreeBuyLimitation"
              />
            }
            label="محدودیت خرید آزاد برای کشتارگاه"
          />
        </Grid>
      )}
    </>
  );
};

export default ProvincePolicyLimitAccess;
