import { NextRequest, NextResponse } from 'next/server';
import { generateAutoDeclarationToken } from '@/lib/autoDeclarationTokenService';

export async function POST(request: NextRequest) {
  try {
    const { salarie_id, send_email = true } = await request.json();

    if (!salarie_id) {
      return NextResponse.json(
        { error: 'ID du salarié requis' },
        { status: 400 }
      );
    }

    const result = await generateAutoDeclarationToken({
      salarie_id,
      send_email
    });

    if (!result.success) {
      const status = result.error === 'Salarié non trouvé' ? 404 : 
                     result.error === 'Email du salarié requis' ? 400 : 500;
      return NextResponse.json(
        { error: result.error },
        { status }
      );
    }

    // Si le token a été créé mais que l'email n'a pas pu être envoyé
    if (result.email_sent === false && result.error) {
      return NextResponse.json(
        { error: result.error },
        { status: 207 }
      );
    }

    return NextResponse.json({
      success: true,
      message: 'Token généré et invitation envoyée avec succès',
      token: result.token, // Pour debug uniquement, retirer en production
      email_sent: result.email_sent,
      messageId: result.messageId
    });

  } catch (error) {
    console.error('Erreur génération token:', error);
    return NextResponse.json(
      { error: 'Erreur serveur' },
      { status: 500 }
    );
  }
}