diff --git a/src/Controllers/participant.controller.ts b/src/Controllers/participant.controller.ts index bc49308..d5696d1 100644 --- a/src/Controllers/participant.controller.ts +++ b/src/Controllers/participant.controller.ts @@ -12,13 +12,9 @@ const ParticipantBody = z.object({ firstName: z.string(), lastName: z.string(), groupId: z.string(), - job: z.enum(["TEAMLEADER", "MEMBER"]), + //job: z.enum(["TEAMLEADER", "MEMBER"]), }); -const updateParticipantBody = ParticipantBody.omit({ - job: true, -}).partial(); - const returnedParticipant = { pid: true, firstName: true, @@ -45,7 +41,6 @@ export const createParticipant = async (req: Request<{ pid: string}>, res: Respo firstname: DataType.STRING, lastName: DataType.STRING, groupId: DataType.UUID, - job: DataType.JOB, }) ); } @@ -58,7 +53,7 @@ export const createParticipant = async (req: Request<{ pid: string}>, res: Respo data: { firstName: body.firstName, lastName: body.lastName, - relevance: body.job, + relevance: "MEMBER", group: { connect: { pid: body.groupId } }, team: { connect: { pid } }, }, @@ -80,7 +75,7 @@ export const createParticipant = async (req: Request<{ pid: string}>, res: Respo export const updateParticipant = async (req: Request<{ pid: string }>, res: Response) => { //insert TeamleaderAuth - const result = updateParticipantBody.safeParse(req.body); + const result = ParticipantBody.safeParse(req.body); if(result.success === false){ return res.status(400).json( diff --git a/src/Controllers/user_auth.controller.ts b/src/Controllers/user_auth.controller.ts index e46879a..a8034eb 100644 --- a/src/Controllers/user_auth.controller.ts +++ b/src/Controllers/user_auth.controller.ts @@ -6,31 +6,60 @@ import { verificationMail } from "../lib/mail"; import { DataType, generateInvalidBodyError } from "./common"; import { generateTeamleaderJWT } from "../Middleware/auth/teamleaderAuth"; import { createRolesForTeam } from "./role.controller"; +import { z } from "zod"; + +const TeamBody = z.object({ + teamName: z.string(), + leaderEmail: z.string(), + disciplineId: z.string(), + partFirstName: z.string(), + partLastName: z.string(), + partGroupId: z.string(), +}) interface CreateTeamBody { - name: string; + teamName: string; leaderEmail: string; disciplineId: string; + partFirstName: string; + partLastName: string; + partGroupId: string; } export const register = async (req: Request<{}, {}, CreateTeamBody>, res: Response) => { - if (req.body.name == null || req.body.disciplineId == null || req.body.leaderEmail == null) { + + const result = TeamBody.safeParse(req.body); + + if (result.success === false) { res.status(400).json( generateInvalidBodyError({ - name: DataType.STRING, + teamName: DataType.STRING, leaderEmail: DataType.STRING, disciplineId: DataType.STRING, + partFirstName: DataType.STRING, + partLastName: DataType.STRING, + partGroupId: DataType.STRING, }) ); return; } + const body = result.data; + const team = await prisma.team.create({ data: { - leaderEmail: req.body.leaderEmail, - name: req.body.name, + leaderEmail: body.leaderEmail, + name: body.teamName, roles: undefined, - discipline: { connect: { pid: req.body.disciplineId } }, + discipline: { connect: { pid: body.disciplineId } }, + participants: { + create: { + firstName: body.partFirstName, + lastName: body.partLastName, + relevance: "TEAMLEADER", + group: { connect: { pid: body.partGroupId } }, + } + } }, select: { pid: true,