63 lines
1.6 KiB
TypeScript
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("Ошибка при получении тарифов");
|
|
}
|
|
};
|