import apiClient from '../apiClient';
import type { UsuarioHistorialDto } from '../../models/dtos/Usuarios/Auditoria/UsuarioHistorialDto';
import type { PagoDistribuidorHistorialDto } from '../../models/dtos/Auditoria/PagoDistribuidorHistorialDto';
import type { NotaCreditoDebitoHistorialDto } from '../../models/dtos/Auditoria/NotaCreditoDebitoHistorialDto';
import type { EntradaSalidaDistHistorialDto } from '../../models/dtos/Auditoria/EntradaSalidaDistHistorialDto';
import type { EntradaSalidaCanillaHistorialDto } from '../../models/dtos/Auditoria/EntradaSalidaCanillaHistorialDto';
import type { NovedadCanillaHistorialDto } from '../../models/dtos/Auditoria/NovedadCanillaHistorialDto';
import type { SaldoAjusteHistorialDto } from '../../models/dtos/Auditoria/SaldoAjusteHistorialDto';
import type { TipoPagoHistorialDto } from '../../models/dtos/Auditoria/TipoPagoHistorialDto';
import type { CanillaHistorialDto } from '../../models/dtos/Auditoria/CanillaHistorialDto';
import type { DistribuidorHistorialDto } from '../../models/dtos/Auditoria/DistribuidorHistorialDto';
import type { EmpresaHistorialDto } from '../../models/dtos/Auditoria/EmpresaHistorialDto';
import type { ZonaHistorialDto } from '../../models/dtos/Auditoria/ZonaHistorialDto';
import type { OtroDestinoHistorialDto } from '../../models/dtos/Auditoria/OtroDestinoHistorialDto';
import type { PublicacionHistorialDto } from '../../models/dtos/Auditoria/PublicacionHistorialDto';
import type { PubliSeccionHistorialDto } from '../../models/dtos/Auditoria/PubliSeccionHistorialDto';
import type { PrecioHistorialDto } from '../../models/dtos/Auditoria/PrecioHistorialDto';
import type { RecargoZonaHistorialDto } from '../../models/dtos/Auditoria/RecargoZonaHistorialDto';
import type { PorcPagoHistorialDto } from '../../models/dtos/Auditoria/PorcPagoHistorialDto';
import type { PorcMonCanillaHistorialDto } from '../../models/dtos/Auditoria/PorcMonCanillaHistorialDto';
import type { ControlDevolucionesHistorialDto } from '../../models/dtos/Auditoria/ControlDevolucionesHistorialDto';
import type { TipoBobinaHistorialDto } from '../../models/dtos/Auditoria/TipoBobinaHistorialDto';
import type { EstadoBobinaHistorialDto } from '../../models/dtos/Auditoria/EstadoBobinaHistorialDto';
import type { PlantaHistorialDto } from '../../models/dtos/Auditoria/PlantaHistorialDto';
import type { StockBobinaHistorialDto } from '../../models/dtos/Auditoria/StockBobinaHistorialDto';
import type { RegTiradaHistorialDto } from '../../models/dtos/Auditoria/RegTiradaHistorialDto';
import type { RegSeccionTiradaHistorialDto } from '../../models/dtos/Auditoria/RegSeccionTiradaHistorialDto';
import type { PerfilHistorialDto } from '../../models/dtos/Auditoria/PerfilHistorialDto';
import type { PermisoHistorialDto } from '../../models/dtos/Auditoria/PermisoHistorialDto';
import type { PermisosPerfilesHistorialDto } from '../../models/dtos/Auditoria/PermisosPerfilesHistorialDto';
import type { CambioParadaHistorialDto } from '../../models/dtos/Auditoria/CambioParadaHistorialDto';
import type { CierreCuentaCorrienteHistorialDto } from '../../models/dtos/Auditoria/CierreCuentaCorrienteHistorialDto';

interface HistorialParamsComunes {
    fechaDesde?: string; // "yyyy-MM-dd"
    fechaHasta?: string; // "yyyy-MM-dd"
    idUsuarioModificador?: number; // Cambiado de idUsuarioModifico
    tipoModificacion?: string;     // Cambiado de tipoMod
}

