From 57f5f8096909891ef018e8cd61b40ea4247dfefc Mon Sep 17 00:00:00 2001 From: SrJuggernaut Date: Thu, 18 Jan 2024 22:21:34 -0600 Subject: [PATCH] feat: basic apply form --- bun.lockb | Bin 273699 -> 280880 bytes package.json | 13 +- src/app/api/teamAplications/[id]/route.ts | 44 +++ src/app/api/teamAplications/route.ts | 43 +++ src/app/equipo/page.tsx | 112 ++++++-- src/app/equipo/unirse/ApplyForm.tsx | 311 ++++++++++++---------- src/types/api.ts | 4 + src/utilities/apiRoutes.ts | 71 +++++ src/utilities/teamApplication.ts | 43 +++ 9 files changed, 481 insertions(+), 160 deletions(-) create mode 100644 src/app/api/teamAplications/[id]/route.ts create mode 100644 src/app/api/teamAplications/route.ts create mode 100644 src/types/api.ts create mode 100644 src/utilities/apiRoutes.ts create mode 100644 src/utilities/teamApplication.ts diff --git a/bun.lockb b/bun.lockb index 7e8b3029f4557272af5b8f04bb8fdf6da620940f..bdc0a10e8f4004809f352aa468f2a78ce79719ba 100755 GIT binary patch delta 57975 zcmeFad3a3s|NcKS3>n1IQi9l8#1gGFu}$pzzDsQpAweujkWgYNrHXRO5o#}DZS7QT zRclddsimq)TWecYEn4mOanCuEcizkA{rgH!+b{REDnbUJ89^!p@~Bil8V}P9$4WLW1|ujvUE0wBR_UtxB&c@ z+u_Iu2W59S^1w-ngX8)V?tAn?*xlh0@JYCEDvmH5rQlt#5-I{0g;&5Yz|SadF?fb; zU$gBLJN!Xxg@MfP>%xaACNut%t)ZMloA=!wUC+Mk1;4S74;^pTjEN9$3}; zomDhd|CzAjkGAc8u)?*66|N4PnEINLV0UgdJL?V`lF1c=L@r1vMa1` zeG{UhV-g*XQ?{Nz+zQ_xmVbO|Ou~SeDv0!5P6V2Kz~G^M9qnsc2|0p3S^{v6&8CHhB+k78Z_@8Jo z3Ya?nw+2?9-GKw~xB#nf-XkIP-J7r$o}nX>`o#=Mas*Le)odKP*xSU)_(iw~b~ZQ| z{;sjLGaQGtpl^a%d&bX$749{-Fyn80432^b{)Ibs=+Hq?eFw)R*cmKpVKwa>ST%WI z7hrfxE1|EkH4Ue=vMMkRR=5~g8CHfhNMEx3JHZOyP}~~FI1*5kHG?%MPPVaHASp3= z=#c)=gN7xeZ6MUERBBP7O+j&YYY76cSat=8QtVi}ujMOtkT zH6$fIDk(ZPI*K926=yGHZCYQkz$n#;EvkMH4dl*ca9)5^Br(4^2|2}6f5 zeTMcO$TUG$Q!DX!Eqzv91cg;zE(y}VTHTU%c|%(+m0KeP^k{baXi$JyI>_0lN=Krg;(c(R_C{X zmB7#;F-dIH4tDFf=+OQ{yy%KIEGj8BbWlu6727TctA<5kO`GRnwN!Rk>G%c->Bl9K z6Zt#x4zNmo16G7|yCBiAQG*BJzarKud2Cc-X#c@c1Lote9*?IA@f>VYsfcQx6q_(~ z#DLf;jcI1t3t)}Dd$2N&8xk9n5SNsgIBalS5-VGL%+OKFKcngWN5MLSt%7i{(Y$sv zi??d}4y>BghE>qYgj2%)c;O7 z(Eg5fDOP?_2?^RO9M4keU?uzmtc2pDhWX~n-O*OYU)%m$$5?~P@4wEr&)D($*|TUM zV?i~YYLAh#W386k4y%Cc;GFP{aaMYf0~142qT&ZTh(9bUAu;9)Jk%ooS#gdQQeQ`p zw<5gFcu@k^uoZ4#T$1LI<82Zyg1vi!RpTCGjlzM&Qa_w%O`=tBe!NXs^-LzXHl<{{ zoTpy5hDgK7R=8JSt-QrxEzy0ZSpMx`HE2DXU$MD_&3o*0!l(L*lR7^0U{^VJ4H!DCpGw;vTf?*=5%a-I)>w8Z_6ykeh%bHFTB{LD*cm-TSKl<)VEHeG)wkS= zg~mjsM#mOeZv|Mq&Pu4N9U%An)+k#7t20{>PCN@+H6I5n!x6TB7FZdTB);ZbXTqz- zIk45D53$A9Vfi0{eUBI3$DtKv0jyy?9nJ%D@JNUm5R*I_TN%YAviL@&IO4Gbv7=#i zMGaUjPzF}Pa>0u4vi^eRl=8eft?HeEVi2b5VjH=^@&wO-Mc2m4N3G8KR^11hpZORQMNjR zIqa|%e|@U$kp`=2{$+|f#-XcAqTpb-5DAun={iRV_zPImY}zqv+kfu3RpavTOX%t7 zDyV-Y(~8tL#o

