Skip to content

Commit c73f08d

Browse files
Megan LiuMegan Liu
authored andcommitted
Merge branch 'develop' of https://github.com/Northeastern-Electric-Racing/FinishLine into develop
trying to fix messed up local repo
2 parents 6579d8c + 9563a91 commit c73f08d

84 files changed

Lines changed: 2339 additions & 399 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

src/backend/src/controllers/change-requests.controllers.ts

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -75,18 +75,19 @@ export default class ChangeRequestsController {
7575

7676
static async createStandardChangeRequest(req: Request, res: Response, next: NextFunction) {
7777
try {
78-
const { wbsNum, type, what, why } = req.body;
78+
const { wbsNum, type, what, why, proposedSolutions } = req.body;
7979
const submitter = await getCurrentUser(res);
80-
const id = await ChangeRequestsService.createStandardChangeRequest(
80+
const createdCR = await ChangeRequestsService.createStandardChangeRequest(
8181
submitter,
8282
wbsNum.carNumber,
8383
wbsNum.projectNumber,
8484
wbsNum.workPackageNumber,
8585
type,
8686
what,
87-
why
87+
why,
88+
proposedSolutions
8889
);
89-
return res.status(200).json({ message: `${id}` });
90+
return res.status(200).json(createdCR);
9091
} catch (error: unknown) {
9192
next(error);
9293
}

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

Lines changed: 87 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { Project, validateWBS, WbsNumber, wbsPipe } from 'shared';
22
import { NextFunction, Request, Response } from 'express';
3-
import { User } from '@prisma/client';
3+
import { Manufacturer, User } from '@prisma/client';
44
import { getCurrentUser } from '../utils/auth.utils';
55
import ProjectsService from '../services/projects.services';
66

@@ -127,4 +127,90 @@ export default class ProjectsController {
127127
next(error);
128128
}
129129
}
130+
131+
static async createAssembly(req: Request, res: Response, next: NextFunction) {
132+
try {
133+
const user: User = await getCurrentUser(res);
134+
const wbsNum: WbsNumber = validateWBS(req.params.wbsNum);
135+
const { name, pdmFileName } = req.body;
136+
const createAssembly = await ProjectsService.createAssembly(name, user, wbsNum, pdmFileName);
137+
res.status(200).json(createAssembly);
138+
} catch (error: unknown) {
139+
next(error);
140+
}
141+
}
142+
143+
static async createMaterial(req: Request, res: Response, next: NextFunction) {
144+
try {
145+
const {
146+
name,
147+
assemblyId,
148+
status,
149+
materialTypeName,
150+
manufacturerName,
151+
manufacturerPartNumber,
152+
pdmFileName,
153+
quantity,
154+
unitName,
155+
price,
156+
subtotal,
157+
linkUrl,
158+
notes
159+
} = req.body;
160+
const creator = await getCurrentUser(res);
161+
const wbsNum = validateWBS(req.params.wbsNum);
162+
const material = await ProjectsService.createMaterial(
163+
creator,
164+
name,
165+
status,
166+
materialTypeName,
167+
manufacturerName,
168+
manufacturerPartNumber,
169+
quantity,
170+
unitName,
171+
price,
172+
subtotal,
173+
linkUrl,
174+
notes,
175+
wbsNum,
176+
assemblyId,
177+
pdmFileName
178+
);
179+
return res.status(200).json(material);
180+
} catch (error: unknown) {
181+
next(error);
182+
}
183+
}
184+
185+
static async createManufacturer(req: Request, res: Response, next: NextFunction) {
186+
try {
187+
const { name } = req.body;
188+
const user = await getCurrentUser(res);
189+
const createdManufacturer = await ProjectsService.createManufacturer(user, name);
190+
res.status(200).json(createdManufacturer);
191+
} catch (error: unknown) {
192+
next(error);
193+
}
194+
}
195+
196+
static async getAllManufacturers(req: Request, res: Response, next: NextFunction) {
197+
try {
198+
const user = await getCurrentUser(res);
199+
const manufacturers: Manufacturer[] = await ProjectsService.getAllManufacturers(user);
200+
return res.status(200).json(manufacturers);
201+
} catch (error: unknown) {
202+
next(error);
203+
}
204+
}
205+
206+
static async createMaterialType(req: Request, res: Response, next: NextFunction) {
207+
try {
208+
const { name } = req.body;
209+
const user = await getCurrentUser(res);
210+
const createdMaterialType = await ProjectsService.createMaterialType(name, user);
211+
res.status(200).json(createdMaterialType);
212+
} catch (error: unknown) {
213+
next(error);
214+
}
215+
}
130216
}

src/backend/src/controllers/reimbursement-requests.controllers.ts

Lines changed: 22 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -162,9 +162,15 @@ export default class ReimbursementRequestsController {
162162

163163
static async createExpenseType(req: Request, res: Response, next: NextFunction) {
164164
try {
165-
const { name, code, allowed } = req.body;
165+
const { name, code, allowed, allowedRefundSources } = req.body;
166166
const user = await getCurrentUser(res);
167-
const createdExpenseType = await ReimbursementRequestService.createExpenseType(user, name, code, allowed);
167+
const createdExpenseType = await ReimbursementRequestService.createExpenseType(
168+
user,
169+
name,
170+
code,
171+
allowed,
172+
allowedRefundSources
173+
);
168174
res.status(200).json(createdExpenseType);
169175
} catch (error: unknown) {
170176
next(error);
@@ -224,6 +230,17 @@ export default class ReimbursementRequestsController {
224230
}
225231
}
226232

233+
static async denyReimbursementRequest(req: Request, res: Response, next: NextFunction) {
234+
try {
235+
const { requestId } = req.params;
236+
const user = await getCurrentUser(res);
237+
const reimbursementStatus = await ReimbursementRequestService.denyReimbursementRequest(requestId, user);
238+
res.status(200).json(reimbursementStatus);
239+
} catch (error: unknown) {
240+
next(error);
241+
}
242+
}
243+
227244
static async markReimbursementRequestAsDelivered(req: Request, res: Response, next: NextFunction) {
228245
try {
229246
const { requestId } = req.params;
@@ -269,14 +286,15 @@ export default class ReimbursementRequestsController {
269286
static async editExpenseTypeCode(req: Request, res: Response, next: NextFunction) {
270287
try {
271288
const { expenseTypeId } = req.params;
272-
const { name, code, allowed } = req.body;
289+
const { name, code, allowed, allowedRefundSources } = req.body;
273290
const submitter = await getCurrentUser(res);
274291
const expenseTypeUpdated = await ReimbursementRequestService.editExpenseType(
275292
expenseTypeId,
276293
code,
277294
name,
278295
allowed,
279-
submitter
296+
submitter,
297+
allowedRefundSources
280298
);
281299
res.status(200).json(expenseTypeUpdated);
282300
} catch (error: unknown) {

src/backend/src/controllers/work-packages.controllers.ts

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,16 @@ export default class WorkPackagesController {
2929
}
3030
}
3131

32+
static async getManyWorkPackages(req: Request, res: Response, next: NextFunction) {
33+
try {
34+
const { wbsNums } = req.body;
35+
const workPackages: WorkPackage[] = await WorkPackagesService.getManyWorkPackages(wbsNums);
36+
res.status(200).json(workPackages);
37+
} catch (error: unknown) {
38+
next(error);
39+
}
40+
}
41+
3242
// Create a work package with the given details
3343
static async createWorkPackage(req: Request, res: Response, next: NextFunction) {
3444
try {
@@ -72,8 +82,8 @@ export default class WorkPackagesController {
7282
blockedBy,
7383
expectedActivities,
7484
deliverables,
75-
projectLead,
76-
projectManager
85+
projectLeadId,
86+
projectManagerId
7787
} = req.body;
7888

7989
let { stage } = req.body;
@@ -94,8 +104,8 @@ export default class WorkPackagesController {
94104
blockedBy,
95105
expectedActivities,
96106
deliverables,
97-
projectLead,
98-
projectManager
107+
projectLeadId,
108+
projectManagerId
99109
);
100110
return res.status(200).json({ message: 'Work package updated successfully' });
101111
} catch (error: unknown) {

src/backend/src/integrations/slack.ts

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { WebClient } from '@slack/web-api';
2+
import { HttpException } from '../utils/errors.utils';
23

34
const slack = new WebClient(process.env.SLACK_BOT_TOKEN);
45

@@ -40,13 +41,17 @@ export const sendMessage = async (slackId: string, message: string, link?: strin
4041
}
4142
};
4243

43-
await slack.chat.postMessage({
44-
token: SLACK_BOT_TOKEN,
45-
channel: slackId,
46-
text: message,
47-
blocks: [block],
48-
unfurl_links: false
49-
});
44+
try {
45+
await slack.chat.postMessage({
46+
token: SLACK_BOT_TOKEN,
47+
channel: slackId,
48+
text: message,
49+
blocks: [block],
50+
unfurl_links: false
51+
});
52+
} catch (error) {
53+
throw new HttpException(500, 'Error sending slack message, reason: ' + (error as any).data.error);
54+
}
5055
};
5156

5257
export default slack;
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
/*
2+
* This file is part of NER's FinishLine and licensed under GNU AGPLv3.
3+
* See the LICENSE file in the repository root folder for details.
4+
*/
5+
6+
import { Prisma } from '@prisma/client';
7+
8+
const manufacturerQueryArgs = Prisma.validator<Prisma.ManufacturerArgs>()({
9+
include: {
10+
materials: true
11+
}
12+
});
13+
14+
export default manufacturerQueryArgs;
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
-- AlterTable
2+
ALTER TABLE "Expense_Type" ADD COLUMN "allowedRefundSources" "Club_Accounts"[];
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
-- AlterEnum
2+
CREATE TYPE "Work_Package_Stage_new" AS ENUM ('RESEARCH', 'DESIGN', 'MANUFACTURING', 'INSTALL');
3+
ALTER TABLE "Work_Package" ALTER COLUMN "stage" TYPE "Work_Package_Stage_new" USING (
4+
CASE "stage"::text
5+
WHEN 'INTEGRATION' THEN 'INSTALL'::"Work_Package_Stage_new"
6+
ELSE "stage"::text::"Work_Package_Stage_new"
7+
END);
8+
ALTER TYPE "Work_Package_Stage" RENAME TO "Work_Package_Stage_old";
9+
ALTER TYPE "Work_Package_Stage_new" RENAME TO "Work_Package_Stage";
10+
DROP TYPE "Work_Package_Stage_old";

src/backend/src/prisma/migrations/20231005145708_add_bom/migration.sql renamed to src/backend/src/prisma/migrations/20231024124220_add_bom/migration.sql

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ CREATE TABLE "Unit" (
1212
CREATE TABLE "Assembly" (
1313
"assemblyId" TEXT NOT NULL,
1414
"name" TEXT NOT NULL,
15-
"pdmFileName" TEXT NOT NULL,
15+
"pdmFileName" TEXT,
1616
"dateDeleted" TIMESTAMP(3),
1717
"userDeletedId" INTEGER,
1818
"dateCreated" TIMESTAMP(3) NOT NULL,
@@ -25,14 +25,14 @@ CREATE TABLE "Assembly" (
2525
-- CreateTable
2626
CREATE TABLE "Material" (
2727
"materialId" TEXT NOT NULL,
28-
"assembyId" TEXT,
28+
"assemblyId" TEXT,
2929
"name" TEXT NOT NULL,
3030
"wbsElementId" INTEGER NOT NULL,
3131
"dateDeleted" TIMESTAMP(3),
3232
"userDeletedId" INTEGER,
3333
"dateCreated" TIMESTAMP(3) NOT NULL,
3434
"userCreatedId" INTEGER NOT NULL,
35-
"staus" "Material_Status" NOT NULL,
35+
"status" "Material_Status" NOT NULL,
3636
"materialTypeName" TEXT NOT NULL,
3737
"manufacturerName" TEXT NOT NULL,
3838
"manufacturerPartNumber" TEXT NOT NULL,
@@ -81,7 +81,7 @@ ALTER TABLE "Assembly" ADD CONSTRAINT "Assembly_userCreatedId_fkey" FOREIGN KEY
8181
ALTER TABLE "Assembly" ADD CONSTRAINT "Assembly_wbsElementId_fkey" FOREIGN KEY ("wbsElementId") REFERENCES "WBS_Element"("wbsElementId") ON DELETE RESTRICT ON UPDATE CASCADE;
8282

8383
-- AddForeignKey
84-
ALTER TABLE "Material" ADD CONSTRAINT "Material_assembyId_fkey" FOREIGN KEY ("assembyId") REFERENCES "Assembly"("assemblyId") ON DELETE SET NULL ON UPDATE CASCADE;
84+
ALTER TABLE "Material" ADD CONSTRAINT "Material_assemblyId_fkey" FOREIGN KEY ("assemblyId") REFERENCES "Assembly"("assemblyId") ON DELETE SET NULL ON UPDATE CASCADE;
8585

8686
-- AddForeignKey
8787
ALTER TABLE "Material" ADD CONSTRAINT "Material_wbsElementId_fkey" FOREIGN KEY ("wbsElementId") REFERENCES "WBS_Element"("wbsElementId") ON DELETE RESTRICT ON UPDATE CASCADE;
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
-- AlterEnum
2+
ALTER TYPE "Reimbursement_Status_Type" ADD VALUE 'DENIED';

0 commit comments

Comments
 (0)