2025-08-02 11:14:51 +02:00
|
|
|
import {PageParams} from "@/types/next";
|
|
|
|
|
import {Page, PageContent, PageHeader, PageTitle} from "@/features/layout/page";
|
|
|
|
|
import {AdminTabs} from "@/components/wrappers/dashboard/admin/admin-tabs";
|
|
|
|
|
import {db} from "@/db";
|
2025-07-26 22:23:00 +02:00
|
|
|
import {isNull} from "drizzle-orm";
|
2025-11-04 08:48:46 +01:00
|
|
|
import {Metadata} from "next";
|
2025-07-16 18:15:28 +02:00
|
|
|
|
2025-11-04 08:48:46 +01:00
|
|
|
export const metadata: Metadata = {
|
|
|
|
|
title: "Admin",
|
|
|
|
|
};
|
2024-12-13 12:28:08 +01:00
|
|
|
export default async function RoutePage(props: PageParams<{}>) {
|
|
|
|
|
|
2025-05-16 15:54:17 +02:00
|
|
|
const users = await db.query.user.findMany({
|
2025-08-02 11:14:51 +02:00
|
|
|
where: (fields) => isNull(fields.deletedAt),
|
|
|
|
|
with: {
|
|
|
|
|
accounts: true
|
|
|
|
|
}
|
2025-05-16 15:54:17 +02:00
|
|
|
});
|
2024-12-13 12:28:08 +01:00
|
|
|
|
2025-11-01 19:38:05 +01:00
|
|
|
const organizations = await db.query.organization.findMany({
|
|
|
|
|
where: (fields) => isNull(fields.deletedAt),
|
|
|
|
|
with: {
|
|
|
|
|
members: true,
|
|
|
|
|
},
|
|
|
|
|
});
|
|
|
|
|
|
2025-05-16 15:54:17 +02:00
|
|
|
const settings = await db.query.setting.findFirst({
|
2025-08-02 11:14:51 +02:00
|
|
|
where: (fields, {eq}) => eq(fields.name, "system"),
|
2025-05-16 15:54:17 +02:00
|
|
|
});
|
2024-12-13 12:28:08 +01:00
|
|
|
|
2025-11-01 19:38:05 +01:00
|
|
|
|
2024-12-13 12:28:08 +01:00
|
|
|
return (
|
|
|
|
|
<Page>
|
|
|
|
|
<PageHeader>
|
2025-05-16 15:54:17 +02:00
|
|
|
<PageTitle>Administration Panel</PageTitle>
|
2024-12-13 12:28:08 +01:00
|
|
|
</PageHeader>
|
2025-07-26 22:23:00 +02:00
|
|
|
<PageContent>
|
2025-11-01 19:38:05 +01:00
|
|
|
<AdminTabs
|
|
|
|
|
organizations={organizations}
|
|
|
|
|
settings={settings!}
|
|
|
|
|
users={users}/>
|
2024-12-13 12:28:08 +01:00
|
|
|
</PageContent>
|
|
|
|
|
</Page>
|
2025-05-16 15:54:17 +02:00
|
|
|
);
|
|
|
|
|
}
|