adminFront/src/services/tariffs.service.ts
2023-07-12 16:31:35 +03:00

63 lines
1.6 KiB
TypeScript

import { resetTariffsStore } from "@root/stores/tariffsStore";
import { authStore } from "@root/stores/auth";
import type { Tariff, Tariff_BACKEND } from "@root/model/tariff";
type GetTariffsResponse = {
totalPages: number;
tariffs: Tariff_BACKEND[];
};
const baseUrl =
process.env.NODE_ENV === "production"
? "/strator"
: "https://admin.pena.digital/strator";
const { makeRequest } = authStore.getState();
const mutateTariffs = (tariffs: Tariff_BACKEND[]) => {
const convertedTariffs: Record<string, Tariff> = {};
tariffs
.filter(({ isDeleted }) => !isDeleted)
.forEach((tariff) => {
convertedTariffs[tariff._id] = {
id: tariff._id,
name: tariff.name,
isCustom: tariff.price ? true : false,
amount: tariff.privilegies[0].amount,
isFront: false,
privilegeId: tariff.privilegies[0].privilegeId,
price: tariff.privilegies[0].price,
isDeleted: tariff.isDeleted,
customPricePerUnit: tariff.price,
};
});
resetTariffsStore(convertedTariffs);
};
export const requestTariffs = async (
page: number = 1,
existingTariffs: Tariff_BACKEND[] = []
): Promise<void> => {
try {
const { tariffs, totalPages } = await makeRequest<
never,
GetTariffsResponse
>({
url: baseUrl + `/tariff/?page=${page}&limit=${100}`,
method: "get",
bearer: true,
});
if (page < totalPages) {
return requestTariffs(page + 1, [...existingTariffs, ...tariffs]);
}
mutateTariffs([...existingTariffs, ...tariffs]);
} catch {
throw new Error("Ошибка при получении тарифов");
}
};