interface HistorialCambiosParadaParams extends HistorialParamsComunes {
    idCanillaAfectado?: number;
}

interface HistorialCierresCCParams extends HistorialParamsComunes {
    idCierreAfectado?: number;
}

interface HistorialPermisosPerfilesParams extends HistorialParamsComunes {
    idPerfilAfectado?: number;
    idPermisoAfectado?: number;
}

interface HistorialPermisosMaestroParams extends HistorialParamsComunes { // << NUEVA INTERFAZ
    idPermisoAfectado?: number;
}

interface HistorialPerfilesMaestroParams extends HistorialParamsComunes { // << NUEVA INTERFAZ
    idPerfilAfectado?: number;
}

interface HistorialRegSeccionesTiradaParams extends HistorialParamsComunes {
    idTiradaAfectada?: number; // ID de bob_RegPublicaciones
    idPublicacionFiltro?: number;
    idSeccionFiltro?: number;
    idPlantaFiltro?: number;
    fechaTiradaFiltro?: string;
}

interface HistorialRegTiradasParams extends HistorialParamsComunes {
    idRegistroAfectado?: number;
    idPublicacionFiltro?: number;
    idPlantaFiltro?: number;
    fechaTiradaFiltro?: string; // YYYY-MM-DD
}

interface HistorialStockBobinasParams extends HistorialParamsComunes {
    idBobinaAfectada?: number;
    idTipoBobinaFiltro?: number;
    idPlantaFiltro?: number;
    idEstadoBobinaFiltro?: number;
}

interface HistorialPlantasMaestroParams extends HistorialParamsComunes { // << NUEVA INTERFAZ
    idPlantaAfectada?: number;
}

interface HistorialEstadosBobinaMaestroParams extends HistorialParamsComunes { // << NUEVA INTERFAZ
    idEstadoBobinaAfectado?: number;
}

interface HistorialTiposBobinaMaestroParams extends HistorialParamsComunes { // << NUEVA INTERFAZ
    idTipoBobinaAfectado?: number;
}

interface HistorialControlDevolucionesParams extends HistorialParamsComunes { // << NUEVA INTERFAZ
    idControlAfectado?: number;
    idEmpresaAfectada?: number;
    fechaAfectada?: string; // yyyy-MM-dd
}

interface HistorialPorcMonCanillaMaestroParams extends HistorialParamsComunes { // << NUEVA INTERFAZ
    idPorcMonAfectado?: number;
    idPublicacionAfectada?: number;
    idCanillaAfectada?: number;
}

interface HistorialPorcPagoDistMaestroParams extends HistorialParamsComunes { // << NUEVA INTERFAZ
    idPorcentajeAfectado?: number;
    idPublicacionAfectada?: number;
    idDistribuidorAfectado?: number;
}

interface HistorialRecargosZonaMaestroParams extends HistorialParamsComunes { // << NUEVA INTERFAZ
    idRecargoAfectado?: number;
    idPublicacionAfectada?: number;
    idZonaAfectada?: number;
}

interface HistorialPreciosMaestroParams extends HistorialParamsComunes { // << NUEVA INTERFAZ
    idPrecioAfectado?: number;
    idPublicacionAfectada?: number;
}

interface HistorialPubliSeccionesMaestroParams extends HistorialParamsComunes { // << NUEVA INTERFAZ
    idSeccionAfectada?: number;
    idPublicacionAfectada?: number; // Para filtrar por publicación si es necesario
}

interface HistorialPublicacionesMaestroParams extends HistorialParamsComunes { // << NUEVA INTERFAZ
    idPublicacionAfectada?: number;
}

interface HistorialOtrosDestinosMaestroParams extends HistorialParamsComunes { // << NUEVA INTERFAZ
    idOtroDestinoAfectado?: number;
}

interface HistorialZonasMaestroParams extends HistorialParamsComunes { // << NUEVA INTERFAZ
    idZonaAfectada?: number;
}

