import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query";
import { toast } from "sonner";
import {
  createVehiculo,
  deleteVehiculo,
  getVehiculos,
  getVehiculosByTransportista,
  updateVehiculo,
} from "../api/vehiculos.service";

export const useVehiculosQuery = (page = 1, limit = 100) => {
  return useQuery({
    queryKey: ["vehiculos", page, limit],
    queryFn: () => getVehiculos(page, limit),
  });
};

export const useVehiculosByTransportistaQuery = (transportista_id) => {
  return useQuery({
    queryKey: ["vehiculos-by-transportista", transportista_id],
    queryFn: () => getVehiculosByTransportista(transportista_id),
    enabled: !!transportista_id,
  });
};

export const useCreateVehiculoMutation = () => {
  const queryClient = useQueryClient();
  return useMutation({
    mutationFn: createVehiculo,
    onSuccess: () => {
      toast.success("Vehículo creado correctamente");
      queryClient.invalidateQueries({ queryKey: ["vehiculos"] });
    },
    onError: (error) => {
      toast.error(error.response?.data?.message || "Error al crear vehículo");
    },
  });
};

export const useUpdateVehiculoMutation = () => {
  const queryClient = useQueryClient();
  return useMutation({
    mutationFn: ({ id, data }) => updateVehiculo(id, data),
    onSuccess: () => {
      toast.success("Vehículo actualizado correctamente");
      queryClient.invalidateQueries({ queryKey: ["vehiculos"] });
    },
    onError: (error) => {
      toast.error(error.response?.data?.message || "Error al actualizar vehículo");
    },
  });
};

export const useDeleteVehiculoMutation = () => {
  const queryClient = useQueryClient();
  return useMutation({
    mutationFn: deleteVehiculo,
    onSuccess: () => {
      toast.success("Vehículo desactivado correctamente");
      queryClient.invalidateQueries({ queryKey: ["vehiculos"] });
    },
    onError: (error) => {
      toast.error(error.response?.data?.message || "Error al desactivar vehículo");
    },
  });
};
