Continued with the transformation of the Entities

This commit is contained in:
Tiago Ribeiro
2024-10-08 10:44:57 +01:00
parent 1ef4efcacf
commit c43ab9a911
13 changed files with 260 additions and 31 deletions

80
src/pages/users/index.tsx Normal file
View File

@@ -0,0 +1,80 @@
import Layout from "@/components/High/Layout";
import useUser from "@/hooks/useUser";
import useUsers from "@/hooks/useUsers";
import { Type, User } from "@/interfaces/user";
import {sessionOptions} from "@/lib/session";
import useFilterStore from "@/stores/listFilterStore";
import { serialize } from "@/utils";
import {withIronSessionSsr} from "iron-session/next";
import Head from "next/head";
import {useRouter} from "next/router";
import {useEffect} from "react";
import {BsArrowLeft, BsChevronLeft} from "react-icons/bs";
import {ToastContainer} from "react-toastify";
import UserList from "../(admin)/Lists/UserList";
export const getServerSideProps = withIronSessionSsr(({req, res, query}) => {
const user = req.session.user;
if (!user) {
return {
redirect: {
destination: "/login",
permanent: false,
},
};
}
const {type} = query as {type?: Type}
return {
props: serialize({user: req.session.user, type}),
};
}, sessionOptions);
interface Props {
user: User
type?: Type
}
export default function UsersListPage({ user, type }: Props) {
const [filters, clearFilters] = useFilterStore((state) => [state.userFilters, state.clearUserFilters]);
const router = useRouter()
return (
<>
<Head>
<title>EnCoach</title>
<meta
name="description"
content="A training platform for the IELTS exam provided by the Muscat Training Institute and developed by eCrop."
/>
<meta name="viewport" content="width=device-width, initial-scale=1" />
<link rel="icon" href="/favicon.ico" />
</Head>
<ToastContainer />
<Layout user={user}>
<UserList
user={user}
type={type}
filters={filters.map((f) => f.filter)}
renderHeader={(total) => (
<div className="flex items-center gap-2">
<button
onClick={() => {
clearFilters()
router.back()
}}
className="text-mti-purple hover:text-mti-purple-dark transition ease-in-out duration-300 text-xl">
<BsChevronLeft />
</button>
<h2 className="font-bold text-2xl">Users ({ total })</h2>
</div>
)}
/>
</Layout>
</>
);
}