import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query";
import { useAuth } from "@/contexts/auth-context";
import { decrypt } from "@/lib/encryption";
import api from "@/lib/axiosClient";

export interface FollowUpChecklist {
    id: number;
    calc_customer_id: number;
    customer_id:number;
    name:string;
    type: string;
    type_label?: string;
    status: number | null;
    keterangan: string | null;
    waktu: string | null;
    description: string;
    status_follow_up: {
        color:string;
        id:string;
        name:string;
        text_color:string;
    };
    updated:string;
    created:string;
    follow_up: {
        description?: string;
        score?: number;
        type_follow_up: {
            color:string;
            id:string;
            name:string;
            text_color:string;
        }
    }
    updated_by:{
        id:number;
        name:string;
        email:string;
        type:number;
        initial:string;
        color:string;
        color_text:string;

    };
    created_by:{
        id:number;
        name:string;
        email:string;
        type:number;
        initial:string;
        color:string;
        color_text:string;
    };
    is_required: boolean;
}

export const useFollowUpChecklist = (phone: string | undefined, enabled: boolean) => {
    const { user } = useAuth();
    return useQuery({
        queryKey: ["follow-up-checklist", phone],
        queryFn: async () => {
            if (!phone) return null;

            // TODO: Sesuaikan dengan endpoint get checklist rumapedia-api
            const response = await api.get(`/v1.0/services/customer/follow-up-checklist`, {
                params: {
                    phone_number: phone,
                    user_id: user?.id
                }
            });

            // Asumsi response mengembalikan object dengan property "result" dan "categories"
            return {
                data: response.data?.result as FollowUpChecklist[] || [],
                categories: response.data?.categories || []
            };
        },
        enabled: !!phone && enabled,
    });
};

export const useUpdateFollowUpChecklist = () => {
    const queryClient = useQueryClient();
    const { user } = useAuth();

    return useMutation({
        mutationFn: async (payload: { id: number; status: number | null; keterangan: string | null; phone: string }) => {
            // TODO: Sesuaikan dengan endpoint update checklist rumapedia-api
            const response = await api.put(`/v1.0/services/customer/follow-up-checklist/${payload.id}`, {
                status: payload.status,
                keterangan: payload.keterangan,
                user_id: user?.id
            },{
                headers: {
                    encrypt:'false',
                    "Content-Type":'application/json'
                }
            });
            return response.data;
        },
        onSuccess: (data, variables) => {
            queryClient.invalidateQueries({ queryKey: ["follow-up-checklist", variables.phone] });
            queryClient.invalidateQueries({ queryKey: ["contact-conversations-infinite"] });
        }
    });
};