interface HistorialEmpresasMaestroParams extends HistorialParamsComunes { // << NUEVA INTERFAZ
    idEmpresaAfectada?: number;
}

interface HistorialDistribuidoresMaestroParams extends HistorialParamsComunes { // << NUEVA INTERFAZ
    idDistribuidorAfectado?: number;
}

interface HistorialCanillitasMaestroParams extends HistorialParamsComunes { // << NUEVA INTERFAZ
    idCanillaAfectado?: number;
}

interface HistorialTiposPagoParams extends HistorialParamsComunes { // << NUEVA INTERFAZ
    idTipoPagoAfectado?: number;
}

interface HistorialAjustesSaldoParams extends HistorialParamsComunes { // << NUEVA INTERFAZ
    destino?: string;
    idDestino?: number;
    idEmpresa?: number;
}

interface HistorialNovedadesCanillaParams extends HistorialParamsComunes { // << NUEVA INTERFAZ
    idNovedadAfectada?: number;
    // idCanilla?: number; // Si quieres filtrar por canillita directamente aquí
}

interface HistorialEntradaSalidaDistParams extends HistorialParamsComunes { // << NUEVA INTERFAZ
    idParteAfectada?: number; // ID del movimiento original
    // Filtros adicionales si el backend los soporta para este historial específico
    // idPublicacion?: number;
    // idDistribuidor?: number;
}

interface HistorialNotasCDParams extends HistorialParamsComunes {
    idNotaAfectada?: number; // ID de la nota original
    // Podrías añadir más filtros específicos si fueran necesarios
}

interface HistorialUsuariosParams extends HistorialParamsComunes {
    idUsuarioAfectado?: number;
}

interface HistorialPagosDistribuidorParams extends HistorialParamsComunes {
    idPagoAfectado?: number; // ID del pago original
    // Podría añadir filtros específicos para pagos si es necesario, como idDistribuidor, idEmpresa
}

interface HistorialEntradaSalidaCanillaParams extends HistorialParamsComunes { // << NUEVA INTERFAZ
    idParteAfectada?: number;
    // idPublicacion?: number; // Si quieres añadir más filtros específicos
    // idCanilla?: number;
}

const getHistorialUsuarios = async (params: HistorialUsuariosParams): Promise<UsuarioHistorialDto[]> => {
    const queryParams: any = { ...params };
    if (params.idUsuarioModificador) queryParams.idUsuarioModifico = params.idUsuarioModificador;
    delete queryParams.idUsuarioModificador; // Renombrar para el backend si es diferente

    const response = await apiClient.get<UsuarioHistorialDto[]>('/auditoria/usuarios', { params: queryParams });
    return response.data;
};

const getHistorialPagosDistribuidor = async (params: HistorialPagosDistribuidorParams): Promise<PagoDistribuidorHistorialDto[]> => {
    const queryParams: any = { ...params };
    // Asegurar que los nombres de parámetros coincidan con el backend
    if (params.idUsuarioModificador) queryParams.idUsuarioModifico = params.idUsuarioModificador;
    delete queryParams.idUsuarioModificador;

    const response = await apiClient.get<PagoDistribuidorHistorialDto[]>('/auditoria/pagos-distribuidores', { params: queryParams });
    return response.data;
};

const getHistorialNotasCD = async (params: HistorialNotasCDParams): Promise<NotaCreditoDebitoHistorialDto[]> => {
    const queryParams: any = { ...params };
    if (params.idUsuarioModificador) queryParams.idUsuarioModifico = params.idUsuarioModificador;
    delete queryParams.idUsuarioModificador;

    const response = await apiClient.get<NotaCreditoDebitoHistorialDto[]>('/auditoria/notas-credito-debito', { params: queryParams });
    return response.data;
};

