// app/api/staff/contracts/send-esign-notification/route.ts
import { NextRequest, NextResponse } from 'next/server';
import { createSbServiceRole } from '@/lib/supabaseServer';
import { sendUniversalEmailV2, EmailDataV2 } from '@/lib/emailTemplateService';

export async function POST(request: NextRequest) {
  console.log('=== Send E-Sign Notification API ===');
  
  try {
    const supabase = createSbServiceRole();
    const { organizationId, contractCount } = await request.json();

    if (!organizationId || !contractCount) {
      return NextResponse.json(
        { error: 'organizationId et contractCount sont requis' },
        { status: 400 }
      );
    }

    console.log(`📧 Envoi de notification pour ${contractCount} contrats à l'organisation ${organizationId}`);

    // Récupérer les détails de l'organisation
    const { data: orgDetails, error: orgError } = await supabase
      .from('organization_details')
      .select('*')
      .eq('org_id', organizationId)
      .maybeSingle();

    if (orgError || !orgDetails) {
      console.error('❌ Erreur lors de la récupération de l\'organisation:', orgError);
      return NextResponse.json(
        { error: 'Organisation non trouvée' },
        { status: 404 }
      );
    }

    // Récupérer le nom de l'organisation
    const { data: org } = await supabase
      .from('organizations')
      .select('name')
      .eq('id', organizationId)
      .maybeSingle();

    const organizationName = org?.name || orgDetails.structure || 'Votre organisation';
    const emailSignature = orgDetails.email_signature;

    if (!emailSignature) {
      console.error('❌ Email de signature non configuré pour cette organisation');
      return NextResponse.json(
        { error: 'Email de signature non configuré' },
        { status: 400 }
      );
    }

    // Préparer les données de l'email
    const firstName = orgDetails.prenom_signataire || "";
    const employerCode = orgDetails.code_employeur || "";

    const emailData: EmailDataV2 = {
      firstName: firstName,
      organizationName: organizationName,
      employerCode: employerCode,
      contractCount: contractCount,
      status: 'En attente de signature',
      ctaUrl: 'https://paie.odentas.fr/signatures-electroniques',
      handlerName: 'Renaud BREVIERE-ABRAHAM',
      organizationId: organizationId // Ajouter pour le logging
    };

    console.log('📤 Envoi de l\'email de notification client...', {
      to: emailSignature,
      contractCount
    });

    // Envoyer l'email au client (email_signature uniquement, sans CC)
    await sendUniversalEmailV2({
      type: 'bulk-signature-notification',
      toEmail: emailSignature,
      data: emailData,
    });

    console.log('✅ Email de notification envoyé avec succès');

    return NextResponse.json({
      success: true,
      message: 'Notification envoyée avec succès',
      details: {
        to: emailSignature,
        contractCount
      }
    });

  } catch (error) {
    console.error('❌ Erreur lors de l\'envoi de la notification:', error);
    return NextResponse.json(
      { 
        error: 'Erreur lors de l\'envoi de la notification',
        details: error instanceof Error ? error.message : 'Erreur inconnue'
      },
      { status: 500 }
    );
  }
}
