import { writeFile } from 'fs/promises'
import path from "path";
import { NextResponse } from "next/server";

import prismadb from "@/lib/prisma";

export async function POST(
  req: any,
  { params }: { params: { storeId: string } }
) {
  try {
    const formData = await req.formData();

    const file = formData.get("file");
    const reference = formData.get("reference");
    const orderId = formData.get("orderId");

    if (!file) {
      return NextResponse.json({ error: "No files received." }, { status: 400 });
    }

    const buffer = Buffer.from(await file.arrayBuffer());
    const filename = file.name.replaceAll(" ", "_");
    try {
      await writeFile(
        path.join(process.cwd(), "./../documents/" + params.storeId + "/factures/" + filename),
        buffer
      );
      
      await prismadb.invoice.create({
        data: {
          storeId: params.storeId,
          reference,
          orderId
        }
      })
      
      return NextResponse.json({ Message: "Success", status: 201 });
    } catch (error) {
      console.log("Error occured ", error);
      return NextResponse.json({ Message: "Failed", status: 500 });
    }
  } catch (error) {
    console.log('[INVOICES_POST]', error);
    return new NextResponse("Internal error", { status: 500 })
  }
};