import ErrorMessages from "@/components/common/error-messages";
import InvoiceTypeForm from "@/components/invoice-type/invoice-type-form";
import InvoiceTypeList from "@/components/invoice-type/invoice-type-list";
import getData from "@/utils/fetch";
import { Metadata } from "next";
import InvoiceTypeContent from "./content";

export const metadata: Metadata = {
  title: "invoice type",
};

export default async function InvoiceType(context: any) {
  const { searchParams } = context;
  const invoiceId = searchParams?.id;
  let singleInvoice = undefined;
  if (invoiceId) {
    singleInvoice = await editForm(invoiceId);
  }

  const invoice_type_response = await getData("/api/v1/invoice-types");
  if (!invoice_type_response?.success) {
    return <ErrorMessages message={invoice_type_response?.message} />;
  }
  const {
    data: { data: invoiceType },
    data: { pagination },
  } = invoice_type_response;
  return (
    <div>
      <InvoiceTypeContent />
      <div className="overflow-hidden shadow">
        <InvoiceTypeList
          initInvoiceType={invoiceType}
          initPagination={pagination}
        />
        {singleInvoice && (
          <InvoiceTypeForm invoiceType={singleInvoice} mode="edit" />
        )}
      </div>
    </div>
  );
}

const editForm = async (id: string) => {
  const { data: invoice } = await getData(`/api/v1/invoice-types/${id}`);
  return invoice;
};
