wag-frontend-version-3/src/pages/Build/BuildingAreaPage.tsx

66 lines
2.1 KiB
TypeScript

"use server";
import React, { Suspense } from "react";
import Link from "next/link";
import { PlusCircle } from "lucide-react";
import { checkEndpointsAvailable } from "@/hooks/checkpageAvaliable";
import { retrieveBuildList } from "@/apicalls/building/build";
import { retrieveHeadersAndValidationByEndpoint } from "@/apicalls/validations/validations";
import { TableComponent } from "@/components/commons/Table";
import { PagePropsInterface } from "@/schemas/PageSchema";
import UserIsNotAuthorized from "@/pages/OnConstruction/UserIsNotAuthorized";
const BuildingAreaPage: React.FC<PagePropsInterface> = async ({
lang,
section,
}) => {
const pageEndpoint = "/building/area/list";
const availablePageContent = await checkEndpointsAvailable({
section: section as string,
lang,
});
const tableValidateAndHeaders = await retrieveHeadersAndValidationByEndpoint({
endpoint: pageEndpoint,
});
if (!tableValidateAndHeaders?.validated || !availablePageContent?.table) {
return <UserIsNotAuthorized />;
}
return (
<div>
<Suspense fallback={<div>Building Page is Loading...</div>}>
<h1 className="mt-8 text-center">
{availablePageContent?.table?.title}
</h1>
<h1 className="mt-4 text-center">
{availablePageContent?.table?.description}
</h1>
<div className="my-6">
{availablePageContent?.create && (
<Link
href={"/building/create"}
className="flex items-center justify-center gap-2 px-4 py-2 bg-slate-500 text-white rounded hover:bg-slate-700"
>
<PlusCircle size={16} />
Create
</Link>
)}
</div>
<div className="overflow-x-scroll my-6">
{availablePageContent?.table && (
<TableComponent
pageContent={availablePageContent}
tableValidateAndHeaders={tableValidateAndHeaders}
apiFunction={retrieveBuildList}
redirectTo="/building/update"
/>
)}
</div>
</Suspense>
</div>
);
};
export default BuildingAreaPage;