import { useQuery, useMutation, useQueryClient } from "@tanstack/react-query";
import api from "@/lib/axios";

export interface MessageTemplate {
    id: number;
    message: string;
    category: number;
    counter_sent: number;
    created_by: string | null;
    created_at: string;
    updated_at: string;
}

export const useMessageTemplates = () => {
    return useQuery({
        queryKey: ["message-templates"],
        queryFn: async () => {
            const { data } = await api.get<{ data: MessageTemplate[] }>("/api/whatsapp/message-templates");
            return data.data;
        }
    });
};

export const useCreateMessageTemplate = () => {
    const queryClient = useQueryClient();
    return useMutation({
        mutationFn: async (payload: { message: string; category: number }) => {
            const { data } = await api.post("/api/whatsapp/message-templates", payload);
            return data;
        },
        onSuccess: () => {
            queryClient.invalidateQueries({ queryKey: ["message-templates"] });
        }
    });
};

export const useUpdateMessageTemplate = () => {
    const queryClient = useQueryClient();
    return useMutation({
        mutationFn: async ({ id, payload }: { id: number; payload: { message: string; category: number } }) => {
            const { data } = await api.put(`/api/whatsapp/message-templates/${id}`, payload);
            return data;
        },
        onSuccess: () => {
            queryClient.invalidateQueries({ queryKey: ["message-templates"] });
        }
    });
};

export const useDeleteMessageTemplate = () => {
    const queryClient = useQueryClient();
    return useMutation({
        mutationFn: async (id: number) => {
            const { data } = await api.delete(`/api/whatsapp/message-templates/${id}`);
            return data;
        },
        onSuccess: () => {
            queryClient.invalidateQueries({ queryKey: ["message-templates"] });
        }
    });
};