const getHistorialEntradasSalidasDist = async (params: HistorialEntradaSalidaDistParams): Promise<EntradaSalidaDistHistorialDto[]> => {
    const queryParams: any = { ...params };
    if (params.idUsuarioModificador) queryParams.idUsuarioModifico = params.idUsuarioModificador;
    delete queryParams.idUsuarioModificador;

    const response = await apiClient.get<EntradaSalidaDistHistorialDto[]>('/auditoria/entradas-salidas-dist', { params: queryParams });
    return response.data;
};

const getHistorialEntradasSalidasCanilla = async (params: HistorialEntradaSalidaCanillaParams): Promise<EntradaSalidaCanillaHistorialDto[]> => {
    const queryParams: any = { ...params };
    if (params.idUsuarioModificador) queryParams.idUsuarioModifico = params.idUsuarioModificador;
    delete queryParams.idUsuarioModificador;

    const response = await apiClient.get<EntradaSalidaCanillaHistorialDto[]>('/auditoria/entradas-salidas-canilla', { params: queryParams });
    return response.data;
};

const getHistorialNovedadesCanilla = async (params: HistorialNovedadesCanillaParams): Promise<NovedadCanillaHistorialDto[]> => {
    const queryParams: any = { ...params };
    if (params.idUsuarioModificador) queryParams.idUsuarioModifico = params.idUsuarioModificador;
    delete queryParams.idUsuarioModificador;

    const response = await apiClient.get<NovedadCanillaHistorialDto[]>('/auditoria/novedades-canilla', { params: queryParams });
    return response.data;
};

const getHistorialAjustesSaldo = async (params: HistorialAjustesSaldoParams): Promise<SaldoAjusteHistorialDto[]> => {
    const queryParams: any = { ...params };
    if (params.idUsuarioModificador) queryParams.idUsuarioModifico = params.idUsuarioModificador;
    delete queryParams.idUsuarioModificador;
    // Los otros filtros (destino, idDestino, idEmpresa) ya tienen los nombres correctos

    const response = await apiClient.get<SaldoAjusteHistorialDto[]>('/auditoria/ajustes-saldo', { params: queryParams });
    return response.data;
};

const getHistorialTiposPago = async (params: HistorialTiposPagoParams): Promise<TipoPagoHistorialDto[]> => {
    const queryParams: any = { ...params };
    if (params.idUsuarioModificador) queryParams.idUsuarioModifico = params.idUsuarioModificador;
    delete queryParams.idUsuarioModificador;

    const response = await apiClient.get<TipoPagoHistorialDto[]>('/auditoria/tipos-pago', { params: queryParams });
    return response.data;
};

const getHistorialCanillitasMaestro = async (params: HistorialCanillitasMaestroParams): Promise<CanillaHistorialDto[]> => {
    const queryParams: any = { ...params };
    if (params.idUsuarioModificador) queryParams.idUsuarioModifico = params.idUsuarioModificador;
    delete queryParams.idUsuarioModificador;

    const response = await apiClient.get<CanillaHistorialDto[]>('/auditoria/canillitas-maestro', { params: queryParams });
    return response.data;
};

const getHistorialDistribuidoresMaestro = async (params: HistorialDistribuidoresMaestroParams): Promise<DistribuidorHistorialDto[]> => {
    const queryParams: any = { ...params };
    if (params.idUsuarioModificador) queryParams.idUsuarioModifico = params.idUsuarioModificador;
    delete queryParams.idUsuarioModificador;

    const response = await apiClient.get<DistribuidorHistorialDto[]>('/auditoria/distribuidores-maestro', { params: queryParams });
    return response.data;
};

const getHistorialEmpresasMaestro = async (params: HistorialEmpresasMaestroParams): Promise<EmpresaHistorialDto[]> => {
    const queryParams: any = { ...params };
    if (params.idUsuarioModificador) queryParams.idUsuarioModifico = params.idUsuarioModificador;
    delete queryParams.idUsuarioModificador;

    const response = await apiClient.get<EmpresaHistorialDto[]>('/auditoria/empresas-maestro', { params: queryParams });
    return response.data;
};

