ENCOA-277, ENCOA-276, ENCOA-282, ENCOA-283

This commit is contained in:
Carlos-Mesquita
2024-12-21 19:23:53 +00:00
parent f6d387ce2d
commit 98a1636d0c
31 changed files with 2513 additions and 194 deletions

View File

@@ -21,6 +21,11 @@ import { getEntities, getEntitiesWithRoles } from "@/utils/entities.be";
import { useAllowedEntities } from "@/hooks/useEntityPermissions";
import { EntityWithRoles } from "@/interfaces/entity";
import { FaPersonChalkboard } from "react-icons/fa6";
import { FaFileUpload } from "react-icons/fa";
import clsx from "clsx";
import { useState } from "react";
import StudentClassroomTransfer from "@/components/Imports/StudentClassroomTransfer";
import Modal from "@/components/Modal";
export const getServerSideProps = withIronSessionSsr(async ({ req, res }) => {
const user = await requestUser(req, res)
@@ -58,7 +63,8 @@ interface Props {
entities: EntityWithRoles[]
}
export default function Home({ user, groups, entities }: Props) {
const entitiesAllowCreate = useAllowedEntities(user, entities, 'create_classroom')
const entitiesAllowCreate = useAllowedEntities(user, entities, 'create_classroom');
const [showImport, setShowImport] = useState(false);
const renderCard = (group: GroupWithUsers) => (
<Link
@@ -112,8 +118,25 @@ export default function Home({ user, groups, entities }: Props) {
<ToastContainer />
<Layout user={user} className="!gap-4">
<section className="flex flex-col gap-4 w-full h-full">
<Modal isOpen={showImport} onClose={() => setShowImport(false)}>
<StudentClassroomTransfer user={user} entities={entities} onFinish={() => setShowImport(false)} />
</Modal>
<div className="flex flex-col gap-4">
<h2 className="font-bold text-2xl">Classrooms</h2>
<div className="flex justify-between">
<h2 className="font-bold text-2xl">Classrooms</h2>
{entitiesAllowCreate.length !== 0 && <button
className={clsx(
"flex flex-row gap-3 items-center py-1.5 px-4 text-lg",
"bg-mti-purple-light border border-mti-purple-light rounded-xl text-white",
"hover:bg-white hover:text-mti-purple-light transition duration-300 ease-in-out",
)}
onClick={() => setShowImport(true)}
>
<FaFileUpload className="w-5 h-5" />
Transfer Students
</button>
}
</div>
<Separator />
</div>