// http://127.0.0.1:8000/api/v1/contact/create/

export default defineEventHandler(async (event) => {
  const config = useRuntimeConfig();
  const apiUrl = config.public.BASE_API_URL || 'http://127.0.0.1:8000';

  // Backend credentials
  const BACKEND_EMAIL = config.backendEmail || 'admin@example.com';
  const BACKEND_PASSWORD = config.backendPassword || 'admin123';

  try {
    // Form verilerini al
    const body = await readBody(event);

    // Gerekli alanları kontrol et
    const { name, email, subject, message } = body;

    if (!name || !email || !subject || !message) {
      throw createError({
        statusCode: 400,
        statusMessage: 'Tüm alanlar zorunludur'
      });
    }

    // Client IP adresini al
    const ip = getRequestIP(event, { xForwardedFor: true }) || 'unknown';

    // 1. Önce backend'e login ol
    let loginResponse;
    try {
      loginResponse = await $fetch(`${apiUrl}/api/v1/auth/jwt/create/`, {
        method: 'POST',
        headers: {
          'Content-Type': 'application/json',
        },
        body: {
          email: BACKEND_EMAIL,
          password: BACKEND_PASSWORD
        }
      });
    } catch (loginError: any) {
      // Detaylı hatayı sadece console'da göster
      console.error('Backend login error:', {
        status: loginError?.status,
        statusText: loginError?.statusText,
        message: loginError?.message
      });

      throw createError({
        statusCode: 503,
        statusMessage: 'Servis geçici olarak kullanılamıyor. Lütfen daha sonra tekrar deneyin.'
      });
    }

    // @ts-expect-error - API response type
    const accessToken = loginResponse?.access;

    if (!accessToken) {
      console.error('No access token received from backend');
      throw createError({
        statusCode: 503,
        statusMessage: 'Servis geçici olarak kullanılamıyor. Lütfen daha sonra tekrar deneyin.'
      });
    }

    // 2. Token ile contact form'u post et (IP adresi ile birlikte)
    let contactResponse;
    try {
      contactResponse = await $fetch(`${apiUrl}/api/v1/contact/create/`, {
        method: 'POST',
        headers: {
          'Content-Type': 'application/json',
          'Authorization': `Bearer ${accessToken}`
        },
        body: {
          name,
          email,
          ip,
          subject,
          message
        }
      });
    } catch (contactError: any) {
      // Detaylı hatayı sadece console'da göster
      console.error('Contact form submission error:', {
        status: contactError?.status,
        statusText: contactError?.statusText,
        message: contactError?.message
      });

      throw createError({
        statusCode: 500,
        statusMessage: 'Mesaj gönderilemedi. Lütfen daha sonra tekrar deneyin.'
      });
    }

    return {
      success: true,
      data: contactResponse,
      message: 'Mesajınız başarıyla gönderildi'
    };

  } catch (error: any) {
    // Eğer zaten createError ile oluşturulmuş bir hata ise, direkt fırlat
    if (error.statusCode) {
      throw error;
    }

    // Beklenmeyen hatalar için
    console.error('Unexpected contact form error:', error);

    throw createError({
      statusCode: 500,
      statusMessage: 'Bir hata oluştu. Lütfen daha sonra tekrar deneyin.'
    });
  }
});



