From 71434c2e57e9f739e94c68ffe66d4e483aa6ee48 Mon Sep 17 00:00:00 2001 From: Bowie Bello <obello26@icloud.com> Date: Wed, 10 May 2023 15:44:32 -0400 Subject: [PATCH 1/5] initial commit --- src/components/adminPhotoHeader.tsx | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/src/components/adminPhotoHeader.tsx b/src/components/adminPhotoHeader.tsx index 7128fcd9..0dbc9ad0 100644 --- a/src/components/adminPhotoHeader.tsx +++ b/src/components/adminPhotoHeader.tsx @@ -18,16 +18,18 @@ const AdminPhotoHeader = ({ name, image, email }: IPhotoHeaderProps) => { src={"/student_home/header3.jpg"} alt={ "Photo of flowers on an old book with a faded photo of two people"} width={2000} - height={200} + height={150} /> - <div className="absolute flex right-0 bottom-0 w-[100%] h-[90px] items-center bg-white bg-opacity-80 p-3 pl-9 backdrop-blur-sm"> - <Image - className="rounded-xl" - src={image ?? "/student_home/profile_photo_pic.jpeg"} - alt={"Profile Photo"} - width={58.5} - height={58.5} - /> + <div className="flex absolute right-0 bottom-0 w-[100%] h-[75px] items-center bg-white bg-opacity-80 p-3 pl-9 backdrop-blur-sm"> + <div className="h-[58.5px] w-[58.5px]"> + <Image + className="rounded-xl" + src={image ?? "/student_home/profile_photo_pic.jpeg"} + alt={"Profile Photo"} + width={58.5} + height={58.5} + /> + </div> <div className="flex flex-col pl-3 text-neutral-600"> <h5 className="text-lg font-bold">{name ?? "Admin"}</h5> <p className="text-md font-light text-neutral-400"> From a6edd857058720629b8409ac835b6fd023b30bad Mon Sep 17 00:00:00 2001 From: Bowie Bello <obello26@icloud.com> Date: Wed, 10 May 2023 21:00:01 -0400 Subject: [PATCH 2/5] Hooked up name, email, img to photoheader --- src/components/adminPhotoHeader.tsx | 45 ---------------- src/components/photoHeader.tsx | 46 +++++++++------- src/pages/student-home.tsx | 82 +++++++++++++++++++++++++++-- 3 files changed, 104 insertions(+), 69 deletions(-) delete mode 100644 src/components/adminPhotoHeader.tsx diff --git a/src/components/adminPhotoHeader.tsx b/src/components/adminPhotoHeader.tsx deleted file mode 100644 index 0dbc9ad0..00000000 --- a/src/components/adminPhotoHeader.tsx +++ /dev/null @@ -1,45 +0,0 @@ -// Photo Header for Student Home Page - -import React from "react"; -import Image from "next/image"; - -export interface IPhotoHeaderProps { - name: string | null; - image: string | null; - email: string | null; -} - -const AdminPhotoHeader = ({ name, image, email }: IPhotoHeaderProps) => { - return ( - <> - <div className="relative flex flex-col"> - <Image - className="object-cover" - src={"/student_home/header3.jpg"} - alt={ "Photo of flowers on an old book with a faded photo of two people"} - width={2000} - height={150} - /> - <div className="flex absolute right-0 bottom-0 w-[100%] h-[75px] items-center bg-white bg-opacity-80 p-3 pl-9 backdrop-blur-sm"> - <div className="h-[58.5px] w-[58.5px]"> - <Image - className="rounded-xl" - src={image ?? "/student_home/profile_photo_pic.jpeg"} - alt={"Profile Photo"} - width={58.5} - height={58.5} - /> - </div> - <div className="flex flex-col pl-3 text-neutral-600"> - <h5 className="text-lg font-bold">{name ?? "Admin"}</h5> - <p className="text-md font-light text-neutral-400"> - {email ?? "email@legacy.org"} - </p> - </div> - </div> - </div> - </> - ); -}; - -export default AdminPhotoHeader; \ No newline at end of file diff --git a/src/components/photoHeader.tsx b/src/components/photoHeader.tsx index 57152b09..b6b54b5d 100644 --- a/src/components/photoHeader.tsx +++ b/src/components/photoHeader.tsx @@ -3,37 +3,43 @@ import React from "react"; import Image from "next/image"; -const PhotoHeader = () => { +export interface IPhotoHeaderProps { + name: string | null; + image: string | null; + email: string | null; +} + +const PhotoHeader = ({ name, image, email }: IPhotoHeaderProps) => { return ( <> - <div className="pb-9"> - <div className="relative m-4 md:m-5 lg:m-9"> + <div className="relative flex flex-col"> <Image - className="rounded-2xl object-cover" + className="object-cover" src={"/student_home/header3.jpg"} - alt={ - "Photo of flowers on an old book with a faded photo of two people" - } + alt={ "Photo of flowers on an old book with a faded photo of two people"} width={2000} - height={500} + height={150} /> - <div className="absolute right-0 -bottom-12 flex h-20 w-[98%] items-center rounded-2xl bg-white bg-opacity-90 p-3 backdrop-blur-sm md:-bottom-10"> - <Image - className="rounded-xl" - src={"/student_home/profile_photo_pic.jpeg"} - alt={"Profile Photo"} - width={58.5} - height={58.5} - /> + <div className="flex absolute right-0 bottom-0 w-[100%] h-[75px] items-center bg-white bg-opacity-80 p-3 pl-9 backdrop-blur-sm"> + <div className="h-[58.5px] w-[58.5px]"> + <Image + className="rounded-xl" + src={image ?? "/student_home/profile_photo_pic.jpeg"} + alt={"Profile Photo"} + width={58.5} + height={58.5} + /> + </div> <div className="flex flex-col pl-3 text-neutral-600"> - <h5 className="text-base font-bold">Angela Han</h5> - <p className="text-sm">email@legacy.org</p> + <h5 className="text-lg font-bold">{name ?? "Admin"}</h5> + <p className="text-md font-light text-neutral-400"> + {email ?? "email@legacy.org"} + </p> </div> </div> </div> - </div> </> ); }; -export default PhotoHeader; +export default PhotoHeader; \ No newline at end of file diff --git a/src/pages/student-home.tsx b/src/pages/student-home.tsx index b5f7ba04..ddde159a 100644 --- a/src/pages/student-home.tsx +++ b/src/pages/student-home.tsx @@ -1,10 +1,25 @@ -import type { NextPage } from "next"; +import type { GetServerSidePropsContext, NextPage } from "next"; import Head from "next/head"; import PhotoHeader from "@components/photoHeader"; - +import { Approval, Senior, User } from "@prisma/client"; +import { useRouter } from "next/router"; +import { getServerAuthSession } from "@server/common/get-server-auth-session"; import { SeniorGrid } from "@components/profileTile"; +import { useCallback, useMemo, useState } from "react"; +import { TileData } from "@components/profileTile/profileTile"; + + +type IStudentProps = Awaited<ReturnType<typeof getServerSideProps>>["props"] & { + redirect: undefined; +}; + +const Home: NextPage<IStudentProps> = ({ + me, + seniors +}) => { + + -const Home: NextPage = () => { return ( <> <Head> @@ -13,7 +28,7 @@ const Home: NextPage = () => { </Head> <div className="h-max bg-taupe"> - <PhotoHeader /> + <PhotoHeader name={me.name} image={me.image} email={me.email}/> <div className="px-3 md:px-5 lg:px-9"> <h1 className="mt-1 text-xl font-semibold">My Senior</h1> <button className="my-3 inline-block h-0.5 w-1/3 min-w-[2in] bg-dark-teal md:w-[12%] lg:w-[12%] xl:w-[12%] 2xl:w-[12%]"></button> @@ -28,3 +43,62 @@ const Home: NextPage = () => { Home.displayName = "private"; export default Home; + +export const getServerSideProps = async ( + context: GetServerSidePropsContext +) => { + const session = await getServerAuthSession(context); + + if (!session || !session.user) { + return { + redirect: { + destination: "/", + permanent: false, + }, + }; + } + + if (!prisma) { + return { + redirect: { + destination: "/", + permanent: false, + }, + }; + } + + const user = await prisma.user.findUnique({ + where: { + id: session.user.id, + }, + }); + + if (!user) { + return { + redirect: { + destination: "/", + permanent: false, + }, + }; + } + + const seniors = await prisma.senior.findMany(); + const users = await prisma.user.findMany(); + const students = users.filter( + ({ approved }) => approved === Approval.APPROVED + ); + const pending = users.filter(({ approved }) => approved === Approval.PENDING); + const deactivated = users.filter( + ({ approved }) => approved === Approval.DENIED + ); + + return { + props: { + me: user, + students, + pending, + deactivated, + seniors, + }, + }; +}; From af1bdc2104c5cc6f5f4536a2cbdc2c9a0e9b6e6f Mon Sep 17 00:00:00 2001 From: Bowie Bello <obello26@icloud.com> Date: Wed, 10 May 2023 21:00:23 -0400 Subject: [PATCH 3/5] forgot to include in last commit oops --- src/pages/admin-home.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/pages/admin-home.tsx b/src/pages/admin-home.tsx index 900c430a..6dee2324 100644 --- a/src/pages/admin-home.tsx +++ b/src/pages/admin-home.tsx @@ -1,5 +1,5 @@ import type { GetServerSidePropsContext, NextPage } from "next"; -import AdminPhotoHeader from "@components/adminPhotoHeader"; +import PhotoHeader from "@components/photoHeader"; import Image from "next/image"; import { getServerAuthSession } from "@server/common/get-server-auth-session"; @@ -82,7 +82,7 @@ const Home: NextPage<IAdminProps> = ({ return ( <div className="h-max w-full"> - <AdminPhotoHeader name={me.name} image={me.image} email={me.email} /> + <PhotoHeader name={me.name} image={me.image} email={me.email} /> <div className="resize-y"> <div className="flex w-full bg-white pl-9 h-[50px]"> {tabs.map((tab) => ( From ee8a3d71db1d6ecb719915ab9dfdbf46fe5d91e9 Mon Sep 17 00:00:00 2001 From: Bowie Bello <obello26@icloud.com> Date: Wed, 10 May 2023 21:32:59 -0400 Subject: [PATCH 4/5] made height of photoheader fixed --- src/components/photoHeader.tsx | 18 +++++++++++------- src/pages/admin-home.tsx | 3 ++- 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/src/components/photoHeader.tsx b/src/components/photoHeader.tsx index b6b54b5d..46e95d3d 100644 --- a/src/components/photoHeader.tsx +++ b/src/components/photoHeader.tsx @@ -13,13 +13,17 @@ const PhotoHeader = ({ name, image, email }: IPhotoHeaderProps) => { return ( <> <div className="relative flex flex-col"> - <Image - className="object-cover" - src={"/student_home/header3.jpg"} - alt={ "Photo of flowers on an old book with a faded photo of two people"} - width={2000} - height={150} - /> + <div className="h-[150px] w-full"> + <Image + className="object-cover" + src={"/student_home/header3.jpg"} + alt={ "Photo of flowers on an old book with a faded photo of two people"} + layout="fill" + // width={2000} + // height={150} + /> + </div> + <div className="flex absolute right-0 bottom-0 w-[100%] h-[75px] items-center bg-white bg-opacity-80 p-3 pl-9 backdrop-blur-sm"> <div className="h-[58.5px] w-[58.5px]"> <Image diff --git a/src/pages/admin-home.tsx b/src/pages/admin-home.tsx index 6dee2324..063e95bd 100644 --- a/src/pages/admin-home.tsx +++ b/src/pages/admin-home.tsx @@ -81,7 +81,8 @@ const Home: NextPage<IAdminProps> = ({ }, [deactivated, pending, refreshData, selectedTab, seniors, students]); return ( - <div className="h-max w-full"> + + <div className="h-max w-full flex flex-col"> <PhotoHeader name={me.name} image={me.image} email={me.email} /> <div className="resize-y"> <div className="flex w-full bg-white pl-9 h-[50px]"> From 0d2e2ed0bec5aba52c749408fa84b7b4acbeedcf Mon Sep 17 00:00:00 2001 From: Bowie Bello <obello26@icloud.com> Date: Tue, 16 May 2023 14:26:46 -0400 Subject: [PATCH 5/5] Made photoheader email text darker --- src/components/photoHeader.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/photoHeader.tsx b/src/components/photoHeader.tsx index 46e95d3d..904cb0ac 100644 --- a/src/components/photoHeader.tsx +++ b/src/components/photoHeader.tsx @@ -36,7 +36,7 @@ const PhotoHeader = ({ name, image, email }: IPhotoHeaderProps) => { </div> <div className="flex flex-col pl-3 text-neutral-600"> <h5 className="text-lg font-bold">{name ?? "Admin"}</h5> - <p className="text-md font-light text-neutral-400"> + <p className="text-md font-light text-neutral-500"> {email ?? "email@legacy.org"} </p> </div>