const getHistorialZonasMaestro = async (params: HistorialZonasMaestroParams): Promise<ZonaHistorialDto[]> => {
    const queryParams: any = { ...params };
    if (params.idUsuarioModificador) queryParams.idUsuarioModifico = params.idUsuarioModificador;
    delete queryParams.idUsuarioModificador;

    const response = await apiClient.get<ZonaHistorialDto[]>('/auditoria/zonas-maestro', { params: queryParams });
    return response.data;
};

const getHistorialOtrosDestinosMaestro = async (params: HistorialOtrosDestinosMaestroParams): Promise<OtroDestinoHistorialDto[]> => {
    const queryParams: any = { ...params };
    if (params.idUsuarioModificador) queryParams.idUsuarioModifico = params.idUsuarioModificador;
    delete queryParams.idUsuarioModificador;

    const response = await apiClient.get<OtroDestinoHistorialDto[]>('/auditoria/otros-destinos-maestro', { params: queryParams });
    return response.data;
};

const getHistorialPublicacionesMaestro = async (params: HistorialPublicacionesMaestroParams): Promise<PublicacionHistorialDto[]> => {
    const queryParams: any = { ...params };
    if (params.idUsuarioModificador) queryParams.idUsuarioModifico = params.idUsuarioModificador;
    delete queryParams.idUsuarioModificador;

    const response = await apiClient.get<PublicacionHistorialDto[]>('/auditoria/publicaciones-maestro', { params: queryParams });
    return response.data;
};

const getHistorialPubliSeccionesMaestro = async (params: HistorialPubliSeccionesMaestroParams): Promise<PubliSeccionHistorialDto[]> => {
    const queryParams: any = { ...params };
    if (params.idUsuarioModificador) queryParams.idUsuarioModifico = params.idUsuarioModificador;
    delete queryParams.idUsuarioModificador;

    // Pasar los nuevos filtros si están presentes
    if (params.idPublicacionAfectada) queryParams.idPublicacionAfectada = params.idPublicacionAfectada;


    const response = await apiClient.get<PubliSeccionHistorialDto[]>('/auditoria/publi-secciones-maestro', { params: queryParams });
    return response.data;
};

const getHistorialPreciosMaestro = async (params: HistorialPreciosMaestroParams): Promise<PrecioHistorialDto[]> => {
    const queryParams: any = { ...params };
    if (params.idUsuarioModificador) queryParams.idUsuarioModifico = params.idUsuarioModificador;
    delete queryParams.idUsuarioModificador;
    if (params.idPublicacionAfectada) queryParams.idPublicacionAfectada = params.idPublicacionAfectada;


    const response = await apiClient.get<PrecioHistorialDto[]>('/auditoria/precios-publicacion-maestro', { params: queryParams });
    return response.data;
};

const getHistorialRecargosZonaMaestro = async (params: HistorialRecargosZonaMaestroParams): Promise<RecargoZonaHistorialDto[]> => {
    const queryParams: any = { ...params };
    if (params.idUsuarioModificador) queryParams.idUsuarioModifico = params.idUsuarioModificador;
    delete queryParams.idUsuarioModificador;
    if (params.idPublicacionAfectada) queryParams.idPublicacionAfectada = params.idPublicacionAfectada;
    if (params.idZonaAfectada) queryParams.idZonaAfectada = params.idZonaAfectada;


    const response = await apiClient.get<RecargoZonaHistorialDto[]>('/auditoria/recargos-zona-maestro', { params: queryParams });
    return response.data;
};

const getHistorialPorcPagoDistMaestro = async (params: HistorialPorcPagoDistMaestroParams): Promise<PorcPagoHistorialDto[]> => {
    const queryParams: any = { ...params };
    if (params.idUsuarioModificador) queryParams.idUsuarioModifico = params.idUsuarioModificador;
    delete queryParams.idUsuarioModificador;
    if (params.idPublicacionAfectada) queryParams.idPublicacionAfectada = params.idPublicacionAfectada;
    if (params.idDistribuidorAfectado) queryParams.idDistribuidorAfectado = params.idDistribuidorAfectado;


    const response = await apiClient.get<PorcPagoHistorialDto[]>('/auditoria/porc-pago-dist-maestro', { params: queryParams });
    return response.data;
};

