import { json } from '@sveltejs/kit';
import type { RequestHandler } from './$types';

export const GET: RequestHandler = async ({ fetch, url }) => {
	// Obtener company_id de los parámetros de búsqueda
	const company_id = url.searchParams.get('company_id');
	
	if (!company_id) {
		return json({ error: "El campo 'company_id' es obligatorio." }, { status: 400 });
	}

	// Configurar la URL de la API usando las variables de entorno
	let apiUrl = process.env.INTERNAL_API_URL;
	if (!apiUrl) {
		apiUrl = process.env.VITE_API_URL;
		// Reemplazar 'localhost' con 'backend' para llamadas desde el servidor (SSR)
		apiUrl = apiUrl?.replace('localhost', 'backend').replace('127.0.0.1', 'backend');
	}
	
	// Normalizar la URL
	const baseUrl = apiUrl?.endsWith('/') ? apiUrl : `${apiUrl}/`;

	try {
		// Endpoint de países
		const allCountries: any[] = [];
		let page = 1;
		let hasMore = true;

		while (hasMore) {
			const response = await fetch(
				`${baseUrl}v1/public/reference_data/countries/?company_id=${company_id}&page=${page}&page_size=100`,
				{
					headers: {
						'Content-Type': 'application/json'
					}
				}
			);

			if (!response.ok) {
				console.error('Error fetching countries:', response.status, response.statusText);
				const errorText = await response.text();
				console.error('Error response:', errorText);
				return json({ error: 'Failed to fetch countries' }, { status: response.status });
			}

			const data = await response.json();
			allCountries.push(...(data.items || []));

			// Si hay menos items que el page_size, es la última página
			hasMore = data.items && data.items.length === 100;
			page++;
		}

		return json(allCountries);
	} catch (error) {
		console.error('Error fetching countries:', error);
		return json({ error: 'Internal server error' }, { status: 500 });
	}
};

