import { NextResponse } from 'next/server'
import { AzureOpenAI } from 'openai'

export const runtime = 'nodejs'

// Initialize Azure OpenAI client
const client = new AzureOpenAI({
  apiKey: process.env.AZURE_OPENAI_KEY || '',
  endpoint: process.env.AZURE_OPENAI_ENDPOINT || '',
  apiVersion: process.env.AZURE_OPENAI_API_VERSION || '2024-05-01-preview',
  deployment: 'gpt-4o' // Using GPT-4 for better quality prayers
})

export async function POST(request: Request) {
  try {
    const { prompt, category, locale } = await request.json()

    if (!prompt?.trim()) {
      return NextResponse.json(
        { error: 'Prompt is required' },
        { status: 400 }
      )
    }

    // Call Azure OpenAI to generate a prayer

    const isRomanian = locale === 'ro'

    // Create system prompt for the AI
    const systemPrompt = isRomanian
      ? `Ești un asistent creștin care ajută oamenii să formuleze rugăciuni sincere și biblice.
         Creează rugăciuni care sunt:
         - Respectuoase și reverenți față de Dumnezeu
         - Bazate pe principii și învățături biblice
         - Personale și pline de compasiune
         - Încurajatoare și pline de speranță
         - Scurte și concise (maxim 150 de cuvinte)
         - Potrivite pentru categoria: ${category}
         - În limba română`
      : `You are a Christian assistant helping people formulate sincere and biblical prayers.
         Create prayers that are:
         - Respectful and reverent toward God
         - Based on biblical principles and teachings
         - Personal and compassionate
         - Encouraging and hopeful
         - Brief and concise (maximum 150 words)
         - Appropriate for the category: ${category}
         - In English`

    // Create user prompt
    const userPrompt = isRomanian
      ? `Te rog să creezi o rugăciune sinceră pentru următoarea situație: ${prompt}
         Categoria: ${category}
         Răspunde în format JSON cu structura: {"title": "titlul rugăciunii", "prayer": "textul rugăciunii"}`
      : `Please create a sincere prayer for the following situation: ${prompt}
         Category: ${category}
         Respond in JSON format with structure: {"title": "prayer title", "prayer": "prayer text"}`

    try {
      // Call Azure OpenAI
      const completion = await client.chat.completions.create({
        model: 'gpt-4o',
        messages: [
          { role: 'system', content: systemPrompt },
          { role: 'user', content: userPrompt }
        ],
        temperature: 0.7,
        max_tokens: 500,
        response_format: { type: 'json_object' }
      })

      const responseText = completion.choices[0]?.message?.content || '{}'
      const prayerData = JSON.parse(responseText)

      return NextResponse.json({
        title: prayerData.title || (isRomanian ? 'Rugăciune generată' : 'Generated Prayer'),
        prayer: prayerData.prayer || (isRomanian ? 'Nu s-a putut genera rugăciunea.' : 'Could not generate prayer.'),
        category,
        generated: true
      })
    } catch (aiError) {
      console.error('Error calling Azure OpenAI:', aiError)

      // Fallback to template-based generation
      const categoryTemplates = {
        personal: isRomanian
          ? { title: 'Rugăciune personală', prayer: `Doamne, îți aduc înaintea Ta această cerere personală: ${prompt}. Te rog să mă îndrumi și să-mi dai pace. În numele lui Isus, Amin.` }
          : { title: 'Personal Prayer', prayer: `Lord, I bring before You this personal request: ${prompt}. Please guide me and grant me peace. In Jesus' name, Amen.` },
        family: isRomanian
          ? { title: 'Rugăciune pentru familie', prayer: `Tată ceresc, îți încredințez familia mea. ${prompt}. Binecuvântează-ne și păstrează-ne uniți în dragoste. În numele lui Isus, Amin.` }
          : { title: 'Family Prayer', prayer: `Heavenly Father, I entrust my family to You. ${prompt}. Bless us and keep us united in love. In Jesus' name, Amen.` },
        health: isRomanian
          ? { title: 'Rugăciune pentru sănătate', prayer: `Mare Vindecător, vin la Tine cu această nevoie de sănătate: ${prompt}. Te rog pentru vindecare și restaurare. În numele lui Isus, Amin.` }
          : { title: 'Health Prayer', prayer: `Great Healer, I come to You with this health need: ${prompt}. I pray for healing and restoration. In Jesus' name, Amen.` },
        work: isRomanian
          ? { title: 'Rugăciune pentru muncă', prayer: `Doamne, îți aduc situația mea profesională: ${prompt}. Îndrumă-mă și binecuvântează munca mâinilor mele. În numele lui Isus, Amin.` }
          : { title: 'Work Prayer', prayer: `Lord, I bring my professional situation: ${prompt}. Guide me and bless the work of my hands. In Jesus' name, Amen.` },
        ministry: isRomanian
          ? { title: 'Rugăciune pentru lucrare', prayer: `Doamne, îți dedic această lucrare: ${prompt}. Folosește-mă pentru gloria Ta. În numele lui Isus, Amin.` }
          : { title: 'Ministry Prayer', prayer: `Lord, I dedicate this ministry to You: ${prompt}. Use me for Your glory. In Jesus' name, Amen.` },
        world: isRomanian
          ? { title: 'Rugăciune pentru lume', prayer: `Domn Suveran, mă rog pentru această situație globală: ${prompt}. Fie voia Ta pe pământ. În numele lui Isus, Amin.` }
          : { title: 'World Prayer', prayer: `Sovereign Lord, I pray for this global situation: ${prompt}. May Your will be done on earth. In Jesus' name, Amen.` }
      }

      const template = categoryTemplates[category as keyof typeof categoryTemplates] || categoryTemplates.personal

      return NextResponse.json({
        title: template.title,
        prayer: template.prayer,
        category,
        generated: true
      })
    }

  } catch (error) {
    console.error('Error generating prayer:', error)
    return NextResponse.json(
      { error: 'Failed to generate prayer' },
      { status: 500 }
    )
  }
}
