import { Button } from "@mui/material";
import React, { useEffect, useState } from "react";
import { Grid } from "../../../../components/grid/Grid";
import { getRoleFromUrl } from "../../../../utils/getRoleFromUrl";
import { ProvincePaymentPayDept } from "../province-payment-pay-dept/ProvincePaymentPayDept";
import { OPEN_MODAL } from "../../../../lib/redux/slices/appSlice";
import { useDispatch, useSelector } from "react-redux";
import ResponsiveTable from "../../../../components/responsive-table/ResponsiveTable";
import { parentCompanyGetWagesOfKillhousesService } from "../../services/province-get-wages-of-killhouses";
import { parentConpanyGetPaymentByWeightOverview } from "../../services/province-get-payment-by-weight-overview";
import { ProvinceWagePaymentTransactions } from "../province-wage-payment-transactions/ProvinceWagePaymentTransactions";

export const ParentCompanyPaymentByWeightOverviewTable = ({ province }) => {
  const dispatch = useDispatch();
  const [tableDataOfWages, setTableDataOfWages] = useState();

  const { parentCompanyPaymentByWeightOverview } = useSelector(
    (item) => item.provinceSlice
  );

  useEffect(() => {
    dispatch(parentConpanyGetPaymentByWeightOverview(province));

    if (getRoleFromUrl() !== "KillHouse") {
      dispatch(parentCompanyGetWagesOfKillhousesService(province)).then((r) => {
        const d = r.payload.data?.map((item, i) => {
          return [
            i + 1,
            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(),
          ];
        });

        setTableDataOfWages(d);
      });
    }
  }, [dispatch, province]);

  return (
    <Grid container justifyContent="center" xs={12} mt={1}>
      <Grid isDashboard container justifyContent="center" xs={12} p={2}>
        <Grid container xs={12} justifyContent="space-between">
          {(getRoleFromUrl() === "KillHouse" ||
            getRoleFromUrl() === "ChainCompany") && (
            <Grid>
              <Button
                variant="contained"
                onClick={() => {
                  dispatch(
                    OPEN_MODAL({
                      title: "پرداخت تعرفه",
                      content: <ProvincePaymentPayDept />,
                    })
                  );
                }}
              >
                پرداخت تعرفه
              </Button>
            </Grid>
          )}
          {/* {(getRoleFromUrl() === "KillHouse" ||
                getRoleFromUrl() === "ChainCompany") && (
                <Grid>
                  <Button variant="contained" href="https://zarinp.al/ravandno">
                    پرداخت تعرفه
                  </Button>
                </Grid>
              )} */}
        </Grid>
        <ResponsiveTable
          isDashboard
          noPagination
          title="اطلاعات کلی تعرفه"
          columns={[
            "کل تعرفه (ریال)",
            "کل تعرفه پرداخت شده (ریال)",
            "تخفیف (ریال)",
            "کل تعرفه پرداخت نشده (ریال)",
          ]}
          data={[
            [
              // Math.ceil(
              //   parentCompanyPaymentByWeightOverview?.wageInfo?.totalWeight
              // )?.toLocaleString(),
              Math.ceil(
                parentCompanyPaymentByWeightOverview?.wageInfo?.totalWage
              )?.toLocaleString(),
              Math.ceil(
                parentCompanyPaymentByWeightOverview?.wageInfo?.totalPaidWage
              )?.toLocaleString(),
              Math.ceil(
                parentCompanyPaymentByWeightOverview?.wageInfo?.off
              )?.toLocaleString(),
              Math.ceil(
                parentCompanyPaymentByWeightOverview?.wageInfo?.totalUnpaidWage
              )?.toLocaleString(),
            ],
          ]}
        />

        {getRoleFromUrl() !== "KillHouse" && (
          <ResponsiveTable
            noPagination
            title="جزئیات کلی تعرفه"
            columns={[
              "کل وزن زنده کشتار داخل استان (کیلوگرم)",
              "وزن لاشه کشتار داخل استان (کیلوگرم)",
              "وزن توزیع لاشه داخل استان (کیلوگرم)",
              "تعرفه توزیع لاشه داخل استان (ریال)",
              "وزن توزیع لاشه به خارج استان (کیلوگرم)",
              "تعرفه توزیع لاشه خارج استان (ریال)",
              "وزن لاشه ورودی به استان (کیلوگرم)",
              "تعرفه لاشه ورودی به استان (ریال)",
              "وزن مرغ زنده ورودی به استان (کیلوگرم)",
              "تعرفه مرغ زنده ورودی به استان (ریال)",
            ]}
            data={[
              [
                Math.ceil(
                  parentCompanyPaymentByWeightOverview?.wageInfo
                    ?.totalProvinceLiveWeight
                )?.toLocaleString(),
                Math.ceil(
                  parentCompanyPaymentByWeightOverview?.wageInfo
                    ?.totalProvinceCarcassesWeight
                )?.toLocaleString(),
                Math.ceil(
                  parentCompanyPaymentByWeightOverview?.wageInfo
                    ?.provinceKillRequestsTotalWeight
                )?.toLocaleString(),
                Math.ceil(
                  parentCompanyPaymentByWeightOverview?.wageInfo
                    ?.provinceKillRequestsTotalWage
                )?.toLocaleString(),
                Math.ceil(
                  parentCompanyPaymentByWeightOverview?.wageInfo
                    ?.freeBarsOutProvinceCarcasesTotalWeight
                )?.toLocaleString(),
                Math.ceil(
                  parentCompanyPaymentByWeightOverview?.wageInfo
                    ?.freeBarsOutProvinceCarcasesTotalWage
                )?.toLocaleString(),
                Math.ceil(
                  parentCompanyPaymentByWeightOverview?.wageInfo
                    ?.freeBarsCarcasesTotalWeight
                )?.toLocaleString(),
                Math.ceil(
                  parentCompanyPaymentByWeightOverview?.wageInfo
                    ?.freeBarsCarcasesTotalWage
                )?.toLocaleString(),
                Math.ceil(
                  parentCompanyPaymentByWeightOverview?.wageInfo
                    ?.freeBarsLiveTotalWeight
                )?.toLocaleString(),
                Math.ceil(
                  parentCompanyPaymentByWeightOverview?.wageInfo
                    ?.freeBarsLiveTotalWage
                )?.toLocaleString(),
              ],
            ]}
          />
        )}
      </Grid>

      <Grid container justifyContent="center" xs={12} mt={2} mb={2}>
        <ResponsiveTable
          noPagination
          title="مبنای تعرفه به ازای هر کیلوگرم (ریال)"
          columns={[
            "تعرفه پایه توزیع لاشه درون استان",
            "تعرفه پایه توزیع لاشه خارج استان",
            "تعرفه پایه خرید مرغ زنده خارج از استان",
            "تعرفه پایه لاشه خارج از استان",
          ]}
          data={[
            [
              parentCompanyPaymentByWeightOverview?.wageInfo?.provinceLiveWageAmount?.toLocaleString(),
              parentCompanyPaymentByWeightOverview?.wageInfo?.freeSellCarcessesWeightAmount?.toLocaleString(),
              parentCompanyPaymentByWeightOverview?.wageInfo?.freeBuyingLiveWeightAmount?.toLocaleString(),
              parentCompanyPaymentByWeightOverview?.wageInfo?.freeBuyingCarcessesWeightAmount?.toLocaleString(),
            ],
          ]}
        />
      </Grid>

      <Grid container justifyContent="center" xs={12} mt={1}>
        <ResponsiveTable
          noPagination={getRoleFromUrl() === "KillHouse"}
          paginated={getRoleFromUrl() !== "KillHouse"}
          title="جزئیات"
          columns={
            getRoleFromUrl() === "KillHouse"
              ? [
                  "کل تعرفه (ریال)",
                  "کل تعرفه پرداخت شده (ریال)",
                  "تخفیف (ریال)",
                  "کل تعرفه پرداخت نشده (ریال)",
                  "کل وزن زنده کشتار داخل استان (کیلوگرم)",
                  "وزن لاشه کشتار داخل استان (کیلوگرم)",
                  "وزن توزیع لاشه داخل استان (کیلوگرم)",
                  "تعرفه توزیع لاشه داخل استان (ریال)",
                  "وزن توزیع لاشه به خارج استان (کیلوگرم)",
                  "تعرفه توزیع لاشه خارج استان (ریال)",
                  "وزن لاشه ورودی به استان (کیلوگرم)",
                  "تعرفه لاشه ورودی به استان (ریال)",
                  "وزن مرغ زنده ورودی به استان (کیلوگرم)",
                  "تعرفه مرغ زنده ورودی به استان (ریال)",
                ]
              : [
                  "ردیف",
                  "کشتارگاه",
                  "کل تعرفه (ریال)",
                  "کل تعرفه پرداخت شده (ریال)",
                  "تخفیف (ریال)",
                  "کل تعرفه پرداخت نشده (ریال)",
                  "کل وزن زنده کشتار داخل استان (کیلوگرم)",
                  "وزن لاشه کشتار داخل استان (کیلوگرم)",
                  "وزن توزیع لاشه داخل استان (کیلوگرم)",
                  "تعرفه توزیع لاشه داخل استان (ریال)",
                  "وزن توزیع لاشه به خارج استان (کیلوگرم)",
                  "تعرفه توزیع لاشه خارج استان (ریال)",
                  "وزن لاشه ورودی به استان (کیلوگرم)",
                  "تعرفه لاشه ورودی به استان (ریال)",
                  "وزن مرغ زنده ورودی به استان (کیلوگرم)",
                  "تعرفه مرغ زنده ورودی به استان (ریال)",
                ]
          }
          data={
            getRoleFromUrl() === "KillHouse"
              ? [
                  [
                    Math.ceil(
                      parentCompanyPaymentByWeightOverview?.wageInfo?.totalWage
                    )?.toLocaleString(),
                    Math.ceil(
                      parentCompanyPaymentByWeightOverview?.wageInfo
                        ?.totalPaidWage
                    )?.toLocaleString(),
                    Math.ceil(
                      parentCompanyPaymentByWeightOverview?.wageInfo?.off
                    )?.toLocaleString(),
                    Math.ceil(
                      parentCompanyPaymentByWeightOverview?.wageInfo
                        ?.totalUnpaidWage
                    )?.toLocaleString(),
                    Math.ceil(
                      parentCompanyPaymentByWeightOverview?.wageInfo
                        ?.totalProvinceLiveWeight
                    )?.toLocaleString(),
                    Math.ceil(
                      parentCompanyPaymentByWeightOverview?.wageInfo
                        ?.totalProvinceCarcassesWeight
                    )?.toLocaleString(),
                    Math.ceil(
                      parentCompanyPaymentByWeightOverview?.wageInfo
                        ?.provinceKillRequestsTotalWeight
                    )?.toLocaleString(),
                    Math.ceil(
                      parentCompanyPaymentByWeightOverview?.wageInfo
                        ?.provinceKillRequestsTotalWage
                    )?.toLocaleString(),
                    Math.ceil(
                      parentCompanyPaymentByWeightOverview?.wageInfo
                        ?.freeBarsOutProvinceCarcasesTotalWeight
                    )?.toLocaleString(),
                    Math.ceil(
                      parentCompanyPaymentByWeightOverview?.wageInfo
                        ?.freeBarsOutProvinceCarcasesTotalWage
                    )?.toLocaleString(),
                    Math.ceil(
                      parentCompanyPaymentByWeightOverview?.wageInfo
                        ?.freeBarsCarcasesTotalWeight
                    )?.toLocaleString(),
                    Math.ceil(
                      parentCompanyPaymentByWeightOverview?.wageInfo
                        ?.freeBarsCarcasesTotalWage
                    )?.toLocaleString(),
                    Math.ceil(
                      parentCompanyPaymentByWeightOverview?.wageInfo
                        ?.freeBarsLiveTotalWeight
                    )?.toLocaleString(),
                    Math.ceil(
                      parentCompanyPaymentByWeightOverview?.wageInfo
                        ?.freeBarsLiveTotalWage
                    )?.toLocaleString(),
                  ],
                ]
              : tableDataOfWages
          }
        />
      </Grid>
      <ProvinceWagePaymentTransactions province={province} />
    </Grid>
  );
};
