/**
 * API route proxy para obtener las compañías del usuario
 */
import { json } from '@sveltejs/kit';
import type { RequestHandler } from './$types';
import { getAccessTokenFromCookies } from '$lib/server/access-token-cookie';

export const GET: RequestHandler = async ({ cookies, fetch }) => {
	const token = getAccessTokenFromCookies(cookies);
	
	if (!token) {
		// Limpiar cualquier cookie de compañía si no hay autenticación
		cookies.delete('active_company_id', { path: '/' });
		return json({ error: 'No authenticated' }, { status: 401 });
	}

	// Configurar la URL de la API
	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 {
		const response = await fetch(`${baseUrl}v1/auth/my-companies`, {
			headers: {
				'Authorization': `Bearer ${token}`,
				'Content-Type': 'application/json'
			}
		});

		if (!response.ok) {
			// Si la autenticación falló, limpiar la cookie de compañía
			if (response.status === 401) {
				cookies.delete('active_company_id', { path: '/' });
			}
			return json({ error: 'Failed to fetch companies' }, { status: response.status });
		}		
		const companies = await response.json();
		return json(companies);
	} catch (error) {
		console.error('Error fetching companies:', error);		
		return json({ error: 'Internal server error' }, { status: 500 });
	}
};
