import type { APIRoute } from 'astro';

const POCKETBASE_URL = import.meta.env.POCKETBASE_URL || 'http://localhost:8090';

// Функция логирования с временной меткой
function log(message: string, data?: unknown) {
  const timestamp = new Date().toISOString();
  console.log(`[RESEND][${timestamp}] ${message}`, data ? JSON.stringify(data, null, 2) : '');
}

function logError(message: string, error?: unknown) {
  const timestamp = new Date().toISOString();
  console.error(`[RESEND][${timestamp}] ERROR: ${message}`, error);
}

export const POST: APIRoute = async ({ request }) => {
  const requestId = crypto.randomUUID();
  log(`=== Начало запроса повторной отправки #${requestId} ===`);
  
  try {
    const body = await request.json();
    const { email } = body;

    log(`Получен email для отправки: ${email}`);

    if (!email) {
      logError(`Валидация не пройдена #${requestId}: email не указан`);
      return new Response(
        JSON.stringify({ error: 'Email обязателен' }),
        { status: 400, headers: { 'Content-Type': 'application/json' } }
      );
    }

    // Отправка повторного письма для подтверждения email
    log('Запрос в PocketBase для отправки письма...');
    
    const response = await fetch(`${POCKETBASE_URL}/api/collections/users/request-verification`, {
      method: 'POST',
      headers: { 'Content-Type': 'application/json' },
      body: JSON.stringify({ email }),
    });

    log(`Ответ PocketBase: статус ${response.status}`);

    const data = await response.json();
    log('Ответ PocketBase (данные):', data);

    if (!response.ok) {
      logError(`Ошибка PocketBase #${requestId}:`, data);
      return new Response(
        JSON.stringify({ 
          error: data.message || 'Ошибка при отправке письма' 
        }),
        { status: response.status, headers: { 'Content-Type': 'application/json' } }
      );
    }

    log(`✅ Письмо отправлено #${requestId} на ${email}`);

    return new Response(
      JSON.stringify({ 
        success: true,
        message: 'Письмо с подтверждением отправлено' 
      }),
      { status: 200, headers: { 'Content-Type': 'application/json' } }
    );

  } catch (error) {
    logError(`Исключение #${requestId}:`, error);
    return new Response(
      JSON.stringify({ 
        error: 'Внутренняя ошибка сервера' 
      }),
      { status: 500, headers: { 'Content-Type': 'application/json' } }
    );
  }
};
