/**
 * API Client para States
 * Gestiona las operaciones CRUD para los estados
 */
import { api } from '$lib/api';

export interface State {
	m3_key: string;
	description: string;
	mex_key?: string | null;
	ame_key?: string | null;
}

export interface StateListResponse {
	items: State[];
	total: number;
	page: number;
	page_size: number;
}

export interface CreateStateData {
	m3_key: string;
	description: string;
	mex_key?: string | null;
	ame_key?: string | null;
}

export interface UpdateStateData {
	m3_key?: string;
	description?: string;
	mex_key?: string | null;
	ame_key?: string | null;
}

/**
 * API para States
 */
export const statesApi = {
    /**
     * Lista todos los estados con paginación
     * @param page - Número de página (por defecto 1)
     * @param pageSize - Tamaño de página (por defecto 50)
     */
    list: (page = 1, pageSize = 50) =>
        api.get<StateListResponse>(
            // CORREGIDO: Añadido '/' antes de '?'
            `/v1/public/reference_data/states/?page=${page}&page_size=${pageSize}`
        ),

    /**
     * Obtiene un estado por m3_key
     * @param m3Key - Clave M3 del estado
     */
    get: (m3Key: string) => 
        // CORREGIDO: Añadido '/' al final
        api.get<State>(`/v1/public/reference_data/states/${m3Key}/`),

    /**
     * Crea un nuevo estado
     * @param data - Datos del estado a crear
     */
    create: (data: CreateStateData) =>
        // CORREGIDO: Añadido '/' al final
        api.post<State>('/v1/public/reference_data/states/', data),

    /**
     * Actualiza un estado existente
     * @param m3Key - Clave M3 del estado a actualizar
     * @param data - Datos a actualizar
     */
    update: (m3Key: string, data: UpdateStateData) =>
        // CORREGIDO: Añadido '/' después de la variable
        api.put<State>(`/v1/public/reference_data/states/${m3Key}/`, data),

    /**
     * Elimina un estado
     * @param m3Key - Clave M3 del estado a eliminar
     */
    delete: (m3Key: string) => 
        // CORREGIDO: Añadido '/' después de la variable
        api.delete(`/v1/public/reference_data/states/${m3Key}/`)
};