import { NextRequest, NextResponse } from "next/server";
import { getServerSession } from "next-auth";
import { authOptions } from "@/app/api/auth/authOptions";
import { prisma } from "@/lib/prisma";
import { writeFile, mkdir } from "fs/promises";
import path from "path";
import { v4 as uuidv4 } from "uuid";

// Désactive la lecture automatique du body
export const config = {
  api: {
    bodyParser: false,
  },
};

export async function GET(req: NextRequest) {
    try {
    const session = await getServerSession(authOptions);
    if (!session?.user) {
      return NextResponse.json({ error: "Accès refusé" }, { status: 403 });
    }

    const { searchParams } = new URL(req.url);
    const managerId = searchParams.get('managerId');

    let whereClause = {};
    
    if (managerId) {
      // Récupérer le ManagerData du manager spécifié
      const managerData = await prisma.managerData.findUnique({
        where: { userId: parseInt(managerId) }
      });
      
      if (managerData) {
        whereClause = { managerDataId: managerData.id };
      }
    }

    const invoices = await prisma.invoice.findMany({
      where: whereClause,
      select: {
        id: true,
        invoiceNumber: true,
        issueDate: true,
        dueDate: true,
        amount: true,
        status: true,
        description: true,
        client: {
          select: {
            id: true,
            firstName: true,
            lastName: true
          }
        }
      },
      orderBy: { issueDate: 'desc' }
      });
  
    return NextResponse.json(invoices);
    } catch (error) {
    console.error('Erreur lors de la récupération des factures:', error);
    return NextResponse.json(
      { error: "Erreur lors de la récupération des données" },
      { status: 500 }
    );
    }
  }


  
