mirror of
https://github.com/detleph/server.git
synced 2026-09-07 16:06:18 +02:00
updated register and createParticipant esp: job
This commit is contained in:
@@ -12,13 +12,9 @@ const ParticipantBody = z.object({
|
|||||||
firstName: z.string(),
|
firstName: z.string(),
|
||||||
lastName: z.string(),
|
lastName: z.string(),
|
||||||
groupId: z.string(),
|
groupId: z.string(),
|
||||||
job: z.enum(["TEAMLEADER", "MEMBER"]),
|
//job: z.enum(["TEAMLEADER", "MEMBER"]),
|
||||||
});
|
});
|
||||||
|
|
||||||
const updateParticipantBody = ParticipantBody.omit({
|
|
||||||
job: true,
|
|
||||||
}).partial();
|
|
||||||
|
|
||||||
const returnedParticipant = {
|
const returnedParticipant = {
|
||||||
pid: true,
|
pid: true,
|
||||||
firstName: true,
|
firstName: true,
|
||||||
@@ -45,7 +41,6 @@ export const createParticipant = async (req: Request<{ pid: string}>, res: Respo
|
|||||||
firstname: DataType.STRING,
|
firstname: DataType.STRING,
|
||||||
lastName: DataType.STRING,
|
lastName: DataType.STRING,
|
||||||
groupId: DataType.UUID,
|
groupId: DataType.UUID,
|
||||||
job: DataType.JOB,
|
|
||||||
})
|
})
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@@ -58,7 +53,7 @@ export const createParticipant = async (req: Request<{ pid: string}>, res: Respo
|
|||||||
data: {
|
data: {
|
||||||
firstName: body.firstName,
|
firstName: body.firstName,
|
||||||
lastName: body.lastName,
|
lastName: body.lastName,
|
||||||
relevance: body.job,
|
relevance: "MEMBER",
|
||||||
group: { connect: { pid: body.groupId } },
|
group: { connect: { pid: body.groupId } },
|
||||||
team: { connect: { pid } },
|
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) => {
|
export const updateParticipant = async (req: Request<{ pid: string }>, res: Response) => {
|
||||||
//insert TeamleaderAuth
|
//insert TeamleaderAuth
|
||||||
|
|
||||||
const result = updateParticipantBody.safeParse(req.body);
|
const result = ParticipantBody.safeParse(req.body);
|
||||||
|
|
||||||
if(result.success === false){
|
if(result.success === false){
|
||||||
return res.status(400).json(
|
return res.status(400).json(
|
||||||
|
|||||||
@@ -6,31 +6,60 @@ import { verificationMail } from "../lib/mail";
|
|||||||
import { DataType, generateInvalidBodyError } from "./common";
|
import { DataType, generateInvalidBodyError } from "./common";
|
||||||
import { generateTeamleaderJWT } from "../Middleware/auth/teamleaderAuth";
|
import { generateTeamleaderJWT } from "../Middleware/auth/teamleaderAuth";
|
||||||
import { createRolesForTeam } from "./role.controller";
|
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 {
|
interface CreateTeamBody {
|
||||||
name: string;
|
teamName: string;
|
||||||
leaderEmail: string;
|
leaderEmail: string;
|
||||||
disciplineId: string;
|
disciplineId: string;
|
||||||
|
partFirstName: string;
|
||||||
|
partLastName: string;
|
||||||
|
partGroupId: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
export const register = async (req: Request<{}, {}, CreateTeamBody>, res: Response) => {
|
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(
|
res.status(400).json(
|
||||||
generateInvalidBodyError({
|
generateInvalidBodyError({
|
||||||
name: DataType.STRING,
|
teamName: DataType.STRING,
|
||||||
leaderEmail: DataType.STRING,
|
leaderEmail: DataType.STRING,
|
||||||
disciplineId: DataType.STRING,
|
disciplineId: DataType.STRING,
|
||||||
|
partFirstName: DataType.STRING,
|
||||||
|
partLastName: DataType.STRING,
|
||||||
|
partGroupId: DataType.STRING,
|
||||||
})
|
})
|
||||||
);
|
);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const body = result.data;
|
||||||
|
|
||||||
const team = await prisma.team.create({
|
const team = await prisma.team.create({
|
||||||
data: {
|
data: {
|
||||||
leaderEmail: req.body.leaderEmail,
|
leaderEmail: body.leaderEmail,
|
||||||
name: req.body.name,
|
name: body.teamName,
|
||||||
roles: undefined,
|
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: {
|
select: {
|
||||||
pid: true,
|
pid: true,
|
||||||
|
|||||||
Reference in New Issue
Block a user