import apiClient from '../apiClient';
import type { PrecioDto } from '../../models/dtos/Distribucion/PrecioDto';
import type { CreatePrecioDto } from '../../models/dtos/Distribucion/CreatePrecioDto';
import type { UpdatePrecioDto } from '../../models/dtos/Distribucion/UpdatePrecioDto';

// El idPublicacion se pasa en la URL para estos endpoints
const getPreciosPorPublicacion = async (idPublicacion: number): Promise<PrecioDto[]> => {
    const response = await apiClient.get<PrecioDto[]>(`/publicaciones/${idPublicacion}/precios`);
    return response.data;
};

const getPrecioById = async (idPublicacion: number, idPrecio: number): Promise<PrecioDto> => {
    const response = await apiClient.get<PrecioDto>(`/publicaciones/${idPublicacion}/precios/${idPrecio}`);
    return response.data;
};

const createPrecio = async (idPublicacion: number, data: CreatePrecioDto): Promise<PrecioDto> => {
    // Asegurarse que el DTO también contenga el idPublicacion si el backend lo espera en el cuerpo.
    // En nuestro caso, el CreatePrecioDto ya tiene IdPublicacion.
    const response = await apiClient.post<PrecioDto>(`/publicaciones/${idPublicacion}/precios`, data);
    return response.data;
};

const updatePrecio = async (idPublicacion: number, idPrecio: number, data: UpdatePrecioDto): Promise<void> => {
    await apiClient.put(`/publicaciones/${idPublicacion}/precios/${idPrecio}`, data);
};

const deletePrecio = async (idPublicacion: number, idPrecio: number): Promise<void> => {
    await apiClient.delete(`/publicaciones/${idPublicacion}/precios/${idPrecio}`);
};

const precioService = {
    getPreciosPorPublicacion,
    getPrecioById,
    createPrecio,
    updatePrecio,
    deletePrecio,
};

export default precioService;