import React, { useEffect, useState } from "react";
import { Grid } from "../components/grid/Grid";
import { BackButton } from "../components/back-button/BackButton";
import { Box, Button } from "@mui/material";
import { useParams } from "react-router-dom";
import { useDispatch, useSelector } from "react-redux";
import { provincePaymentGetKillersOfKillhousesInfo } from "../features/province/services/province-payment-get-killers-of-killhouses-info";
import ResponsiveTable from "../components/responsive-table/ResponsiveTable";
import { OPEN_MODAL } from "../lib/redux/slices/appSlice";
import { SimpleTable } from "../components/simple-table/SimpleTable";

const ProvinceKillersWages = () => {
  const { key } = useParams();
  const [tableData, setTableData] = useState();

  const dispatch = useDispatch();

  useEffect(() => {
    dispatch(
      provincePaymentGetKillersOfKillhousesInfo({ kill_house_key: key })
    );
  }, []);
  const { provincePaymentByWeightOverview } = useSelector(
    (item) => item.provinceSlice
  );
  const { provincePaymentKillersOfKillhouses } = useSelector(
    (item) => item.provinceSlice
  );

  const getKillHouseShares = (shares, name) => {
    // if (!shares || shares.length === 0) {
    //   return (
    //     <Button size="small" variant="outlined" disabled>
    //       بدون سهم‌بندی
    //     </Button>
    //   );
    // }

    const shareData = shares.map((share, i) => [
      i + 1,
      share?.name,
      share?.provinceKillRequestWage?.toLocaleString() || "0",
      share?.freeSellCarcassesWage?.toLocaleString() || "0",
      share?.freeBuyingCarcassesWage?.toLocaleString() || "0",
      share?.freeBuyingLiveWage?.toLocaleString() || "0",
      (
        (share?.provinceKillRequestWage || 0) +
        (share?.freeSellCarcassesWage || 0) +
        (share?.freeBuyingCarcassesWage || 0) +
        (share?.freeBuyingLiveWage || 0)
      )?.toLocaleString(),
      share?.totalPaidWage?.toLocaleString() || "0",
      share?.totalUnpaidWage?.toLocaleString() || "0",
    ]);

    return (
      <Button
        size="small"
        variant="outlined"
        color="success"
        onClick={() => {
          dispatch(
            OPEN_MODAL({
              title: "سهم بندی تعرفه کشتارگاه " + name,
              size: 1000,
              content: (
                <Grid container xs={12} justifyContent="center">
                  <SimpleTable
                    data={shareData}
                    columns={[
                      "ردیف",
                      "سهم",
                      `${
                        provincePaymentByWeightOverview?.wageInfo
                          ?.wageCountingType === "live"
                          ? "تعرفه کشتار داخل استان (ریال)"
                          : " تعرفه توزیع لاشه داخل استان (ریال)"
                      }`,
                      "تعرفه توزیع لاشه خارج استان (ریال)",
                      "تعرفه لاشه ورودی به استان (ریال)",
                      "تعرفه مرغ زنده ورودی به استان (ریال)",
                      "تعرفه کل (ریال)",
                      "تعرفه پرداخت شده (ریال)",
                      "تعرفه پرداخت نشده (ریال)",
                    ]}
                  />
                </Grid>
              ),
            })
          );
        }}
      >
        مشاهده
      </Button>
    );
  };

  useEffect(() => {
    if (provincePaymentByWeightOverview) {
      const d = provincePaymentKillersOfKillhouses?.map((item, i) => {
        if (
          provincePaymentByWeightOverview?.wageInfo?.wageCountingType === "live"
        ) {
          return [
            item?.name,
            Math.ceil(item?.wageInfo?.totalWage)?.toLocaleString(),
            Math.ceil(item?.wageInfo?.totalPaidWage)?.toLocaleString(),
            Math.ceil(item?.wageInfo?.off)?.toLocaleString(),
            Math.ceil(item?.wageInfo?.totalUnpaidWage)?.toLocaleString(),

            Math.ceil(
              item?.wageInfo?.totalProvinceLiveWeight
            )?.toLocaleString(),
            Math.ceil(
              item?.wageInfo?.provinceKillRequestsTotalWage
            )?.toLocaleString(),
            Math.ceil(
              item?.wageInfo?.freeBarsOutProvinceCarcasesTotalWeight
            )?.toLocaleString(),
            Math.ceil(
              item?.wageInfo?.freeBarsOutProvinceCarcasesTotalWage
            )?.toLocaleString(),
            Math.ceil(
              item?.wageInfo?.freeBarsCarcasesTotalWeight
            )?.toLocaleString(),
            Math.ceil(
              item?.wageInfo?.freeBarsCarcasesTotalWage
            )?.toLocaleString(),
            Math.ceil(
              item?.wageInfo?.freeBarsLiveTotalWeight
            )?.toLocaleString(),
            Math.ceil(item?.wageInfo?.freeBarsLiveTotalWage)?.toLocaleString(),
            getKillHouseShares(item?.wageInfo?.shares, item?.name),
          ];
        } else {
          return [
            item?.name,
            Math.ceil(item?.wageInfo?.totalWage)?.toLocaleString(),
            Math.ceil(item?.wageInfo?.totalPaidWage)?.toLocaleString(),
            Math.ceil(item?.wageInfo?.off)?.toLocaleString(),
            Math.ceil(item?.wageInfo?.totalUnpaidWage)?.toLocaleString(),

            Math.ceil(
              item?.wageInfo?.totalProvinceLiveWeight
            )?.toLocaleString(),
            Math.ceil(
              item?.wageInfo?.totalProvinceCarcassesWeight
            )?.toLocaleString(),
            Math.ceil(
              item?.wageInfo?.provinceKillRequestsTotalWeight
            )?.toLocaleString(),
            Math.ceil(
              item?.wageInfo?.provinceKillRequestsTotalWage
            )?.toLocaleString(),
            Math.ceil(
              item?.wageInfo?.freeBarsOutProvinceCarcasesTotalWeight
            )?.toLocaleString(),
            Math.ceil(
              item?.wageInfo?.freeBarsOutProvinceCarcasesTotalWage
            )?.toLocaleString(),
            Math.ceil(
              item?.wageInfo?.freeBarsCarcasesTotalWeight
            )?.toLocaleString(),
            Math.ceil(
              item?.wageInfo?.freeBarsCarcasesTotalWage
            )?.toLocaleString(),
            Math.ceil(
              item?.wageInfo?.freeBarsLiveTotalWeight
            )?.toLocaleString(),
            Math.ceil(item?.wageInfo?.freeBarsLiveTotalWage)?.toLocaleString(),
            getKillHouseShares(item?.wageInfo?.shares, item?.name),
          ];
        }
      });

      setTableData(d);
    }
  }, [provincePaymentKillersOfKillhouses, provincePaymentByWeightOverview]);

  return (
    <>
      <Box display={"flex"} justifyContent="center">
        <Grid
          container
          direction="column"
          justifyContent="center"
          xs={12}
          sm={12}
          md={10}
          lg={10}
        >
          <BackButton />
          <Grid container xs={12} justifyContent="center">
            <Grid container justifyContent="center" xs={12} mt={1}>
              <ResponsiveTable
                paginated
                columns={
                  provincePaymentByWeightOverview?.wageInfo
                    ?.wageCountingType === "live"
                    ? [
                        "نام کشتارکن",
                        "کل تعرفه (ریال)",
                        "کل تعرفه پرداخت شده (ریال)",
                        "تخفیف (ریال)",
                        "کل تعرفه پرداخت نشده (ریال)",
                        "کل وزن زنده کشتار داخل استان (کیلوگرم)",
                        "تعرفه کشتار داخل استان (ریال)",
                        "وزن توزیع لاشه به خارج استان (کیلوگرم)",
                        "تعرفه توزیع لاشه خارج استان (ریال)",
                        "وزن لاشه ورودی به استان (کیلوگرم)",
                        "تعرفه لاشه ورودی به استان (ریال)",
                        "وزن مرغ زنده ورودی به استان (کیلوگرم)",
                        "تعرفه مرغ زنده ورودی به استان (ریال)",
                        "سهم بندی",
                      ]
                    : [
                        "نام کشتارکن",
                        "کل تعرفه (ریال)",
                        "کل تعرفه پرداخت شده (ریال)",
                        "تخفیف (ریال)",
                        "کل تعرفه پرداخت نشده (ریال)",
                        "کل وزن زنده کشتار داخل استان (کیلوگرم)",
                        "وزن لاشه کشتار داخل استان (کیلوگرم)",
                        "وزن توزیع لاشه داخل استان (کیلوگرم)",
                        "تعرفه توزیع لاشه داخل استان (ریال)",
                        "وزن توزیع لاشه به خارج استان (کیلوگرم)",
                        "تعرفه توزیع لاشه خارج استان (ریال)",
                        "وزن لاشه ورودی به استان (کیلوگرم)",
                        "تعرفه لاشه ورودی به استان (ریال)",
                        "وزن مرغ زنده ورودی به استان (کیلوگرم)",
                        "تعرفه مرغ زنده ورودی به استان (ریال)",
                        "سهم بندی",
                      ]
                }
                data={tableData}
              />
            </Grid>
          </Grid>
        </Grid>
      </Box>
    </>
  );
};

export default ProvinceKillersWages;
