Skip to content

Commit e679e5f

Browse files
authored
Merge pull request #1462 from Northeastern-Electric-Racing/#1320-create-project-endpoint
#1320 Create project endpoint
2 parents c466135 + f8de6d5 commit e679e5f

6 files changed

Lines changed: 374 additions & 218 deletions

File tree

src/backend/src/controllers/projects.controllers.ts

Lines changed: 31 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,9 +29,38 @@ export default class ProjectsController {
2929
static async createProject(req: Request, res: Response, next: NextFunction) {
3030
try {
3131
const user: User = await getCurrentUser(res);
32-
const { crId, carNumber, name, summary, teamId } = req.body;
32+
const {
33+
name,
34+
crId,
35+
carNumber,
36+
teamIds,
37+
budget,
38+
summary,
39+
projectLeadId,
40+
projectManagerId,
41+
links,
42+
goals,
43+
features,
44+
otherConstraints,
45+
rules
46+
} = req.body;
3347

34-
const createdWbsNumber: WbsNumber = await ProjectsService.createProject(user, crId, carNumber, name, summary, teamId);
48+
const createdWbsNumber: WbsNumber = await ProjectsService.createProject(
49+
user,
50+
crId,
51+
carNumber,
52+
name,
53+
summary,
54+
teamIds,
55+
budget,
56+
links,
57+
rules,
58+
goals,
59+
features,
60+
otherConstraints,
61+
projectLeadId,
62+
projectManagerId
63+
);
3564

3665
return res.status(200).json(wbsPipe(createdWbsNumber));
3766
} catch (error: unknown) {

src/backend/src/prisma/seed-data/projects.seed.ts

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,28 @@ export const seedProject = async (
3131
projectLeadId: number | null,
3232
projectManagerId: number | null
3333
): Promise<{ projectWbsNumber: WbsNumber; projectId: number }> => {
34-
const projectWbsNumber = await ProjectsService.createProject(creator, changeRequestId, carNumber, name, summary, teamIds);
34+
const projectWbsNumber = await ProjectsService.createProject(
35+
creator,
36+
changeRequestId,
37+
carNumber,
38+
name,
39+
summary,
40+
teamIds,
41+
budget,
42+
links,
43+
rules,
44+
goals.map((element) => {
45+
return { id: -1, detail: element };
46+
}),
47+
features.map((element) => {
48+
return { id: -1, detail: element };
49+
}),
50+
otherConstraints.map((element) => {
51+
return { id: -1, detail: element };
52+
}),
53+
projectLeadId,
54+
projectManagerId
55+
);
3556

3657
const { projectId } = await prisma.project.findFirstOrThrow({
3758
where: {

src/backend/src/routes/projects.routes.ts

Lines changed: 20 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -9,21 +9,10 @@ const projectRouter = express.Router();
99
projectRouter.get('/', ProjectsController.getAllProjects);
1010
projectRouter.get('/link-types', ProjectsController.getAllLinkTypes);
1111
projectRouter.get('/:wbsNum', ProjectsController.getSingleProject);
12-
projectRouter.post(
13-
'/create',
12+
13+
const projectValidators = [
1414
intMinZero(body('crId')),
1515
nonEmptyString(body('name')),
16-
intMinZero(body('carNumber')),
17-
nonEmptyString(body('summary')),
18-
validateInputs,
19-
ProjectsController.createProject
20-
);
21-
projectRouter.post(
22-
'/edit',
23-
intMinZero(body('projectId')),
24-
intMinZero(body('crId')),
25-
nonEmptyString(body('name')),
26-
intMinZero(body('budget')),
2716
nonEmptyString(body('summary')),
2817
body('rules').isArray(),
2918
nonEmptyString(body('rules.*')),
@@ -40,7 +29,24 @@ projectRouter.post(
4029
nonEmptyString(body('links.*.url')),
4130
nonEmptyString(body('links.*.linkTypeName')),
4231
intMinZero(body('projectLeadId').optional()),
43-
intMinZero(body('projectManagerId').optional()),
32+
intMinZero(body('projectManagerId').optional())
33+
];
34+
35+
projectRouter.post(
36+
'/create',
37+
intMinZero(body('carNumber')),
38+
body('teamIds').isArray(),
39+
intMinZero(body('teamIds.*')),
40+
body('budget').optional().isInt({ min: 0 }).default(0),
41+
...projectValidators,
42+
validateInputs,
43+
ProjectsController.createProject
44+
);
45+
projectRouter.post(
46+
'/edit',
47+
intMinZero(body('projectId')),
48+
intMinZero(body('budget')),
49+
...projectValidators,
4450
validateInputs,
4551
ProjectsController.editProject
4652
);

0 commit comments

Comments
 (0)