F$$ 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 diff --git a/package.json b/package.json index 69f4d9d..a5221bd 100644 --- a/package.json +++ b/package.json @@ -5,10 +5,15 @@ "scripts": { "develop": "next dev", "build": "next build", - "prestart": "yarn install && next build", + "prestart": "bun install && next build", "start": "next start", "lint": "next lint", - "prepare": "panda codegen && husky install" + "prepare": "panda codegen && husky install", + "prisma:generate": "prisma generate --schema=./node_modules/entgamers-database/prisma/schema.prisma", + "prisma:db:push": "prisma db push --schema=./node_modules/entgamers-database/prisma/schema.prisma", + "prisma:migrate:reset": "prisma migrate reset --schema=./node_modules/entgamers-database/prisma/schema.prisma", + "prisma:studio": "prisma studio --schema=./node_modules/entgamers-database/prisma/schema.prisma", + "postinstall": "bun prisma:generate" }, "dependencies": { "@fontsource/open-sans": "^5.0.20", @@ -19,8 +24,8 @@ "@fortawesome/react-fontawesome": "^0.2.0", "@reduxjs/toolkit": "^2.0.1", "appwrite": "^13.0.1", - "entgamers-database": "^0.0.7", - "entgamers-panda-preset": "0.1.1", + "entgamers-database": "0.0.13", + "entgamers-panda-preset": "0.1.2", "formik": "^2.4.5", "framer-motion": "^10.17.6", "isomorphic-fetch": "^3.0.0", diff --git a/src/app/api/teamAplications/[id]/route.ts b/src/app/api/teamAplications/[id]/route.ts new file mode 100644 index 0000000..b0ce2f7 --- /dev/null +++ b/src/app/api/teamAplications/[id]/route.ts @@ -0,0 +1,44 @@ +import { handleError } from '@/utilities/apiRoutes' +import { teamApplicationDataSchema, teamApplicationParamsSchema, type TeamApplicationRouteData } from '@/utilities/teamApplication' +import { deleteTeamApplication, getTeamApplication, updateTeamApplication } from 'entgamers-database/backend/teamApplication' +import { NextResponse } from 'next/server' + +export const GET = async (Request: Request, { params }: TeamApplicationRouteData): Promise => { + try { + const { id } = await teamApplicationParamsSchema.validate(params) + const teamApplication = await getTeamApplication({ where: { id } }) + if (teamApplication === null) { + return new NextResponse(null, { status: 404 }) + } + return NextResponse.json(teamApplication, { status: 200 }) + } catch (error) { + return handleError(error) + } +} + +export const POST = async (Request: Request, { params }: TeamApplicationRouteData): Promise => { + try { + const body: unknown = await Request.json() + const { id } = await teamApplicationParamsSchema.validate(params) + const teamApplicationData = await teamApplicationDataSchema.validate(body) + + const updatedTeamApplication = await updateTeamApplication({ where: { id }, data: teamApplicationData }) + + const response = NextResponse.json(updatedTeamApplication, { status: 200 }) + return response + } catch (error) { + return handleError(error) + } +} + +export const DELETE = async (Request: Request, { params }: TeamApplicationRouteData): Promise => { + try { + const { id } = await teamApplicationParamsSchema.validate(params) + + await deleteTeamApplication({ where: { id } }) + + return new NextResponse(null, { status: 204 }) + } catch (error) { + return handleError(error) + } +} diff --git a/src/app/api/teamAplications/route.ts b/src/app/api/teamAplications/route.ts new file mode 100644 index 0000000..75e5e6f --- /dev/null +++ b/src/app/api/teamAplications/route.ts @@ -0,0 +1,43 @@ +import { handleError } from '@/utilities/apiRoutes' +import { teamApplicationDataSchema, teamApplicationSearchParamsSchema } from '@/utilities/teamApplication' +import { createTeamApplication, getTeamApplications, type TeamApplication } from 'entgamers-database/backend/teamApplication' +import { NextResponse, type NextRequest } from 'next/server' + +export const GET = async (request: NextRequest): Promise => { + try { + const searchParams = request.nextUrl.searchParams.entries() + const validatedParams = await teamApplicationSearchParamsSchema.validate(Object.fromEntries(searchParams)) + const getTeamApplicationsParams = { + skip: validatedParams.skip, + take: validatedParams.take, + where: { + name: validatedParams['where[name]'], + email: validatedParams['where[email]'], + discord: validatedParams['where[discord]'], + role: validatedParams['where[role]'] as TeamApplication['role' ] | undefined, + status: validatedParams['where[status]'] + } + } + + const teamApplications = await getTeamApplications(getTeamApplicationsParams) + + const response = NextResponse.json(teamApplications, { status: 200 }) + return response + } catch (error) { + return handleError(error) + } +} + +export const POST = async (request: NextRequest): Promise => { + try { + const body = await request.json() + const createTeamApplicationData = await teamApplicationDataSchema.validate(body) + + const teamApplication = await createTeamApplication({ data: createTeamApplicationData }) + + const response = NextResponse.json(teamApplication, { status: 201 }) + return response + } catch (error) { + return handleError(error) + } +} diff --git a/src/app/equipo/page.tsx b/src/app/equipo/page.tsx index 37da8ac..7815a52 100644 --- a/src/app/equipo/page.tsx +++ b/src/app/equipo/page.tsx @@ -1,12 +1,40 @@ import Typography from '@/components/ui/Typography' -import { css } from '@/styled-system/css' +import { css, cx } from '@/styled-system/css' import { Container } from '@/styled-system/jsx' import { center } from '@/styled-system/patterns' -import { button } from '@/styled-system/recipes' +import { button, card } from '@/styled-system/recipes' +import { getClanMembers, getClanes } from 'entgamers-database/backend/clanes' +import { getUser, type UserWithPreferencesList } from 'entgamers-database/backend/users' +import NextImage from 'next/image' import NextLink from 'next/link' +import { type Models } from 'node-appwrite' import { type FC } from 'react' +interface GetTeamsResponse { + admins: UserWithPreferencesList + moderators: UserWithPreferencesList + collaborators: UserWithPreferencesList +} + +const getTeams = async (): Promise => { + const allClanes = await getClanes() + const adminClanId = allClanes.teams.find(clan => clan.name === 'Admin')?.$id + const moderatorClanId = allClanes.teams.find(clan => clan.name === 'Moderator')?.$id + const collaboratorClanId = allClanes.teams.find(clan => clan.name === 'Collaborator')?.$id + const adminMembers: Models.MembershipList = adminClanId !== undefined ? await getClanMembers(adminClanId) : { total: 0, memberships: [] } + const moderatorMembers: Models.MembershipList = moderatorClanId !== undefined ? await getClanMembers(moderatorClanId) : { total: 0, memberships: [] } + const collaboratorMembers: Models.MembershipList = collaboratorClanId !== undefined ? await getClanMembers(collaboratorClanId) : { total: 0, memberships: [] } + const adminsPromises = adminMembers.memberships.map(async membership => await getUser(membership.userId)) + const moderatorsPromises = moderatorMembers.memberships.map(async membership => await getUser(membership.userId)) + const collaboratorsPromises = collaboratorMembers.memberships.map(async membership => await getUser(membership.userId)) + const [admins, moderators, collaborators] = await Promise.all([ + Promise.all(adminsPromises), Promise.all(moderatorsPromises), Promise.all(collaboratorsPromises) + ]) + return { admins: { total: admins.length, users: admins }, moderators: { total: moderators.length, users: moderators }, collaborators: { total: collaborators.length, users: collaborators } } +} + const EquipoPage: FC = async () => { + const { admins } = await getTeams() return ( Equipo @@ -17,7 +45,67 @@ const EquipoPage: FC = async () => { Los administradores son quienes se encargan de que todo funcione como es debido en la comunidad, desde la moderación de los grupos hasta la organización de eventos. - = 1 + ? ( + + {admins.users.map((user, index) => ( +

+
+ +
+
+ {user.name !== '' ? user.name : `Usuario ${index + 1}`} + {user.prefs.bio !== undefined && user.prefs.bio !== '' && ( + {user.prefs.bio} + )} +
+
+ ))} + + ) + : ( + <> + + Ups, parece que ahora mismo no hay administradores, pero en EntGamers siempre estamos estamos buscando gente que quiera organizar cosas para la comunidad, puedes contactarnos para formar parte de nuestro equipo haciendo click en el siguiente enlace. + + + ) + } +
+ + ¡Quiero ser Administrador! + +
+ {/* { flexWrap: 'wrap' })} > - {/* {team.map((member, index) => ( + {team.map((member, index) => (
{
- ))} */} -
-
- - ¡Quiero ser administrador! - -
+ ))} + */} Moderadores Los moderadores son los encargados de mantener el orden en los grupos de la comunidad, así como de ayudar a los usuarios a resolver sus dudas. @@ -90,7 +170,7 @@ const EquipoPage: FC = async () => {
¡Quiero ser moderador! @@ -105,7 +185,7 @@ const EquipoPage: FC = async () => {
¡Quiero ser colaborador! diff --git a/src/app/equipo/unirse/ApplyForm.tsx b/src/app/equipo/unirse/ApplyForm.tsx index a8585a5..7c43493 100644 --- a/src/app/equipo/unirse/ApplyForm.tsx +++ b/src/app/equipo/unirse/ApplyForm.tsx @@ -1,53 +1,70 @@ 'use client' -import Alert from '@/components/ui/Alert' import Button from '@/components/ui/Button' import Typography from '@/components/ui/Typography' import FormGroup from '@/components/ui/form/FormGroup' import Input from '@/components/ui/form/Input' import TextArea from '@/components/ui/form/TextArea' +import { useAppDispatch } from '@/hooks/useAppDispatch' +import { addAlert } from '@/state/feedbackSlice' import { css } from '@/styled-system/css' -import { type Alert as AlertType } from '@/types/feedback' -import { type TeamApplyData } from '@/types/teamApply' +import { teamApplicationDataSchema, type TeamApplicationData } from '@/utilities/teamApplication' import { faChevronRight } from '@fortawesome/free-solid-svg-icons' import { FontAwesomeIcon, type FontAwesomeIconProps } from '@fortawesome/react-fontawesome' -import { AppwriteException } from 'appwrite' +import { nanoid } from '@reduxjs/toolkit' import { useFormik } from 'formik' import { AnimatePresence, motion } from 'framer-motion' import { useSearchParams } from 'next/navigation' -import { useEffect, useState, type FC } from 'react' +import { useEffect, type FC } from 'react' const ApplyForm: FC = () => { const searchParams = useSearchParams() - const [alert, setAlert] = useState(undefined) + const dispatch = useAppDispatch() - const formik = useFormik({ + const formik = useFormik({ initialValues: { name: '', email: '', - discordName: '', + discord: '', message: '', - role: 'administrator' + role: 'Moderator', + status: 'Pending' }, - onSubmit: async (_values) => { + onSubmit: async (values) => { try { - // await createTeamApply(values) + await fetch('/api/teamAplications', { + method: 'POST', + headers: { + 'Content-Type': 'application/json' + }, + body: JSON.stringify(values) + }) + dispatch(addAlert({ + id: nanoid(), + title: 'Formulario enviado', + message: 'Gracias por interesarte en unirte al equipo', + severity: 'success' + })) } catch (error) { - if (error instanceof AppwriteException) { - setAlert({ + if (error instanceof Error) { + dispatch(addAlert({ + id: nanoid(), title: 'Error al enviar el formulario', message: error.message, severity: 'error' - }) + })) return } console.error('Error al enviar el formulario', error) - setAlert({ - severity: 'error', + dispatch(addAlert({ + id: nanoid(), title: 'Error al enviar el formulario', - message: 'Hubo un error al enviar el formulario, por favor, intenta nuevamente.' - }) + message: 'Error desconocido', + severity: 'error' + })) } - } + }, + validationSchema: teamApplicationDataSchema, + isInitialValid: false }) useEffect(() => { if (searchParams.has('role')) { @@ -73,36 +90,36 @@ const ApplyForm: FC = () => { @@ -114,126 +131,140 @@ const ApplyForm: FC = () => { gap: 'medium' })} > - {alert !== undefined && ( - - {alert.title !== undefined && ( - {alert.title} - )} - {alert.message} - - )} - {formik.submitCount > 0 && ( -
- - - - {formik.touched.name !== undefined && formik.errors.name !== undefined - ? ( - - {formik.errors.name} - - ) - : ( - - Tu nombre. - - )} - - - - - {formik.touched.email !== undefined && formik.errors.email !== undefined - ? ( - - {formik.errors.email} - - ) - : ( - - Tu email, para poder contactarte. - - ) - } - - - - - {formik.touched.discordName !== undefined && formik.errors.discordName !== undefined - ? ( - - {formik.errors.discordName} - - ) - : ( - - Tu nombre de Discord, para poder contactarte. - - ) - } - - - -