Files
danak-admin/src/pages/ticket/hooks/useTicketData.ts
T
2025-05-25 10:33:22 +03:30

81 lines
1.8 KiB
TypeScript

import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query";
import * as api from "../service/TicketServiec";
import {
AddMessageTicketType,
CreateCategoryType,
CreateTicketAdminType,
} from "../types/TicketTypes";
export const useGetTickets = (
status: string,
customerId?: string,
page?: number
) => {
return useQuery({
queryKey: ["tickets", status, customerId, page],
queryFn: () => api.getTickets(status, customerId, page),
});
};
export const useGetMessages = (id: string) => {
return useQuery({
queryKey: ["ticket-messages", id],
queryFn: () => api.getMessages(id),
enabled: !!id,
});
};
export const useAddMessageTicket = (id: string) => {
const queryClient = useQueryClient();
return useMutation({
mutationFn: (variables: AddMessageTicketType) =>
api.addMessageTicket(id, variables),
onSuccess: () => {
queryClient.refetchQueries({
queryKey: ["ticket-messages", id],
});
},
});
};
export const useCloseTicket = () => {
return useMutation({
mutationFn: (id: string) => api.closeTicket(id),
});
};
export const useCreateCategory = () => {
return useMutation({
mutationFn: (variables: CreateCategoryType) =>
api.createCategory(variables),
});
};
export const useGetCategories = () => {
return useQuery({
queryKey: ["categories"],
queryFn: () => api.getCategories(),
});
};
export const useReferTicket = () => {
return useMutation({
mutationFn: (variables: { id: string; userId: string }) =>
api.referTicket(variables.id, variables.userId),
});
};
export const useOpenTicket = () => {
return useMutation({
mutationFn: (id: string) => api.openTicket(id),
});
};
export const useCreateTicket = () => {
return useMutation({
mutationFn: (variables: CreateTicketAdminType) =>
api.createTicket(variables),
});
};