import { NextRequest, NextResponse } from "next/server";
import { createSbServer } from "@/lib/supabaseServer";

export async function PATCH(
  request: NextRequest,
  { params }: { params: { id: string } }
) {
  const sb = createSbServer();

  try {
    // Vérification de l'authentification
    const { data: { user }, error: authError } = await sb.auth.getUser();
    if (authError || !user) {
      return NextResponse.json({ error: "Non authentifié" }, { status: 401 });
    }

    // Vérification des droits staff
    const { data: staffUser } = await sb
      .from("staff_users")
      .select("is_staff")
      .eq("user_id", user.id)
      .maybeSingle();

    if (!staffUser?.is_staff) {
      return NextResponse.json({ error: "Accès refusé - réservé au staff" }, { status: 403 });
    }

    // Récupérer le contrat actuel pour vérifier l'état
    const { data: currentContract, error: fetchError } = await sb
      .from("cddu_contracts")
      .select("contrat_signe, contrat_signe_par_employeur")
      .eq("id", params.id)
      .single();

    if (fetchError) {
      return NextResponse.json({ error: "Contrat non trouvé" }, { status: 404 });
    }

    // Vérifier si les deux colonnes sont déjà à "Non"
    if (currentContract.contrat_signe === "Non" && currentContract.contrat_signe_par_employeur === "Non") {
      return NextResponse.json({ 
        error: "Le contrat est déjà marqué comme non signé par les deux parties" 
      }, { status: 400 });
    }

    // Mettre à jour les colonnes pour marquer comme non signé
    const { error: updateError } = await sb
      .from("cddu_contracts")
      .update({
        contrat_signe: "Non",
        contrat_signe_par_employeur: "Non",
        updated_at: new Date().toISOString()
      })
      .eq("id", params.id);

    if (updateError) {
      console.error("Erreur lors de la mise à jour:", updateError);
      return NextResponse.json({ 
        error: "Erreur lors de la mise à jour du contrat" 
      }, { status: 500 });
    }

    return NextResponse.json({ 
      success: true,
      message: "Contrat marqué comme non signé avec succès"
    });

  } catch (error) {
    console.error("Erreur dans mark-unsigned API:", error);
    return NextResponse.json({ 
      error: "Erreur interne du serveur" 
    }, { status: 500 });
  }
}