import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query";
import { toast } from "sonner";
import { useEmpresaStore } from "..";
import { getEmpresa } from "../api/empresas.service";
import { useGlobalStore } from "../store/GlobalStore";

export const useUpdateEmpresaMutation = () => {
  const queyClient = useQueryClient();
  const { dataempresa, editarEmpresa } = useEmpresaStore();
  const { file } = useGlobalStore();
  return useMutation({
    mutationKey: ["editar empresa"],
    mutationFn: async (data) => {
      const p = {
        id: dataempresa?.id,
        nombre: data.nombre,
        direccion_fiscal: data.direccion,
        impuesto: data.impuesto,
        valor_impuesto: parseFloat(data.valor_impuesto),
      };
      await editarEmpresa(p, dataempresa?.logo, file);
    },
    onError: (error) => toast.error(error.message),
    onSuccess: () => {
      toast.success("Datos guardados");
      queyClient.invalidateQueries(["mostrar empresa"]);
    },
  });
};
export const useUpdateEmpresaTicketMutation = () => {
  const { file } = useGlobalStore();
  const queyClient = useQueryClient();
  const { dataempresa, editarEmpresa } = useEmpresaStore();
  return useMutation({
    mutationKey: ["editar empresa"],
    mutationFn: async (data) => {
      const p = {
        id: dataempresa?.id,
        nombre: data?.nombre,
        id_fiscal: data?.id_fiscal,
        direccion_fiscal: data?.direccion_fiscal,
        nombre_moneda: data?.nombre_moneda,
        pie_pagina_ticket: data?.pie_pagina_ticket,
      };

      await editarEmpresa(p, dataempresa?.logo, file);
    },
    onError: (error) => toast.error(error.message),
    onSuccess: () => {
      toast.success("Datos guardados");
      queyClient.invalidateQueries(["mostrar empresa"]);
    },
  });
};

export const useTimbradosQuery = (empresaId) => {
  return useQuery({
    queryKey: ["empresa-timbrados", empresaId],
    queryFn: () => getEmpresa(empresaId),
    enabled: !!empresaId,
    select: (response) => {
      // La respuesta viene como { message, data: { ...empresa, empresas_timbrado: [...] } }
      const empresa = response?.data || response;
      return empresa?.empresas_timbrado || [];
    },
  });
};