const getHistorialPorcMonCanillaMaestro = async (params: HistorialPorcMonCanillaMaestroParams): Promise<PorcMonCanillaHistorialDto[]> => {
    const queryParams: any = { ...params };
    if (params.idUsuarioModificador) queryParams.idUsuarioModifico = params.idUsuarioModificador;
    delete queryParams.idUsuarioModificador;
    if (params.idPublicacionAfectada) queryParams.idPublicacionAfectada = params.idPublicacionAfectada;
    if (params.idCanillaAfectada) queryParams.idCanillaAfectada = params.idCanillaAfectada;

    const response = await apiClient.get<PorcMonCanillaHistorialDto[]>('/auditoria/porc-mon-canilla-maestro', { params: queryParams });
    return response.data;
};

const getHistorialControlDevoluciones = async (params: HistorialControlDevolucionesParams): Promise<ControlDevolucionesHistorialDto[]> => {
    const queryParams: any = { ...params };
    if (params.idUsuarioModificador) queryParams.idUsuarioModifico = params.idUsuarioModificador;
    delete queryParams.idUsuarioModificador;
    if (params.idEmpresaAfectada) queryParams.idEmpresaAfectada = params.idEmpresaAfectada;
    if (params.fechaAfectada) queryParams.fechaAfectada = params.fechaAfectada;


    const response = await apiClient.get<ControlDevolucionesHistorialDto[]>('/auditoria/control-devoluciones-maestro', { params: queryParams });
    return response.data;
};

const getHistorialTiposBobinaMaestro = async (params: HistorialTiposBobinaMaestroParams): Promise<TipoBobinaHistorialDto[]> => {
    const queryParams: any = { ...params };
    if (params.idUsuarioModificador) queryParams.idUsuarioModifico = params.idUsuarioModificador;
    delete queryParams.idUsuarioModificador;

    const response = await apiClient.get<TipoBobinaHistorialDto[]>('/auditoria/tipos-bobina-maestro', { params: queryParams });
    return response.data;
};

const getHistorialEstadosBobinaMaestro = async (params: HistorialEstadosBobinaMaestroParams): Promise<EstadoBobinaHistorialDto[]> => {
    const queryParams: any = { ...params };
    if (params.idUsuarioModificador) queryParams.idUsuarioModifico = params.idUsuarioModificador;
    delete queryParams.idUsuarioModificador;

    const response = await apiClient.get<EstadoBobinaHistorialDto[]>('/auditoria/estados-bobina-maestro', { params: queryParams });
    return response.data;
};

const getHistorialPlantasMaestro = async (params: HistorialPlantasMaestroParams): Promise<PlantaHistorialDto[]> => {
    const queryParams: any = { ...params };
    if (params.idUsuarioModificador) queryParams.idUsuarioModifico = params.idUsuarioModificador;
    delete queryParams.idUsuarioModificador;

    const response = await apiClient.get<PlantaHistorialDto[]>('/auditoria/plantas-impresion-maestro', { params: queryParams });
    return response.data;
};

const getHistorialStockBobinas = async (params: HistorialStockBobinasParams): Promise<StockBobinaHistorialDto[]> => {
    const queryParams: any = { ...params };
    const response = await apiClient.get<StockBobinaHistorialDto[]>('/auditoria/stock-bobinas-maestro', { params: queryParams });
    return response.data;
};

const getHistorialRegTiradas = async (params: HistorialRegTiradasParams): Promise<RegTiradaHistorialDto[]> => {
    const queryParams: any = { ...params };
    const response = await apiClient.get<RegTiradaHistorialDto[]>('/auditoria/reg-tiradas-maestro', { params: queryParams });
    return response.data;
};

