import { NextRequest, NextResponse } from 'next/server';
import { resolveStoreIdentifier } from '@/lib/storeHost';

export async function POST(request: NextRequest) {
	const backendUrl = process.env.BACKEND_URL;
	const appToken = process.env.STORE_APP_TOKEN;
	const host = request.headers.get('host') ?? '';
	const subdominio = resolveStoreIdentifier(host) ?? process.env.STORE_SUBDOMINIO_DEV;

	if (!backendUrl || !appToken || !subdominio) {
		return NextResponse.json({ ok: false, issues: ['Tienda no configurada.'] }, { status: 400 });
	}

	let body: unknown;
	try {
		body = await request.json();
	} catch {
		return NextResponse.json({ ok: false, issues: ['Solicitud inválida.'] }, { status: 400 });
	}

	try {
		const res = await fetch(`${backendUrl}/api/v1/store/checkout`, {
			method: 'POST',
			headers: { 'x-app-key': appToken, 'Content-Type': 'application/json' },
			body: JSON.stringify({ ...(body as object), subdominio }),
			signal: AbortSignal.timeout(10000)
		});
		const data = await res.json();
		return NextResponse.json(data, { status: res.ok ? 200 : res.status });
	} catch {
		return NextResponse.json({ ok: false, issues: ['No se pudo conectar con el servidor.'] }, { status: 502 });
	}
}
