diff --git a/src/kitUI/Cart/Cart.tsx b/src/kitUI/Cart/Cart.tsx index c86d89a..2dd1f7b 100644 --- a/src/kitUI/Cart/Cart.tsx +++ b/src/kitUI/Cart/Cart.tsx @@ -30,6 +30,7 @@ import { testUser } from "@root/stores/mocks/user"; import { useTariffStore } from "@root/stores/tariffsStore"; import { Discount } from "@root/model/discount"; import useDiscounts from "@root/utils/hooks/useDiscounts"; +import { authStore } from "@root/stores/auth"; interface Props { selectedTariffs: GridSelectionModel; @@ -53,12 +54,14 @@ interface MergedTariff { export default function Cart({ selectedTariffs }: Props) { let cartTariffs = Object.values(useTariffStore().tariffs) - useDiscounts({ onNewDiscounts: setDiscounts }); - const discounts = useDiscountStore((store) => store.discounts); + // useDiscounts({ onNewDiscounts: setDiscounts }); + // const discounts = useDiscountStore((store) => store.discounts); + const [discounts, setDiscounts] = useState([]); const cartTotal = useCartStore((state) => state.cartTotal); const setCartTotal = useCartStore((store) => store.setCartTotal); const [couponField, setCouponField] = useState(""); const [loyaltyField, setLoyaltyField] = useState(""); + const makeRequest = authStore.getState().makeRequest; const [errorMessage, setErrorMessage] = useState(null); const [isNonCommercial, setIsNonCommercial] = useState(false); console.log(cartTotal) @@ -126,8 +129,17 @@ console.log(cartTotal) ); - function handleCalcCartClick() { + async function handleCalcCartClick() { //рассчитать + const dis = await makeRequest({ + url: "https://admin.pena.digital/price/discounts", + method: "get", + useToken: true, + bearer: true, + }) + console.log(dis) + // @ts-ignore + setDiscounts(dis.Discounts) const cartItems = cartTariffs.filter((tariff) => selectedTariffs.includes(tariff.id)).map((tariff) => createCartItem(tariff)); diff --git a/src/pages/dashboard/Content/Tariffs/index.tsx b/src/pages/dashboard/Content/Tariffs/index.tsx index 2156ee8..daeb7f1 100644 --- a/src/pages/dashboard/Content/Tariffs/index.tsx +++ b/src/pages/dashboard/Content/Tariffs/index.tsx @@ -1,5 +1,5 @@ import { useState, useEffect } from "react"; -import { Container, Typography } from "@mui/material"; +import { Container, IconButton, Tooltip, Typography } from "@mui/material"; import { GridSelectionModel } from "@mui/x-data-grid"; import Cart from "@root/kitUI/Cart/Cart"; @@ -8,7 +8,7 @@ import axios from "axios"; import { enqueueSnackbar } from "notistack"; import { authStore } from "@root/stores/auth"; import { useTariffStore } from "@root/stores/tariffsStore"; -import { usePrivilegeStore } from "@root/stores/privilegesStore"; +import { usePrivilegeStore, resetPrivilegeArray } from "@root/stores/privilegesStore"; import { useGetTariffs } from "@root/hooks/useGetTariffs.hook"; import TariffsDG from "./tariffsDG"; @@ -17,14 +17,37 @@ import Privileges from "./Privileges/Privileges"; import ChangePriceModal from "./Privileges/ChangePriceModal"; import {useRefreshPrivilegesStore} from "@root/hooks/useRefreshPrivilegesStore.hook" import { Tariff } from "@root/model/tariff"; +import AutorenewIcon from '@mui/icons-material/Autorenew'; +import { RealPrivilege } from "@root/model/privilege"; +import { Discount, GetDiscountResponse } from "@root/model/discount"; export default function Tariffs() { const token = authStore((state) => state.token); - // const tariffs = useTariffStore((state) => state.tariffs); const privileges = usePrivilegeStore((state) => state.privileges); const tariffs = useTariffStore((state) => state.tariffs); const [selectedTariffs, setSelectedTariffs] = useState([]); - + const refreshStores = async () => { + const priv = await axios({ + method: "get", + url: "https://admin.pena.digital/strator/privilege/service", + }); + let extracted:RealPrivilege[] = [] + for (let serviceKey in priv.data) { //Приходит объект. В его значениях массивы привилегий для разных сервисов. Высыпаем в общую кучу и обновляем стор + extracted = extracted.concat(priv.data[serviceKey]) + } + let readyArray = extracted.map((privilege) => ({ + serviceKey: privilege.serviceKey, + privilegeId: privilege.privilegeId, + name: privilege.name, + description: privilege.description, + type: privilege.type, + price: privilege.price, + value: privilege.value, + id: privilege._id, + })) + resetPrivilegeArray(readyArray) + enqueueSnackbar("привилегии обновлены") + } return ( Список привилегий + @@ -60,4 +84,4 @@ export default function Tariffs() { ); -} +} \ No newline at end of file diff --git a/src/stores/tariffs.ts.zip b/src/stores/tariffs.ts.zip new file mode 100644 index 0000000..d3eef3b Binary files /dev/null and b/src/stores/tariffs.ts.zip differ