Skip to content

Commit c7711ba

Browse files
authored
Merge pull request #1718 from Northeastern-Electric-Racing/feature/Project-Form-Redesign
Feature/project form redesign
2 parents 3b9228a + ee5225f commit c7711ba

29 files changed

Lines changed: 1175 additions & 1018 deletions

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

Lines changed: 31 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,11 +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, [
35-
teamId
36-
]);
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+
);
3764

3865
return res.status(200).json(wbsPipe(createdWbsNumber));
3966
} 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: 19 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -9,22 +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',
14-
intMinZero(body('crId')),
15-
nonEmptyString(body('name')),
16-
intMinZero(body('carNumber')),
17-
nonEmptyString(body('summary')),
18-
validateInputs,
19-
ProjectsController.createProject
20-
);
2112

22-
projectRouter.post(
23-
'/edit',
24-
intMinZero(body('projectId')),
13+
const projectValidators = [
2514
intMinZero(body('crId')),
2615
nonEmptyString(body('name')),
27-
intMinZero(body('budget')),
2816
nonEmptyString(body('summary')),
2917
body('rules').isArray(),
3018
nonEmptyString(body('rules.*')),
@@ -41,7 +29,24 @@ projectRouter.post(
4129
nonEmptyString(body('links.*.url')),
4230
nonEmptyString(body('links.*.linkTypeName')),
4331
intMinZero(body('projectLeadId').optional()),
44-
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+
nonEmptyString(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,
4550
validateInputs,
4651
ProjectsController.editProject
4752
);

0 commit comments

Comments
 (0)