feat: service category deleting

This commit is contained in:
2024-10-09 02:25:37 +03:00
parent 891b6cff9f
commit 35951c7019
5 changed files with 93 additions and 23 deletions

View File

@@ -189,6 +189,8 @@ export type { ServiceCreateCategoryRequest } from './models/ServiceCreateCategor
export type { ServiceCreateCategoryResponse } from './models/ServiceCreateCategoryResponse'; export type { ServiceCreateCategoryResponse } from './models/ServiceCreateCategoryResponse';
export type { ServiceCreateRequest } from './models/ServiceCreateRequest'; export type { ServiceCreateRequest } from './models/ServiceCreateRequest';
export type { ServiceCreateResponse } from './models/ServiceCreateResponse'; export type { ServiceCreateResponse } from './models/ServiceCreateResponse';
export type { ServiceDeleteCategoryRequest } from './models/ServiceDeleteCategoryRequest';
export type { ServiceDeleteCategoryResponse } from './models/ServiceDeleteCategoryResponse';
export type { ServiceDeleteRequest } from './models/ServiceDeleteRequest'; export type { ServiceDeleteRequest } from './models/ServiceDeleteRequest';
export type { ServiceDeleteResponse } from './models/ServiceDeleteResponse'; export type { ServiceDeleteResponse } from './models/ServiceDeleteResponse';
export type { ServiceGetAllCategoriesResponse } from './models/ServiceGetAllCategoriesResponse'; export type { ServiceGetAllCategoriesResponse } from './models/ServiceGetAllCategoriesResponse';

View File

@@ -0,0 +1,8 @@
/* generated using openapi-typescript-codegen -- do not edit */
/* istanbul ignore file */
/* tslint:disable */
/* eslint-disable */
export type ServiceDeleteCategoryRequest = {
categoryId: number;
};

View File

@@ -0,0 +1,9 @@
/* generated using openapi-typescript-codegen -- do not edit */
/* istanbul ignore file */
/* tslint:disable */
/* eslint-disable */
export type ServiceDeleteCategoryResponse = {
ok: boolean;
message: string;
};

View File

@@ -17,6 +17,8 @@ import type { ServiceCreateCategoryRequest } from '../models/ServiceCreateCatego
import type { ServiceCreateCategoryResponse } from '../models/ServiceCreateCategoryResponse'; import type { ServiceCreateCategoryResponse } from '../models/ServiceCreateCategoryResponse';
import type { ServiceCreateRequest } from '../models/ServiceCreateRequest'; import type { ServiceCreateRequest } from '../models/ServiceCreateRequest';
import type { ServiceCreateResponse } from '../models/ServiceCreateResponse'; import type { ServiceCreateResponse } from '../models/ServiceCreateResponse';
import type { ServiceDeleteCategoryRequest } from '../models/ServiceDeleteCategoryRequest';
import type { ServiceDeleteCategoryResponse } from '../models/ServiceDeleteCategoryResponse';
import type { ServiceDeleteRequest } from '../models/ServiceDeleteRequest'; import type { ServiceDeleteRequest } from '../models/ServiceDeleteRequest';
import type { ServiceDeleteResponse } from '../models/ServiceDeleteResponse'; import type { ServiceDeleteResponse } from '../models/ServiceDeleteResponse';
import type { ServiceGetAllCategoriesResponse } from '../models/ServiceGetAllCategoriesResponse'; import type { ServiceGetAllCategoriesResponse } from '../models/ServiceGetAllCategoriesResponse';
@@ -207,6 +209,26 @@ export class ServiceService {
}, },
}); });
} }
/**
* Delete Category
* @returns ServiceDeleteCategoryResponse Successful Response
* @throws ApiError
*/
public static deleteServiceCategory({
requestBody,
}: {
requestBody: ServiceDeleteCategoryRequest,
}): CancelablePromise<ServiceDeleteCategoryResponse> {
return __request(OpenAPI, {
method: 'POST',
url: '/service/categories/delete',
body: requestBody,
mediaType: 'application/json',
errors: {
422: `Validation Error`,
},
});
}
/** /**
* Get All Service Types * Get All Service Types
* @returns BaseEnumListSchema Successful Response * @returns BaseEnumListSchema Successful Response

View File

@@ -7,7 +7,7 @@ import { useServicesTableColumns } from "./columns.tsx";
import { BaseTable } from "../../../../components/BaseTable/BaseTable.tsx"; import { BaseTable } from "../../../../components/BaseTable/BaseTable.tsx";
import { MRT_TableOptions } from "mantine-react-table"; import { MRT_TableOptions } from "mantine-react-table";
import { CRUDTableProps } from "../../../../types/CRUDTable.tsx"; import { CRUDTableProps } from "../../../../types/CRUDTable.tsx";
import { ActionIcon, Flex, Tooltip } from "@mantine/core"; import { ActionIcon, Flex, rem, Tooltip } from "@mantine/core";
import { IconArrowDown, IconArrowUp, IconEdit, IconTrash } from "@tabler/icons-react"; import { IconArrowDown, IconArrowUp, IconEdit, IconTrash } from "@tabler/icons-react";
import { modals } from "@mantine/modals"; import { modals } from "@mantine/modals";
import { notifications } from "../../../../shared/lib/notifications.ts"; import { notifications } from "../../../../shared/lib/notifications.ts";
@@ -151,34 +151,63 @@ const ServicesTable: FC<Props> = ({
}, },
"mrt-row-actions": { "mrt-row-actions": {
AggregatedCell: ({ row }) => editMode && ( AggregatedCell: ({ row }) => editMode && (
<Tooltip label={"Редактировать категорию"}> <Flex gap={"xs"}>
<ActionIcon onClick={() => { <Tooltip label={"Редактировать категорию"}>
modals.openContextModal({ <ActionIcon onClick={() => {
modal: "createServiceCategory", modals.openContextModal({
title: "Создание категории", modal: "createServiceCategory",
withCloseButton: false, title: "Создание категории",
innerProps: { withCloseButton: false,
element: row.original.category, innerProps: {
onChange: newCategory => { element: row.original.category,
ServiceService.updateServiceCategory({ requestBody: { category: newCategory } }).then(({ onChange: newCategory => {
ok, ServiceService.updateServiceCategory({ requestBody: { category: newCategory } }).then(({
message, ok,
}) => { message,
}) => {
notifications.guess(ok, { message });
if (!ok) return;
queryClient.invalidateQueries({
queryKey: ["getAllServices"],
}).then(() => {
});
},
);
},
},
});
}} variant={"default"}>
<IconEdit />
</ActionIcon>
</Tooltip>
<Tooltip label={"Удалить категорию"}>
<ActionIcon
onClick={() => {
modals.openConfirmModal({
title: "Удаление категории",
children: `Вы уверены, что хотите удалить категорию: ${row.original.category.name}?`,
onConfirm: () => {
ServiceService.deleteServiceCategory({ requestBody: { categoryId: row.original.category.id } }).then(({
ok,
message,
}) => {
notifications.guess(ok, { message }); notifications.guess(ok, { message });
if (!ok) return; if (!ok) return;
queryClient.invalidateQueries({ queryClient.invalidateQueries({
queryKey: ["getAllServices"], queryKey: ["getAllServices"],
}).then(() => { }).then(() => {
}); });
}, });
); },
}, });
}, }}
}); variant={"default"}
}} variant={"default"}> >
<IconEdit /> <IconTrash />
</ActionIcon> </ActionIcon>
</Tooltip> </Tooltip>
</Flex>
), ),
}, },
}, },