adminFront/src/services/privilegies.service.ts

64 lines
1.8 KiB
TypeScript
Raw Normal View History

2023-07-12 13:31:35 +00:00
import { authStore } from "@root/stores/auth";
import { resetPrivilegeArray } from "@root/stores/privilegesStore";
import { exampleCartValues } from "@stores/mocks/exampleCartValues";
import type { RealPrivilege } from "@root/model/privilege";
export type Privilege = {
createdAt: string;
description: string;
isDeleted: boolean;
name: string;
price: number;
privilegeId: string;
serviceKey: string;
type: "count" | "day" | "mb";
updatedAt: string;
value: string;
_id: string;
};
type SeverPrivilegiesResponse = {
templategen: RealPrivilege[];
};
const baseUrl =
process.env.NODE_ENV === "production"
? "/strator"
: "https://admin.pena.digital/strator";
const { makeRequest } = authStore.getState();
const mutatePrivilegies = (privilegies: RealPrivilege[]) => {
let extracted: RealPrivilege[] = [];
for (let serviceKey in privilegies) {
//Приходит объект. В его значениях массивы привилегий для разных сервисов. Высыпаем в общую кучу и обновляем стор
extracted = extracted.concat(privilegies[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, ...exampleCartValues.privileges]);
};
export const requestPrivilegies = async () => {
await makeRequest<never, SeverPrivilegiesResponse>({
url: baseUrl + "/privilege/service",
method: "get",
})
.then(({ templategen }) => mutatePrivilegies(templategen))
.catch(() => {
console.log("Ошибка при получении привилегий");
});
};