import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query";
import { toast } from "sonner";
import {
  createAsignacion,
  deleteAsignacion,
  getAsignacionesByUsuario,
  getMisAsignaciones,
} from "../api/asignaciones.service";

export const useMostrarSucursalAsignadasQuery = () => {
  return useQuery({
    queryKey: ["mis-asignaciones-sucursal"],
    queryFn: getMisAsignaciones,
  });
};

// Query para obtener asignaciones de un usuario específico
export const useAsignacionesByUsuarioQuery = (usuarioId) => {
  return useQuery({
    queryKey: ["asignaciones-usuario", usuarioId],
    queryFn: () => getAsignacionesByUsuario(usuarioId),
    enabled: !!usuarioId,
  });
};

// Mutation para crear asignación
export const useCreateAsignacionMutation = () => {
  const queryClient = useQueryClient();
  return useMutation({
    mutationFn: createAsignacion,
    onSuccess: (_, variables) => {
      toast.success("Asignación creada correctamente");
      queryClient.invalidateQueries({
        queryKey: ["asignaciones-usuario", variables.usuario_id],
      });
    },
    onError: (error) => {
      toast.error(error.response?.data?.message || "Error al crear asignación");
    },
  });
};

// Mutation para eliminar asignación
export const useDeleteAsignacionMutation = () => {
  const queryClient = useQueryClient();
  return useMutation({
    mutationFn: deleteAsignacion,
    onSuccess: () => {
      toast.success("Asignación eliminada correctamente");
      queryClient.invalidateQueries({ queryKey: ["asignaciones-usuario"] });
    },
    onError: (error) => {
      toast.error(
        error.response?.data?.message || "Error al eliminar asignación",
      );
    },
  });
};
