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

export async function PATCH(
  req: NextRequest,
  { params }: { params: { id: string } }
) {
  try {
    const { id } = params;
    const body = await req.json();
    
    // Validation des données
    if (typeof body.transfer_done !== "boolean") {
      return NextResponse.json(
        { error: "transfer_done must be a boolean" }, 
        { status: 400 }
      );
    }

    const sb = createSbServer();

    // Vérifier que la payslip existe et que l'utilisateur y a accès
    const { data: existing, error: fetchError } = await sb
      .from("payslips")
      .select("id, contract_id")
      .eq("id", id)
      .single();

    if (fetchError || !existing) {
      return NextResponse.json(
        { error: "payslip_not_found" }, 
        { status: 404 }
      );
    }

    // Mettre à jour le statut transfer_done
    // Si transfer_done passe à true, on enregistre la date actuelle dans transfer_done_at
    // Si transfer_done passe à false, on efface transfer_done_at
    const updateData: any = { 
      transfer_done: body.transfer_done,
      updated_at: new Date().toISOString()
    };
    
    if (body.transfer_done === true) {
      // Virement marqué comme effectué : enregistrer la date
      updateData.transfer_done_at = new Date().toISOString();
    } else if (body.transfer_done === false) {
      // Virement annulé : effacer la date
      updateData.transfer_done_at = null;
    }

    const { data, error } = await sb
      .from("payslips")
      .update(updateData)
      .eq("id", id)
      .select()
      .single();

    if (error) {
      console.error("Error updating payslip:", error);
      return NextResponse.json(
        { error: error.message }, 
        { status: 500 }
      );
    }

    return NextResponse.json(data);
  } catch (err: any) {
    console.error("Server error:", err);
    return NextResponse.json(
      { error: err?.message || "server_error" }, 
      { status: 500 }
    );
  }
}