fix: discounts request in Cart
This commit is contained in:
parent
a1cce00733
commit
c3046a6740
@ -33,7 +33,7 @@ import { findPrivilegeById } from "@root/stores/privilegesStore";
|
|||||||
import { testUser } from "@root/stores/mocks/user";
|
import { testUser } from "@root/stores/mocks/user";
|
||||||
import { useTariffStore } from "@root/stores/tariffsStore";
|
import { useTariffStore } from "@root/stores/tariffsStore";
|
||||||
import { Discount } from "@root/model/discount";
|
import { Discount } from "@root/model/discount";
|
||||||
import { authStore } from "@root/stores/auth";
|
import { useDiscountStore } from "@root/stores/discounts";
|
||||||
import { requestPrivilegies } from "@root/services/privilegies.service";
|
import { requestPrivilegies } from "@root/services/privilegies.service";
|
||||||
import { requestDiscounts } from "@root/services/discounts.service";
|
import { requestDiscounts } from "@root/services/discounts.service";
|
||||||
|
|
||||||
@ -59,13 +59,11 @@ interface MergedTariff {
|
|||||||
|
|
||||||
export default function Cart({ selectedTariffs }: Props) {
|
export default function Cart({ selectedTariffs }: Props) {
|
||||||
let cartTariffs = Object.values(useTariffStore().tariffs);
|
let cartTariffs = Object.values(useTariffStore().tariffs);
|
||||||
// const discounts = useDiscountStore((store) => store.discounts);
|
const discounts = useDiscountStore((store) => store.discounts);
|
||||||
const [discounts, setDiscounts] = useState<Discount[]>([]);
|
|
||||||
const cartTotal = useCartStore((state) => state.cartTotal);
|
const cartTotal = useCartStore((state) => state.cartTotal);
|
||||||
const setCartTotal = useCartStore((store) => store.setCartTotal);
|
const setCartTotal = useCartStore((store) => store.setCartTotal);
|
||||||
const [couponField, setCouponField] = useState<string>("");
|
const [couponField, setCouponField] = useState<string>("");
|
||||||
const [loyaltyField, setLoyaltyField] = useState<string>("");
|
const [loyaltyField, setLoyaltyField] = useState<string>("");
|
||||||
const makeRequest = authStore.getState().makeRequest;
|
|
||||||
const [errorMessage, setErrorMessage] = useState<string | null>(null);
|
const [errorMessage, setErrorMessage] = useState<string | null>(null);
|
||||||
const [isNonCommercial, setIsNonCommercial] = useState<boolean>(false);
|
const [isNonCommercial, setIsNonCommercial] = useState<boolean>(false);
|
||||||
|
|
||||||
@ -152,17 +150,6 @@ export default function Cart({ selectedTariffs }: Props) {
|
|||||||
await requestPrivilegies();
|
await requestPrivilegies();
|
||||||
await requestDiscounts();
|
await requestDiscounts();
|
||||||
|
|
||||||
//рассчитать
|
|
||||||
const dis = await makeRequest<unknown>({
|
|
||||||
url: "https://admin.pena.digital/price/discounts",
|
|
||||||
method: "get",
|
|
||||||
useToken: true,
|
|
||||||
bearer: true,
|
|
||||||
});
|
|
||||||
console.log(dis);
|
|
||||||
// @ts-ignore
|
|
||||||
setDiscounts(dis.Discounts);
|
|
||||||
|
|
||||||
const cartItems = cartTariffs
|
const cartItems = cartTariffs
|
||||||
.filter((tariff) => selectedTariffs.includes(tariff.id))
|
.filter((tariff) => selectedTariffs.includes(tariff.id))
|
||||||
.map((tariff) => createCartItem(tariff));
|
.map((tariff) => createCartItem(tariff));
|
||||||
@ -173,15 +160,11 @@ export default function Cart({ selectedTariffs }: Props) {
|
|||||||
|
|
||||||
if (!isFinite(loyaltyValue)) loyaltyValue = 0;
|
if (!isFinite(loyaltyValue)) loyaltyValue = 0;
|
||||||
|
|
||||||
const activeDiscounts = discounts.filter(
|
|
||||||
(discount) => !discount.Deprecated
|
|
||||||
);
|
|
||||||
|
|
||||||
const cartData = calcCartData({
|
const cartData = calcCartData({
|
||||||
user: testUser,
|
user: testUser,
|
||||||
purchasesAmount: loyaltyValue,
|
purchasesAmount: loyaltyValue,
|
||||||
cartItems,
|
cartItems,
|
||||||
discounts: activeDiscounts,
|
discounts,
|
||||||
isNonCommercial,
|
isNonCommercial,
|
||||||
coupon: couponField,
|
coupon: couponField,
|
||||||
});
|
});
|
||||||
|
@ -1,25 +1,32 @@
|
|||||||
import { authStore } from "@root/stores/auth";
|
|
||||||
import { setDiscounts } from "@root/stores/discounts";
|
import { setDiscounts } from "@root/stores/discounts";
|
||||||
|
import { authStore } from "@root/stores/auth";
|
||||||
|
|
||||||
import type { GetDiscountResponse } from "@root/model/discount";
|
import type { GetDiscountResponse, Discount } from "@root/model/discount";
|
||||||
|
|
||||||
|
const baseUrl =
|
||||||
|
process.env.NODE_ENV === "production"
|
||||||
|
? "/price"
|
||||||
|
: "https://admin.pena.digital/price";
|
||||||
|
|
||||||
export const requestDiscounts = async () => {
|
|
||||||
const { makeRequest } = authStore.getState();
|
const { makeRequest } = authStore.getState();
|
||||||
const controller = new AbortController();
|
|
||||||
|
|
||||||
makeRequest<never, GetDiscountResponse>({
|
const filterDiscounts = (discounts: Discount[]) => {
|
||||||
url: "https://admin.pena.digital/price/discounts",
|
const activeDiscounts = discounts.filter((discount) => !discount.Deprecated);
|
||||||
|
|
||||||
|
setDiscounts(activeDiscounts);
|
||||||
|
};
|
||||||
|
|
||||||
|
export const requestDiscounts = async (): Promise<void> => {
|
||||||
|
try {
|
||||||
|
const { Discounts } = await makeRequest<never, GetDiscountResponse>({
|
||||||
|
url: baseUrl + "/discounts",
|
||||||
method: "get",
|
method: "get",
|
||||||
useToken: true,
|
useToken: true,
|
||||||
bearer: true,
|
bearer: true,
|
||||||
signal: controller.signal,
|
|
||||||
})
|
|
||||||
.then((result) => {
|
|
||||||
setDiscounts(result.Discounts);
|
|
||||||
})
|
|
||||||
.catch((error) => {
|
|
||||||
console.log("Error fetching discounts", error);
|
|
||||||
});
|
});
|
||||||
|
|
||||||
return () => controller.abort();
|
filterDiscounts(Discounts);
|
||||||
|
} catch {
|
||||||
|
throw new Error("Ошибка при получении скидок");
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
Loading…
Reference in New Issue
Block a user