feat: services kits table in service page

This commit is contained in:
2025-09-25 09:36:22 +04:00
parent a83328492e
commit 14140826a7
28 changed files with 641 additions and 32 deletions

View File

@ -0,0 +1,51 @@
import { useCrudOperations } from "@/hooks/cruds/baseCrud";
import {
CreateServicesKitSchema,
ServicesKitSchema,
UpdateServicesKitSchema,
} from "@/lib/client";
import {
createServicesKitMutation,
deleteServicesKitMutation,
updateServicesKitMutation,
} from "@/lib/client/@tanstack/react-query.gen";
type Props = {
queryKey: any[];
};
export type ServicesKitsCrud = {
onCreate: (data: Partial<CreateServicesKitSchema>) => void;
onUpdate: (
servicesKitId: number,
servicesKit: UpdateServicesKitSchema
) => void;
onDelete: (servicesKit: ServicesKitSchema, onSuccess?: () => void) => void;
};
export const useServicesKitsCrud = ({ queryKey }: Props): ServicesKitsCrud => {
return useCrudOperations<
ServicesKitSchema,
UpdateServicesKitSchema,
CreateServicesKitSchema
>({
key: "getServicesKits",
queryKey,
mutations: {
create: createServicesKitMutation(),
update: updateServicesKitMutation(),
delete: deleteServicesKitMutation(),
},
getCreateEntity: data => ({
name: data.name!,
serviceType: data.serviceType!,
services: data.services!,
}),
getUpdateEntity: (old, update) => ({
...old,
name: update.name ?? old.name,
serviceType: update.serviceType ?? old.serviceType,
}),
getDeleteConfirmTitle: () => "Удаление набора услуг",
});
};

View File

@ -5,7 +5,15 @@ import {
getServicesKitsQueryKey,
} from "@/lib/client/@tanstack/react-query.gen";
const useServicesKitsList = () => {
export type ServicesKitsList = {
servicesKits: ServicesKitSchema[];
setServicesKits: (servicesKits: ServicesKitSchema[]) => void;
refetch: () => void;
queryKey: any[];
isLoading: boolean;
};
const useServicesKitsList = (): ServicesKitsList => {
const queryClient = useQueryClient();
const { data, refetch, isLoading } = useQuery(getServicesKitsOptions());

View File

@ -5,8 +5,15 @@ import {
getServicesQueryKey,
} from "@/lib/client/@tanstack/react-query.gen";
export type ServicesList = {
services: ServiceSchema[];
setServices: (services: ServiceSchema[]) => void;
refetch: () => void;
queryKey: any[];
isLoading: boolean;
};
const useServicesList = () => {
const useServicesList = (): ServicesList => {
const queryClient = useQueryClient();
const { data, refetch, isLoading } = useQuery(getServicesOptions());