253 lines
9.1 KiB
JavaScript
253 lines
9.1 KiB
JavaScript
|
|
import React from "react";
|
|||
|
|
import { SPACING } from "../../../../data/spacing";
|
|||
|
|
import { Grid } from "../../../../components/grid/Grid";
|
|||
|
|
import { NavLink } from "../../../../components/nav-link/NavLink";
|
|||
|
|
import LinkItem from "../../../../components/link-item/LinkItem";
|
|||
|
|
import { VscBroadcast, VscPerson } from "react-icons/vsc";
|
|||
|
|
import {
|
|||
|
|
ROUTE_ADMINX_DELEGATES_MANAGEMENT,
|
|||
|
|
ROUTE_ADMINX_DISPENSERS_INVENTORY,
|
|||
|
|
ROUTE_ADMINX_DISPENSERS_KILLHOUSES,
|
|||
|
|
ROUTE_ADMINX_DISPENSERS_MANAGEMENT,
|
|||
|
|
ROUTE_ADMINX_DISPENSERS_MANAGEMENT_V2,
|
|||
|
|
ROUTE_ADMINX_DISPENSERS_STEWARDS,
|
|||
|
|
ROUTE_ADMINX_DISPENSERS_STOCK,
|
|||
|
|
ROUTE_ADMINX_SALE_DESTRIBUTION_DETAILS,
|
|||
|
|
ROUTE_ADMINX_TRANSACTIONS,
|
|||
|
|
ROUTE_CITY_DISPENSERS_INVENTORY,
|
|||
|
|
ROUTE_CITY_REQUEST_DISTRIBUTION,
|
|||
|
|
ROUTE_CITY_REQUEST_TRANSACTIONS,
|
|||
|
|
ROUTE_PROVINCE_DISPENSERS_INVENTORY,
|
|||
|
|
ROUTE_PROVINCE_DISPENSERS_KILLHOUSES,
|
|||
|
|
ROUTE_PROVINCE_DISPENSERS_MANAGEMENT,
|
|||
|
|
ROUTE_PROVINCE_DISPENSERS_STEWARDS,
|
|||
|
|
ROUTE_PROVINCE_FINANCIAL_TRANSACTIONS,
|
|||
|
|
ROUTE_PROVINCE_SALE_DESTRIBUTION_DETAILS,
|
|||
|
|
ROUTE_PROVINCE_SUPERVISOR_DISPENSERS_INVENTORY,
|
|||
|
|
ROUTE_PROVINCE_SUPERVISOR_DISPENSERS_STOCK,
|
|||
|
|
ROUTE_PROVINCE_SUPERVISOR_REQUEST_DISTRIBUTION,
|
|||
|
|
ROUTE_PROVINCE_SUPERVISOR_REQUEST_TRANSACTIONS,
|
|||
|
|
ROUTE_PROVINCE_TRANSACTIONS,
|
|||
|
|
ROUTE_SLAUGHTER_DISPENSERS_KILLHOUSES,
|
|||
|
|
ROUTE_SLAUGHTER_DISPENSERS_MANAGEMENT,
|
|||
|
|
ROUTE_SLAUGHTER_DISPENSERS_STEWARDS,
|
|||
|
|
ROUTE_SUPER_ADMIN_DESTRIBUTION_DETAILS,
|
|||
|
|
ROUTE_SUPER_ADMIN_DISPENSERS_INVENTORY,
|
|||
|
|
ROUTE_SUPER_ADMIN_DISPENSERS_KILLHOUSES,
|
|||
|
|
ROUTE_SUPER_ADMIN_DISPENSERS_MANAGEMENT,
|
|||
|
|
ROUTE_SUPER_ADMIN_DISPENSERS_STEWARDS,
|
|||
|
|
ROUTE_SUPER_ADMIN_DISPENSERS_STOCK,
|
|||
|
|
ROUTE_SUPER_ADMIN_TRANSACTIONS,
|
|||
|
|
} from "../../../../routes/routes";
|
|||
|
|
import { useLocation } from "react-router-dom";
|
|||
|
|
import { getRoleFromUrl } from "../../../../utils/getRoleFromUrl";
|
|||
|
|
import { FaMoneyBill, FaStore, FaWarehouse } from "react-icons/fa";
|
|||
|
|
import BadgeIcon from "@mui/icons-material/Badge";
|
|||
|
|
|
|||
|
|
const ROUTE_MAP = {
|
|||
|
|
management: {
|
|||
|
|
KillHouse: ROUTE_SLAUGHTER_DISPENSERS_MANAGEMENT,
|
|||
|
|
AdminX: ROUTE_ADMINX_DISPENSERS_MANAGEMENT,
|
|||
|
|
SuperAdmin: ROUTE_SUPER_ADMIN_DISPENSERS_MANAGEMENT,
|
|||
|
|
AdminXX: ROUTE_ADMINX_DISPENSERS_MANAGEMENT_V2,
|
|||
|
|
AdminXXX: ROUTE_ADMINX_DELEGATES_MANAGEMENT,
|
|||
|
|
default: ROUTE_PROVINCE_DISPENSERS_MANAGEMENT,
|
|||
|
|
},
|
|||
|
|
killhouses: {
|
|||
|
|
KillHouse: ROUTE_SLAUGHTER_DISPENSERS_KILLHOUSES,
|
|||
|
|
AdminX: ROUTE_ADMINX_DISPENSERS_KILLHOUSES,
|
|||
|
|
SuperAdmin: ROUTE_SUPER_ADMIN_DISPENSERS_KILLHOUSES,
|
|||
|
|
default: ROUTE_PROVINCE_DISPENSERS_KILLHOUSES,
|
|||
|
|
},
|
|||
|
|
stewards: {
|
|||
|
|
KillHouse: ROUTE_SLAUGHTER_DISPENSERS_STEWARDS,
|
|||
|
|
AdminX: ROUTE_ADMINX_DISPENSERS_STEWARDS,
|
|||
|
|
SuperAdmin: ROUTE_SUPER_ADMIN_DISPENSERS_STEWARDS,
|
|||
|
|
default: ROUTE_PROVINCE_DISPENSERS_STEWARDS,
|
|||
|
|
},
|
|||
|
|
inventory: {
|
|||
|
|
AdminX: ROUTE_ADMINX_DISPENSERS_INVENTORY,
|
|||
|
|
SuperAdmin: ROUTE_SUPER_ADMIN_DISPENSERS_INVENTORY,
|
|||
|
|
CityPoultry: ROUTE_CITY_DISPENSERS_INVENTORY,
|
|||
|
|
ProvinceSupervisor: ROUTE_PROVINCE_SUPERVISOR_DISPENSERS_INVENTORY,
|
|||
|
|
default: ROUTE_PROVINCE_DISPENSERS_INVENTORY,
|
|||
|
|
},
|
|||
|
|
distribution: {
|
|||
|
|
AdminX: ROUTE_ADMINX_SALE_DESTRIBUTION_DETAILS,
|
|||
|
|
SuperAdmin: ROUTE_SUPER_ADMIN_DESTRIBUTION_DETAILS,
|
|||
|
|
ProvinceOperator: ROUTE_PROVINCE_SALE_DESTRIBUTION_DETAILS,
|
|||
|
|
CityPoultry: ROUTE_CITY_REQUEST_DISTRIBUTION,
|
|||
|
|
ProvinceSupervisor: ROUTE_PROVINCE_SUPERVISOR_REQUEST_DISTRIBUTION,
|
|||
|
|
default: ROUTE_PROVINCE_TRANSACTIONS,
|
|||
|
|
},
|
|||
|
|
transactions: {
|
|||
|
|
AdminX: ROUTE_ADMINX_TRANSACTIONS,
|
|||
|
|
SuperAdmin: ROUTE_SUPER_ADMIN_TRANSACTIONS,
|
|||
|
|
ProvinceFinancial: ROUTE_PROVINCE_FINANCIAL_TRANSACTIONS,
|
|||
|
|
CityPoultry: ROUTE_CITY_REQUEST_TRANSACTIONS,
|
|||
|
|
ProvinceSupervisor: ROUTE_PROVINCE_SUPERVISOR_REQUEST_TRANSACTIONS,
|
|||
|
|
default: ROUTE_PROVINCE_TRANSACTIONS,
|
|||
|
|
},
|
|||
|
|
stock: {
|
|||
|
|
AdminX: ROUTE_ADMINX_DISPENSERS_STOCK,
|
|||
|
|
SuperAdmin: ROUTE_SUPER_ADMIN_DISPENSERS_STOCK,
|
|||
|
|
ProvinceSupervisor: ROUTE_PROVINCE_SUPERVISOR_DISPENSERS_STOCK,
|
|||
|
|
},
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
const getRoute = (routeType, role) => {
|
|||
|
|
const routeMap = ROUTE_MAP[routeType];
|
|||
|
|
return routeMap[role] || routeMap.default || null;
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
const isActive = (pathname, route) => (pathname === route ? "true" : null);
|
|||
|
|
|
|||
|
|
export const SlaughterHouseDispensersOperations = () => {
|
|||
|
|
const { pathname } = useLocation();
|
|||
|
|
const role = getRoleFromUrl();
|
|||
|
|
const isKillHouse = role === "KillHouse";
|
|||
|
|
const isAdminX = role === "AdminX";
|
|||
|
|
const hasStockAccess = [
|
|||
|
|
"AdminX",
|
|||
|
|
"SuperAdmin",
|
|||
|
|
"ProvinceSupervisor",
|
|||
|
|
].includes(role);
|
|||
|
|
|
|||
|
|
const managementRoute = getRoute("management", role);
|
|||
|
|
const managementRouteV2 = getRoute("management", "AdminXX");
|
|||
|
|
const managementRouteDelegates = getRoute("management", "AdminXXX");
|
|||
|
|
const killhousesRoute = getRoute("killhouses", role);
|
|||
|
|
const stewardsRoute = getRoute("stewards", role);
|
|||
|
|
const inventoryRoute = getRoute("inventory", role);
|
|||
|
|
const distributionRoute = getRoute("distribution", role);
|
|||
|
|
const transactionsRoute = getRoute("transactions", role);
|
|||
|
|
const stockRoute = getRoute("stock", role);
|
|||
|
|
|
|||
|
|
return (
|
|||
|
|
<Grid
|
|||
|
|
container
|
|||
|
|
gap={SPACING.SMALL}
|
|||
|
|
p={SPACING.SMALL}
|
|||
|
|
direction={{ xs: "column", md: "row" }}
|
|||
|
|
justifyContent="center"
|
|||
|
|
style={{ placeContent: "baseline" }}
|
|||
|
|
>
|
|||
|
|
{isAdminX && (
|
|||
|
|
<Grid container direction="column" style={{ width: "100%" }}>
|
|||
|
|
<Grid container gap={SPACING.SMALL} justifyContent="center">
|
|||
|
|
<NavLink
|
|||
|
|
to={managementRouteDelegates}
|
|||
|
|
active={isActive(pathname, managementRouteDelegates)}
|
|||
|
|
>
|
|||
|
|
<LinkItem
|
|||
|
|
icon={<BadgeIcon fontSize="large" sx={{ color: "#244CCC" }} />}
|
|||
|
|
title="مدیریت نمایندگان"
|
|||
|
|
description="مدیریت نمایندگان"
|
|||
|
|
/>
|
|||
|
|
</NavLink>
|
|||
|
|
<NavLink
|
|||
|
|
to={managementRouteV2}
|
|||
|
|
active={isActive(pathname, managementRouteV2)}
|
|||
|
|
>
|
|||
|
|
<LinkItem
|
|||
|
|
icon={<VscPerson size={30} color="#244CCC" />}
|
|||
|
|
title="مدیریت توزیع کنندگان دوم"
|
|||
|
|
description="مدیریت توزیع کنندگان دوم"
|
|||
|
|
/>
|
|||
|
|
</NavLink>
|
|||
|
|
<NavLink
|
|||
|
|
to={managementRoute}
|
|||
|
|
active={isActive(pathname, managementRoute)}
|
|||
|
|
>
|
|||
|
|
<LinkItem
|
|||
|
|
icon={<VscPerson size={30} color="#244CCC" />}
|
|||
|
|
title="مدیریت توزیع کنندگان"
|
|||
|
|
description="مدیریت توزیع کنندگان"
|
|||
|
|
/>
|
|||
|
|
</NavLink>
|
|||
|
|
|
|||
|
|
{!isKillHouse && (
|
|||
|
|
<NavLink
|
|||
|
|
to={killhousesRoute}
|
|||
|
|
active={isActive(pathname, killhousesRoute)}
|
|||
|
|
>
|
|||
|
|
<LinkItem
|
|||
|
|
icon={<FaStore size={30} color="#244CCC" />}
|
|||
|
|
title="مدیریت کشتارگاه ها"
|
|||
|
|
description="مدیریت کشتارگاه ها"
|
|||
|
|
/>
|
|||
|
|
</NavLink>
|
|||
|
|
)}
|
|||
|
|
|
|||
|
|
{!isKillHouse && (
|
|||
|
|
<NavLink
|
|||
|
|
to={stewardsRoute}
|
|||
|
|
active={isActive(pathname, stewardsRoute)}
|
|||
|
|
>
|
|||
|
|
<LinkItem
|
|||
|
|
icon={<VscBroadcast size={30} color="#244CCC" />}
|
|||
|
|
title="مدیریت مباشرین"
|
|||
|
|
description="مدیریت مباشرین"
|
|||
|
|
/>
|
|||
|
|
</NavLink>
|
|||
|
|
)}
|
|||
|
|
</Grid>
|
|||
|
|
</Grid>
|
|||
|
|
)}
|
|||
|
|
|
|||
|
|
<Grid container direction="column" style={{ width: "100%" }}>
|
|||
|
|
<Grid container gap={SPACING.SMALL} justifyContent="center">
|
|||
|
|
{!isKillHouse && inventoryRoute && (
|
|||
|
|
<NavLink
|
|||
|
|
to={inventoryRoute}
|
|||
|
|
active={isActive(pathname, inventoryRoute)}
|
|||
|
|
>
|
|||
|
|
<LinkItem
|
|||
|
|
icon={<FaStore size={30} color="#244CCC" />}
|
|||
|
|
title="توزیع/فروش کشتارگاه"
|
|||
|
|
description="توزیع/فروش کشتارگاه"
|
|||
|
|
/>
|
|||
|
|
</NavLink>
|
|||
|
|
)}
|
|||
|
|
|
|||
|
|
{!isKillHouse && distributionRoute && (
|
|||
|
|
<NavLink
|
|||
|
|
to={distributionRoute}
|
|||
|
|
active={isActive(pathname, distributionRoute)}
|
|||
|
|
>
|
|||
|
|
<LinkItem
|
|||
|
|
icon={<FaMoneyBill size={30} color="#244CCC" />}
|
|||
|
|
title=" توزیع/فروش مباشر"
|
|||
|
|
description=" توزیع/فروش مباشر"
|
|||
|
|
/>
|
|||
|
|
</NavLink>
|
|||
|
|
)}
|
|||
|
|
|
|||
|
|
{!isKillHouse && transactionsRoute && (
|
|||
|
|
<NavLink
|
|||
|
|
to={transactionsRoute}
|
|||
|
|
active={isActive(pathname, transactionsRoute)}
|
|||
|
|
>
|
|||
|
|
<LinkItem
|
|||
|
|
icon={<FaWarehouse size={30} color="#244CCC" />}
|
|||
|
|
title="مدیریت انبار صنوف"
|
|||
|
|
description="تراکنش ها"
|
|||
|
|
/>
|
|||
|
|
</NavLink>
|
|||
|
|
)}
|
|||
|
|
|
|||
|
|
{hasStockAccess && stockRoute && (
|
|||
|
|
<NavLink to={stockRoute} active={isActive(pathname, stockRoute)}>
|
|||
|
|
<LinkItem
|
|||
|
|
icon={<FaWarehouse size={30} color="#244CCC" />}
|
|||
|
|
title="مانده انبار"
|
|||
|
|
description="مانده انبار"
|
|||
|
|
/>
|
|||
|
|
</NavLink>
|
|||
|
|
)}
|
|||
|
|
</Grid>
|
|||
|
|
</Grid>
|
|||
|
|
</Grid>
|
|||
|
|
);
|
|||
|
|
};
|