import { makeRequest } from "@frontend/kitui"; import { parseAxiosError } from "@root/utils/parse-error"; import type { Privilege } from "@frontend/kitui"; import type { Tariff } from "@frontend/kitui"; import type { EditTariffRequestBody } from "@root/model/tariff"; type CreateTariffBackendRequest = { name: string; description: string; order: number; price: number; isCustom: boolean; privileges: Omit[]; }; type GetTariffsResponse = { totalPages: number; tariffs: Tariff[]; }; const baseUrl =process.env.REACT_APP_DOMAIN + "/strator" export const createTariff = async ( body: CreateTariffBackendRequest ): Promise<[unknown, string?]> => { try { const createdTariffResponse = await makeRequest( { url: baseUrl + "/tariff/", method: "post", body, } ); return [createdTariffResponse]; } catch (nativeError) { const [error] = parseAxiosError(nativeError); return [null, `Ошибка создания тарифа. ${error}`]; } }; export const putTariff = async (tariff: Tariff): Promise<[null, string?]> => { try { const putedTariffResponse = await makeRequest({ method: "put", url: baseUrl + `/tariff/${tariff._id}`, body: { name: tariff.name, price: tariff.price ?? 0, isCustom: false, order: tariff.order || 1, description: tariff.description ?? "", privileges: tariff.privileges, }, }); return [putedTariffResponse]; } catch (nativeError) { const [error] = parseAxiosError(nativeError); return [null, `Ошибка редактирования тарифа. ${error}`]; } }; export const deleteTariff = async ( tariffId: string ): Promise<[Tariff | null, string?]> => { try { const deletedTariffResponse = await makeRequest<{ id: string }, Tariff>({ method: "delete", url: baseUrl + "/tariff", body: { id: tariffId }, }); return [deletedTariffResponse]; } catch (nativeError) { const [error] = parseAxiosError(nativeError); return [null, `Ошибка удаления тарифа. ${error}`]; } }; export const requestTariffs = async ( page: number ): Promise<[GetTariffsResponse | null, string?]> => { try { const tariffsResponse = await makeRequest({ url: baseUrl + `/tariff/?page=${page}&limit=${100}`, method: "get", }); return [tariffsResponse]; } catch (nativeError) { const [error] = parseAxiosError(nativeError); return [null, `Ошибка запроса тарифов. ${error}`]; } };