51 lines
1.2 KiB
TypeScript
51 lines
1.2 KiB
TypeScript
// imports
|
|
|
|
import { useMutation } from "@tanstack/vue-query";
|
|
import { API_ENDPOINTS } from "~/constants";
|
|
|
|
// types
|
|
|
|
export type CreateTicketRequest = {
|
|
ticket_category: string | undefined;
|
|
order: number | undefined;
|
|
subject: string;
|
|
content: string;
|
|
attachments: ServerFile[];
|
|
};
|
|
|
|
const useCreateTicket = () => {
|
|
// state
|
|
|
|
const { $axios: axios } = useNuxtApp();
|
|
|
|
// methods
|
|
|
|
const handleCreateTicket = async (params: CreateTicketRequest) => {
|
|
const { data } = await axios.post(
|
|
API_ENDPOINTS.tickets.create,
|
|
{
|
|
message: {
|
|
content: params.content,
|
|
attachments: params.attachments,
|
|
},
|
|
subject: params.subject,
|
|
ticket_category: params.ticket_category,
|
|
order: params.order,
|
|
},
|
|
{
|
|
headers: {
|
|
"Content-Type": "multipart/form-data",
|
|
},
|
|
}
|
|
);
|
|
return data;
|
|
};
|
|
|
|
return useMutation({
|
|
mutationFn: (ticketData: CreateTicketRequest) =>
|
|
handleCreateTicket(ticketData),
|
|
});
|
|
};
|
|
|
|
export default useCreateTicket;
|