const getHistorialRegSeccionesTirada = async (params: HistorialRegSeccionesTiradaParams): Promise<RegSeccionTiradaHistorialDto[]> => {
    const queryParams: any = { ...params };
    // ... (mapeo de idUsuarioModificador)
    const response = await apiClient.get<RegSeccionTiradaHistorialDto[]>('/auditoria/reg-secciones-tirada-maestro', { params: queryParams });
    return response.data;
};

const getHistorialPerfilesMaestro = async (params: HistorialPerfilesMaestroParams): Promise<PerfilHistorialDto[]> => {
    const queryParams: any = { ...params };
    if (params.idUsuarioModificador) queryParams.idUsuarioModifico = params.idUsuarioModificador;
    delete queryParams.idUsuarioModificador;

    const response = await apiClient.get<PerfilHistorialDto[]>('/auditoria/perfiles-maestro', { params: queryParams });
    return response.data;
};

const getHistorialPermisosMaestro = async (params: HistorialPermisosMaestroParams): Promise<PermisoHistorialDto[]> => {
    const queryParams: any = { ...params };
    if (params.idUsuarioModificador) queryParams.idUsuarioModifico = params.idUsuarioModificador;
    delete queryParams.idUsuarioModificador;

    const response = await apiClient.get<PermisoHistorialDto[]>('/auditoria/permisos-maestro', { params: queryParams });
    return response.data;
};

const getHistorialPermisosPerfiles = async (params: HistorialPermisosPerfilesParams): Promise<PermisosPerfilesHistorialDto[]> => {
    const queryParams: any = { ...params };
    // ... mapeo de idUsuarioModificador ...
    const response = await apiClient.get<PermisosPerfilesHistorialDto[]>('/auditoria/permisos-perfiles-historial', { params: queryParams });
    return response.data;
};

const getHistorialCambiosParada = async (params: HistorialCambiosParadaParams): Promise<CambioParadaHistorialDto[]> => {
    const queryParams: any = { ...params };
    if (params.idUsuarioModificador) queryParams.idUsuarioModifico = params.idUsuarioModificador;
    delete queryParams.idUsuarioModificador;

    const response = await apiClient.get<CambioParadaHistorialDto[]>('/auditoria/cambios-parada-canilla', { params: queryParams });
    return response.data;
};

const getHistorialCierresCC = async (params: HistorialCierresCCParams): Promise<CierreCuentaCorrienteHistorialDto[]> => {
    const queryParams: any = { ...params };
    if (params.idUsuarioModificador) queryParams.idUsuarioModifico = params.idUsuarioModificador;
    delete queryParams.idUsuarioModificador;

    const response = await apiClient.get<CierreCuentaCorrienteHistorialDto[]>('/auditoria/cierres-cuenta-corriente', { params: queryParams });
    return response.data;
};

const auditoriaService = {
    getHistorialUsuarios,
    getHistorialPagosDistribuidor,
    getHistorialNotasCD,
    getHistorialEntradasSalidasDist,
    getHistorialEntradasSalidasCanilla,
    getHistorialNovedadesCanilla,
    getHistorialAjustesSaldo,
    getHistorialTiposPago,
    getHistorialCanillitasMaestro,
    getHistorialDistribuidoresMaestro,
    getHistorialEmpresasMaestro,
    getHistorialZonasMaestro,
    getHistorialOtrosDestinosMaestro,
    getHistorialPublicacionesMaestro,
    getHistorialPubliSeccionesMaestro,
    getHistorialPreciosMaestro,
    getHistorialRecargosZonaMaestro,
    getHistorialPorcPagoDistMaestro,
    getHistorialPorcMonCanillaMaestro,
    getHistorialControlDevoluciones,
    getHistorialTiposBobinaMaestro,
    getHistorialEstadosBobinaMaestro,
    getHistorialPlantasMaestro,
    getHistorialStockBobinas,
    getHistorialRegTiradas,
    getHistorialRegSeccionesTirada,
    getHistorialPerfilesMaestro,
    getHistorialPermisosMaestro,
    getHistorialPermisosPerfiles,
    getHistorialCambiosParada,
    getHistorialCierresCC,
};

export default auditoriaService;