import apiClient from '../apiClient';
import type { EstadoBobinaDto } from '../../models/dtos/Impresion/EstadoBobinaDto';
import type { CreateEstadoBobinaDto } from '../../models/dtos/Impresion/CreateEstadoBobinaDto';
import type { UpdateEstadoBobinaDto } from '../../models/dtos/Impresion/UpdateEstadoBobinaDto';
import type { EstadoBobinaDropdownDto } from '../../models/dtos/Impresion/EstadoBobinaDropdownDto';

const getAllEstadosBobina = async (denominacionFilter?: string): Promise<EstadoBobinaDto[]> => {
    const params: Record<string, string> = {};
    if (denominacionFilter) params.denominacion = denominacionFilter;

    const response = await apiClient.get<EstadoBobinaDto[]>('/estadosbobina', { params });
    return response.data;
};

const getAllDropdownEstadosBobina = async (): Promise<EstadoBobinaDropdownDto[]> => {
    const response = await apiClient.get<EstadoBobinaDropdownDto[]>('/estadosbobina/dropdown');
    return response.data;
};

const getEstadoBobinaById = async (id: number): Promise<EstadoBobinaDto> => {
    const response = await apiClient.get<EstadoBobinaDto>(`/estadosbobina/${id}`);
    return response.data;
};

const createEstadoBobina = async (data: CreateEstadoBobinaDto): Promise<EstadoBobinaDto> => {
    const response = await apiClient.post<EstadoBobinaDto>('/estadosbobina', data);
    return response.data;
};

const updateEstadoBobina = async (id: number, data: UpdateEstadoBobinaDto): Promise<void> => {
    await apiClient.put(`/estadosbobina/${id}`, data);
};

const deleteEstadoBobina = async (id: number): Promise<void> => {
    await apiClient.delete(`/estadosbobina/${id}`);
};

const estadoBobinaService = {
    getAllEstadosBobina,
    getAllDropdownEstadosBobina,
    getEstadoBobinaById,
    createEstadoBobina,
    updateEstadoBobina,
    deleteEstadoBobina,
};

export default estadoBobinaService;