adminFront/src/pages/dashboard/Content/Tariffs/tariffsDG.tsx
2023-07-11 18:29:32 +03:00

168 lines
5.4 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// @ts-nocheck
import React from "react";
import { useEffect, useState } from "react";
import { GridColDef, GridSelectionModel, GridToolbar } from "@mui/x-data-grid";
import { Box, Button, IconButton,Tooltip } from "@mui/material";
import BackspaceIcon from "@mui/icons-material/Backspace";
import { enqueueSnackbar } from "notistack";
import ModeEditOutlineOutlinedIcon from "@mui/icons-material/ModeEditOutlineOutlined";
import DataGrid from "@kitUI/datagrid";
import { deleteTariffs, useTariffStore } from "@root/stores/tariffsStore";
import { SERVICE_LIST } from "@root/model/tariff";
import { findPrivilegeById } from "@root/stores/privilegesStore";
import axios from "axios";
import { authStore } from "@root/stores/auth";
import DeleteModal from "@root/pages/dashboard/Content/Tariffs/DeleteModal";
import EditModal from "./EditModal";
import { Tariff } from "@root/model/tariff";
import AutorenewIcon from "@mui/icons-material/Autorenew";
interface Props {
selectedTariffs: GridSelectionModel;
handleSelectionChange: (selectionModel: GridSelectionModel) => void;
requestTariffs: () => Promise<void>;
}
export default function TariffsDG({
selectedTariffs,
handleSelectionChange,
requestTariffs,
}: Props) {
const tariffs = Object.values(useTariffStore().tariffs);
const [deletedRows, setDeletedRows] = useState<string[]>([]);
const [openDeleteModal, setOpenDeleteModal] = useState(false);
const [changingTariff, setChangingTariff] = useState<Tariff | undefined>();
const [tariffDelete, setTariffDelete] = useState(false);
console.log(selectedTariffs);
const closeDeleteModal = () => {
setOpenDeleteModal(false);
};
const columns: GridColDef[] = [
{ field: "id", headerName: "ID", width: 100 },
{
field: "edit",
headerName: "Изменение",
width: 60,
renderCell: ({ row }) => {
return (
<IconButton onClick={() => setChangingTariff(row)}>
<ModeEditOutlineOutlinedIcon />
</IconButton>
);
},
},
{ field: "name", headerName: "Название тарифа", width: 150 },
{ field: "amount", headerName: "Количество", width: 110 },
{ field: "serviceName", headerName: "Сервис", width: 150 }, //инфо из гитлаба.
{ field: "privilegeName", headerName: "Привилегия", width: 150 },
{ field: "type", headerName: "Единица", width: 100 },
{ field: "pricePerUnit", headerName: "Цена за ед.", width: 100 },
{ field: "customPricePerUnit", headerName: "Кастомная цена", width: 130 },
{ field: "total", headerName: "Сумма", width: 60 },
{
field: "delete",
headerName: "Удаление",
width: 60,
renderCell: ({ row }) => {
return (
<IconButton
onClick={() => {
setOpenDeleteModal(row.id);
}}
>
<BackspaceIcon />
</IconButton>
);
},
},
];
const gridData = tariffs
?.map((tariff) => {
console.log(tariff);
const privilege = findPrivilegeById(tariff.privilegeId);
return {
id: tariff.id,
name: tariff.name,
serviceName:
privilege?.serviceKey == "templategen"
? "Шаблонизатор"
: privilege?.serviceKey,
privilegeName: privilege?.name,
amount: tariff.amount,
pricePerUnit: tariff.isCustom
? (tariff.customPricePerUnit || 0) / 100
: (tariff?.price || 0) / 100,
type:
findPrivilegeById(tariff.privilegeId)?.value === "шаблон"
? "штука"
: findPrivilegeById(tariff.privilegeId)?.value,
customPricePerUnit: tariff.customPricePerUnit === 0 ? "Нет" : "Да",
total: tariff.amount
? (tariff.amount *
(tariff.isCustom
? tariff.customPricePerUnit || 0 * tariff.amount
: findPrivilegeById(tariff.privilegeId)?.price || 0)) /
100
: 0,
};
})
.sort((item, previous) => (!item?.isFront && previous?.isFront ? 1 : -1));
// console.log(gridData)
return (
<>
<Tooltip title="обновить список тарифов">
<IconButton onClick={() => requestTariffs()}>
<AutorenewIcon sx={{ color: "white" }} />
</IconButton>
</Tooltip>
<DataGrid
disableSelectionOnClick={true}
checkboxSelection={true}
rows={gridData}
columns={columns}
getRowId={(row) => row.id}
components={{ Toolbar: GridToolbar }}
onSelectionModelChange={handleSelectionChange}
/>
{selectedTariffs.length ? (
<Box
component="section"
sx={{
width: "100%",
display: "flex",
justifyContent: "start",
mb: "30px",
}}
>
<Button
onClick={() => setOpenDeleteModal(true)}
sx={{ mr: "20px", zIndex: "10000" }}
>
Удаление
</Button>
</Box>
) : (
<React.Fragment />
)}
<DeleteModal
open={openDeleteModal}
handleClose={() => {
closeDeleteModal();
}}
selectedTariffs={selectedTariffs}
requestTariffs={requestTariffs}
/>
<EditModal tariff={changingTariff} requestTariffs={requestTariffs} />
</>
);
}