Исправление запроса service
This commit is contained in:
parent
cb40c318ae
commit
51a6fed49a
52
src/hooks/tariff.hook.ts
Normal file
52
src/hooks/tariff.hook.ts
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
import { useEffect, useState } from "react";
|
||||||
|
import axios from "axios";
|
||||||
|
|
||||||
|
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 UseTariffs = {
|
||||||
|
tariffs: Record<string, Privilege[]> | undefined;
|
||||||
|
isError: boolean;
|
||||||
|
isLoading: boolean;
|
||||||
|
errorMessage: string;
|
||||||
|
};
|
||||||
|
|
||||||
|
export const useTariffs = (): UseTariffs => {
|
||||||
|
const [tariffs, setTariffs] = useState<Record<string, Privilege[]>>();
|
||||||
|
const [isLoading, setIsLoading] = useState(false);
|
||||||
|
const [isError, setIsError] = useState(false);
|
||||||
|
const [errorMessage, setErrorMessage] = useState("");
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
const getPrivilegies = async () => {
|
||||||
|
const { data } = await axios<Record<string, Privilege[]>>({
|
||||||
|
method: "get",
|
||||||
|
url: "https://admin.pena.digital/strator/tariff/",
|
||||||
|
});
|
||||||
|
|
||||||
|
return data;
|
||||||
|
};
|
||||||
|
|
||||||
|
setIsLoading(true);
|
||||||
|
getPrivilegies()
|
||||||
|
.then(setTariffs)
|
||||||
|
.catch(() => {
|
||||||
|
setIsError(true);
|
||||||
|
setErrorMessage("Ошибка при получении тарифов");
|
||||||
|
})
|
||||||
|
.finally(() => setIsLoading(false));
|
||||||
|
}, []);
|
||||||
|
|
||||||
|
return { tariffs, isError, isLoading, errorMessage };
|
||||||
|
};
|
@ -1,6 +1,6 @@
|
|||||||
import { usePrivilegeStore } from "@root/stores/privileges";
|
import { usePrivilegeStore } from "@root/stores/privileges";
|
||||||
|
|
||||||
import { usePrivilegies } from "./privilege.hook";
|
import { usePrivilegies } from "./privilege.hook";
|
||||||
|
import { addMergedPrivileges } from "@root/stores/mergedPrivileges";
|
||||||
|
|
||||||
export type mergedPrivilege = {
|
export type mergedPrivilege = {
|
||||||
createdAt?: string;
|
createdAt?: string;
|
||||||
@ -24,7 +24,7 @@ export const useCombinedPrivileges = () => {
|
|||||||
|
|
||||||
if (privilegies) {
|
if (privilegies) {
|
||||||
mergedPrivileges.push(...privilegies.Шаблонизатор, ...examplePrivileges);
|
mergedPrivileges.push(...privilegies.Шаблонизатор, ...examplePrivileges);
|
||||||
}
|
|
||||||
|
|
||||||
return { mergedPrivileges, isError, errorMessage };
|
addMergedPrivileges(mergedPrivileges, isError, errorMessage);
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
@ -1,9 +1,11 @@
|
|||||||
import { Typography } from "@mui/material";
|
import { Typography } from "@mui/material";
|
||||||
import { СardPrivilegie } from "./CardPrivilegie";
|
import { СardPrivilegie } from "./CardPrivilegie";
|
||||||
import { useCombinedPrivileges } from "@root/hooks/useCombinedPrivileges.hook";
|
import { mergedPrivilegeStore } from "@root/stores/mergedPrivileges";
|
||||||
|
|
||||||
export default function ListPrivilegie() {
|
export default function ListPrivilegie() {
|
||||||
const { mergedPrivileges, isError, errorMessage } = useCombinedPrivileges();
|
const { mergedPrivileges, isError, errorMessage } = mergedPrivilegeStore();
|
||||||
|
|
||||||
|
console.log(mergedPrivileges);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
|
@ -6,12 +6,11 @@ import axios from "axios";
|
|||||||
|
|
||||||
import { CustomTextField } from "@root/kitUI/CustomTextField";
|
import { CustomTextField } from "@root/kitUI/CustomTextField";
|
||||||
|
|
||||||
import { useCombinedPrivileges } from "@root/hooks/useCombinedPrivileges.hook";
|
|
||||||
|
|
||||||
import { Tariff } from "@root/model/tariff";
|
import { Tariff } from "@root/model/tariff";
|
||||||
|
|
||||||
import { addTariffs } from "@root/stores/tariffs";
|
import { addTariffs } from "@root/stores/tariffs";
|
||||||
import { authStore } from "@root/stores/auth";
|
import { authStore } from "@root/stores/auth";
|
||||||
|
import { mergedPrivilegeStore } from "@root/stores/mergedPrivileges";
|
||||||
|
|
||||||
export default function CreateTariff() {
|
export default function CreateTariff() {
|
||||||
const theme = useTheme();
|
const theme = useTheme();
|
||||||
@ -19,7 +18,7 @@ export default function CreateTariff() {
|
|||||||
const [amountField, setAmountField] = useState<string>("");
|
const [amountField, setAmountField] = useState<string>("");
|
||||||
const [customPriceField, setCustomPriceField] = useState<string>("");
|
const [customPriceField, setCustomPriceField] = useState<string>("");
|
||||||
const [privilegeIdField, setPrivilegeIdField] = useState<string>("");
|
const [privilegeIdField, setPrivilegeIdField] = useState<string>("");
|
||||||
const { mergedPrivileges, isError, errorMessage } = useCombinedPrivileges();
|
const { mergedPrivileges, isError, errorMessage } = mergedPrivilegeStore();
|
||||||
const { token } = authStore();
|
const { token } = authStore();
|
||||||
|
|
||||||
const findPrivilegeById = (privilegeId: string) => {
|
const findPrivilegeById = (privilegeId: string) => {
|
||||||
@ -28,8 +27,6 @@ export default function CreateTariff() {
|
|||||||
|
|
||||||
const privilege = findPrivilegeById(privilegeIdField);
|
const privilege = findPrivilegeById(privilegeIdField);
|
||||||
|
|
||||||
console.log(privilege);
|
|
||||||
|
|
||||||
function handleCreateTariffClick() {
|
function handleCreateTariffClick() {
|
||||||
if (nameField === "") {
|
if (nameField === "") {
|
||||||
enqueueSnackbar("Пустое название тарифа");
|
enqueueSnackbar("Пустое название тарифа");
|
||||||
@ -56,17 +53,13 @@ export default function CreateTariff() {
|
|||||||
};
|
};
|
||||||
|
|
||||||
addTariffs([newTariff]);
|
addTariffs([newTariff]);
|
||||||
|
|
||||||
axios({})
|
|
||||||
.then((response) => {
|
|
||||||
console.log(response.data);
|
|
||||||
})
|
|
||||||
.catch((error) => {
|
|
||||||
console.error(error);
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const createTariff = async () => {
|
const createTariff = async () => {
|
||||||
|
if (nameField === "" || amountField === "" || privilegeIdField === "") {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
if (!privilege) {
|
if (!privilege) {
|
||||||
throw new Error("Привилегия не выбрана");
|
throw new Error("Привилегия не выбрана");
|
||||||
@ -214,7 +207,6 @@ export default function CreateTariff() {
|
|||||||
handleCreateTariffClick();
|
handleCreateTariffClick();
|
||||||
createTariff();
|
createTariff();
|
||||||
}}
|
}}
|
||||||
// disabled={privilegeIdField === "" || amountField === "" || nameField === ""}
|
|
||||||
>
|
>
|
||||||
Создать
|
Создать
|
||||||
</Button>
|
</Button>
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
import { GridColDef } from "@mui/x-data-grid";
|
import { GridColDef } from "@mui/x-data-grid";
|
||||||
import DataGrid from "@kitUI/datagrid";
|
import DataGrid from "@kitUI/datagrid";
|
||||||
import { useCombinedPrivileges } from "@root/hooks/useCombinedPrivileges.hook";
|
|
||||||
import { Typography } from "@mui/material";
|
import { Typography } from "@mui/material";
|
||||||
|
import { mergedPrivilegeStore } from "@root/stores/mergedPrivileges";
|
||||||
|
|
||||||
const columns: GridColDef[] = [
|
const columns: GridColDef[] = [
|
||||||
{ field: "id", headerName: "id", width: 40 },
|
{ field: "id", headerName: "id", width: 40 },
|
||||||
@ -12,8 +12,7 @@ const columns: GridColDef[] = [
|
|||||||
];
|
];
|
||||||
|
|
||||||
export default function Privileges() {
|
export default function Privileges() {
|
||||||
const { mergedPrivileges, isError, errorMessage } = useCombinedPrivileges();
|
const { mergedPrivileges, isError, errorMessage } = mergedPrivilegeStore();
|
||||||
|
|
||||||
const privilegesGridData = mergedPrivileges.map((privilege) => ({
|
const privilegesGridData = mergedPrivileges.map((privilege) => ({
|
||||||
id: privilege.privilegeId,
|
id: privilege.privilegeId,
|
||||||
name: privilege.name,
|
name: privilege.name,
|
||||||
|
@ -16,8 +16,6 @@ interface Props {
|
|||||||
export default function TariffsDG({ handleSelectionChange }: Props) {
|
export default function TariffsDG({ handleSelectionChange }: Props) {
|
||||||
const tariffs = useTariffStore((state) => state.tariffs);
|
const tariffs = useTariffStore((state) => state.tariffs);
|
||||||
|
|
||||||
console.log(tariffs);
|
|
||||||
|
|
||||||
const columns: GridColDef[] = [
|
const columns: GridColDef[] = [
|
||||||
{ field: "id", headerName: "ID", width: 100 },
|
{ field: "id", headerName: "ID", width: 100 },
|
||||||
{ field: "name", headerName: "Название тарифа", width: 150 },
|
{ field: "name", headerName: "Название тарифа", width: 150 },
|
||||||
|
43
src/stores/mergedPrivileges.ts
Normal file
43
src/stores/mergedPrivileges.ts
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
import { create } from "zustand";
|
||||||
|
import { persist } from "zustand/middleware";
|
||||||
|
|
||||||
|
type mergedPrivilege = {
|
||||||
|
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 MergedPrivilegeType = {
|
||||||
|
mergedPrivileges: mergedPrivilege[];
|
||||||
|
isError: boolean;
|
||||||
|
errorMessage: string;
|
||||||
|
};
|
||||||
|
|
||||||
|
export const mergedPrivilegeStore = create<MergedPrivilegeType>()(
|
||||||
|
persist(
|
||||||
|
(set, get) => ({
|
||||||
|
mergedPrivileges: [],
|
||||||
|
isError: false,
|
||||||
|
errorMessage: "",
|
||||||
|
}),
|
||||||
|
{
|
||||||
|
name: "MergedPrivileg store",
|
||||||
|
}
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
export const addMergedPrivileges = (newPrivileges: mergedPrivilege[], isError: boolean, errorMessage: string) => {
|
||||||
|
mergedPrivilegeStore.setState((state) => ({
|
||||||
|
mergedPrivileges: [...state.mergedPrivileges, ...newPrivileges],
|
||||||
|
isError: isError,
|
||||||
|
errorMessage: errorMessage,
|
||||||
|
}));
|
||||||
|
};
|
Loading…
Reference in New Issue
Block a user