import prismadb from "@/lib/prisma";

import { dateFormatter, formatter } from "@/lib/utils";
import { OrderColumn } from "./components/columns"
import { OrderClient } from "./components/client";


const OrdersPage = async ({
  params
}: {
  params: { storeId: string }
}) => {
  const orders = await prismadb.order.findMany({
    where: {
      storeId: params.storeId
    },
    include: {
      customer: true,
      statusHistory: {
        orderBy: {
          updateDate: 'desc'
        },
        include: {
          status: true
        }
      },
      orderItems: {
        include: {
          product: true,
          carrier: {
            include: {
              weightRanges: true
            }
          }
        }
      }
    },
    orderBy: {
      createdAt: 'desc'
    }
  });

  const formattedOrders: OrderColumn[] = orders.map((item) => ({
    id: item.id,
    reference: "#" + item.reference,
    products: item.orderItems.reduce((total, orderItem) => {
      //si c'est un produit
      if (orderItem.product !== null) {
        //ajout de la quantité du produit au total
        total += orderItem.quantity;
      }
      return total;
    }, 0),
    customer: item.firstName + " " + item.lastName,
    isPaid: item.isPaid,
    amount: formatter.format(Number(item.amount)),
    statusHistory: item.statusHistory,
    createdAt: dateFormatter.format(item.createdAt),
  }));

  return (
    <div className="flex-col">
      <div className="flex-1 space-y-4 p-8 pt-6">
        <OrderClient data={formattedOrders} />
      </div>
    </div>
  );
};

export default OrdersPage;