Skip to content

Commit 6b15056

Browse files
authored
Merge branch 'develop' into #1516-team-member-display
2 parents c0fbd6a + e380eb5 commit 6b15056

98 files changed

Lines changed: 2216 additions & 578 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.

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ A project management web application built in Typescript, React, and Express.
88

99
All of our documentation is on [our Confluence page](https://nerdocs.atlassian.net/wiki/spaces/NER/pages/5603329/Software). Start there to learn what the project is all about.
1010

11-
All questions can be directed to `#software` in the [NER Slack](https://nu-electric-racing.slack.com) (backup contact: [`@anthonybernardi`](https://github.com/anthonybernardi)).
11+
All questions can be directed to `#software` in the [NER Slack](https://nu-electric-racing.slack.com) (backup contact: [`@RChandler234`](https://github.com/RChandler234)).
1212

1313
## Environment Setup
1414

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -72,9 +72,9 @@ export default class ReimbursementRequestsController {
7272
static async reimburseUser(req: Request, res: Response, next: NextFunction) {
7373
try {
7474
const user = await getCurrentUser(res);
75-
const { amount } = req.body;
75+
const { amount, dateReceived } = req.body;
7676

77-
const reimbursement = await ReimbursementRequestService.reimburseUser(amount, user);
77+
const reimbursement = await ReimbursementRequestService.reimburseUser(amount, dateReceived, user);
7878
res.status(200).json(reimbursement);
7979
} catch (error: unknown) {
8080
next(error);

src/backend/src/controllers/teams.controllers.ts

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,4 +62,38 @@ export default class TeamsController {
6262
next(error);
6363
}
6464
}
65+
66+
static async createTeam(req: Request, res: Response, next: NextFunction) {
67+
try {
68+
const { teamName, headId, slackId, description } = req.body;
69+
const submitter = await getCurrentUser(res);
70+
const team = await TeamsService.createTeam(submitter, teamName, headId, slackId, description);
71+
return res.status(200).json(team);
72+
} catch (error: unknown) {
73+
next(error);
74+
}
75+
}
76+
77+
static async setTeamLeads(req: Request, res: Response, next: NextFunction) {
78+
try {
79+
const { userIds } = req.body;
80+
const { teamId } = req.params;
81+
const submitter = await getCurrentUser(res);
82+
const team = await TeamsService.setTeamLeads(submitter, teamId, userIds);
83+
return res.status(200).json(team);
84+
} catch (error: unknown) {
85+
next(error);
86+
}
87+
}
88+
89+
static async deleteTeam(req: Request, res: Response, next: NextFunction) {
90+
try {
91+
const { teamId } = req.params;
92+
const deleter = await getCurrentUser(res);
93+
await TeamsService.deleteTeam(deleter, teamId);
94+
return res.status(204).json({ message: `Successfully deleted team with id ${teamId}` });
95+
} catch (error: unknown) {
96+
next(error);
97+
}
98+
}
6599
}
Lines changed: 102 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,102 @@
1+
-- CreateEnum
2+
CREATE TYPE "Material_Status" AS ENUM ('RECEIVED', 'ORDERED', 'SHIPPED', 'UNORDERED');
3+
4+
-- CreateTable
5+
CREATE TABLE "Unit" (
6+
"name" TEXT NOT NULL,
7+
8+
CONSTRAINT "Unit_pkey" PRIMARY KEY ("name")
9+
);
10+
11+
-- CreateTable
12+
CREATE TABLE "Assembly" (
13+
"assemblyId" TEXT NOT NULL,
14+
"name" TEXT NOT NULL,
15+
"pdmFileName" TEXT NOT NULL,
16+
"dateDeleted" TIMESTAMP(3),
17+
"userDeletedId" INTEGER,
18+
"dateCreated" TIMESTAMP(3) NOT NULL,
19+
"userCreatedId" INTEGER NOT NULL,
20+
"wbsElementId" INTEGER NOT NULL,
21+
22+
CONSTRAINT "Assembly_pkey" PRIMARY KEY ("assemblyId")
23+
);
24+
25+
-- CreateTable
26+
CREATE TABLE "Material" (
27+
"materialId" TEXT NOT NULL,
28+
"assembyId" TEXT,
29+
"name" TEXT NOT NULL,
30+
"wbsElementId" INTEGER NOT NULL,
31+
"dateDeleted" TIMESTAMP(3),
32+
"userDeletedId" INTEGER,
33+
"dateCreated" TIMESTAMP(3) NOT NULL,
34+
"userCreatedId" INTEGER NOT NULL,
35+
"status" "Material_Status" NOT NULL,
36+
"materialTypeName" TEXT NOT NULL,
37+
"manufacturerName" TEXT NOT NULL,
38+
"manufacturerPartNumber" TEXT NOT NULL,
39+
"pdmFileName" TEXT,
40+
"quantity" INTEGER NOT NULL,
41+
"unitName" TEXT,
42+
"price" INTEGER NOT NULL,
43+
"subtotal" INTEGER NOT NULL,
44+
"linkUrl" TEXT NOT NULL,
45+
"notes" TEXT NOT NULL,
46+
47+
CONSTRAINT "Material_pkey" PRIMARY KEY ("materialId")
48+
);
49+
50+
-- CreateTable
51+
CREATE TABLE "Material_Type" (
52+
"name" TEXT NOT NULL,
53+
"dateCreated" TIMESTAMP(3) NOT NULL,
54+
"creatorId" INTEGER NOT NULL,
55+
56+
CONSTRAINT "Material_Type_pkey" PRIMARY KEY ("name")
57+
);
58+
59+
-- CreateTable
60+
CREATE TABLE "Manufacturer" (
61+
"name" TEXT NOT NULL,
62+
"dateCreated" TIMESTAMP(3) NOT NULL,
63+
"creatorId" INTEGER NOT NULL,
64+
65+
CONSTRAINT "Manufacturer_pkey" PRIMARY KEY ("name")
66+
);
67+
68+
-- CreateIndex
69+
CREATE UNIQUE INDEX "Assembly_name_key" ON "Assembly"("name");
70+
71+
-- CreateIndex
72+
CREATE UNIQUE INDEX "Material_name_key" ON "Material"("name");
73+
74+
-- AddForeignKey
75+
ALTER TABLE "Assembly" ADD CONSTRAINT "Assembly_userDeletedId_fkey" FOREIGN KEY ("userDeletedId") REFERENCES "User"("userId") ON DELETE SET NULL ON UPDATE CASCADE;
76+
77+
-- AddForeignKey
78+
ALTER TABLE "Assembly" ADD CONSTRAINT "Assembly_userCreatedId_fkey" FOREIGN KEY ("userCreatedId") REFERENCES "User"("userId") ON DELETE RESTRICT ON UPDATE CASCADE;
79+
80+
-- AddForeignKey
81+
ALTER TABLE "Assembly" ADD CONSTRAINT "Assembly_wbsElementId_fkey" FOREIGN KEY ("wbsElementId") REFERENCES "WBS_Element"("wbsElementId") ON DELETE RESTRICT ON UPDATE CASCADE;
82+
83+
-- AddForeignKey
84+
ALTER TABLE "Material" ADD CONSTRAINT "Material_assembyId_fkey" FOREIGN KEY ("assembyId") REFERENCES "Assembly"("assemblyId") ON DELETE SET NULL ON UPDATE CASCADE;
85+
86+
-- AddForeignKey
87+
ALTER TABLE "Material" ADD CONSTRAINT "Material_wbsElementId_fkey" FOREIGN KEY ("wbsElementId") REFERENCES "WBS_Element"("wbsElementId") ON DELETE RESTRICT ON UPDATE CASCADE;
88+
89+
-- AddForeignKey
90+
ALTER TABLE "Material" ADD CONSTRAINT "Material_userDeletedId_fkey" FOREIGN KEY ("userDeletedId") REFERENCES "User"("userId") ON DELETE SET NULL ON UPDATE CASCADE;
91+
92+
-- AddForeignKey
93+
ALTER TABLE "Material" ADD CONSTRAINT "Material_userCreatedId_fkey" FOREIGN KEY ("userCreatedId") REFERENCES "User"("userId") ON DELETE RESTRICT ON UPDATE CASCADE;
94+
95+
-- AddForeignKey
96+
ALTER TABLE "Material" ADD CONSTRAINT "Material_materialTypeName_fkey" FOREIGN KEY ("materialTypeName") REFERENCES "Material_Type"("name") ON DELETE RESTRICT ON UPDATE CASCADE;
97+
98+
-- AddForeignKey
99+
ALTER TABLE "Material" ADD CONSTRAINT "Material_manufacturerName_fkey" FOREIGN KEY ("manufacturerName") REFERENCES "Manufacturer"("name") ON DELETE RESTRICT ON UPDATE CASCADE;
100+
101+
-- AddForeignKey
102+
ALTER TABLE "Material" ADD CONSTRAINT "Material_unitName_fkey" FOREIGN KEY ("unitName") REFERENCES "Unit"("name") ON DELETE SET NULL ON UPDATE CASCADE;

src/backend/src/prisma/schema.prisma

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,10 @@ model User {
110110
createdLinkTypes LinkType[] @relation(name: "linkTypeCreator")
111111
deletedReceipts Receipt[] @relation(name: "deletedReceipts")
112112
createdReceipts Receipt[] @relation(name: "receiptsCreatedBy")
113+
deletedAssemblies Assembly[] @relation(name: "assemblyDeleter")
114+
createdAssemblies Assembly[] @relation(name: "assemblyCreator")
115+
deletedMaterials Material[] @relation(name: "materialDeleter")
116+
createdMaterials Material[] @relation(name: "materialCreator")
113117
}
114118

115119
model Team {
@@ -252,6 +256,8 @@ model WBS_Element {
252256
tasks Task[]
253257
reimbursementProducts Reimbursement_Product[]
254258
links Link[] @relation(name: "links")
259+
assembies Assembly[]
260+
materials Material[]
255261
256262
@@unique([carNumber, projectNumber, workPackageNumber], name: "wbsNumber")
257263
}
@@ -451,3 +457,73 @@ model User_Secure_Settings {
451457
zipcode String
452458
phoneNumber String @unique
453459
}
460+
461+
enum Material_Status {
462+
RECEIVED
463+
ORDERED
464+
SHIPPED
465+
UNORDERED
466+
}
467+
468+
model Unit {
469+
name String @id
470+
materials Material[]
471+
}
472+
473+
model Assembly {
474+
assemblyId String @id @default(uuid())
475+
name String @unique
476+
pdmFileName String
477+
dateDeleted DateTime?
478+
userDeleted User? @relation(fields: [userDeletedId], references: [userId], name: "assemblyDeleter")
479+
userDeletedId Int?
480+
dateCreated DateTime
481+
userCreated User @relation(fields: [userCreatedId], references: [userId], name: "assemblyCreator")
482+
userCreatedId Int
483+
wbsElement WBS_Element @relation(fields: [wbsElementId], references: [wbsElementId])
484+
wbsElementId Int
485+
materials Material[]
486+
}
487+
488+
model Material {
489+
materialId String @id @default(uuid())
490+
assemby Assembly? @relation(fields: [assembyId], references: [assemblyId])
491+
assembyId String?
492+
name String @unique
493+
wbsElement WBS_Element @relation(fields: [wbsElementId], references: [wbsElementId])
494+
wbsElementId Int
495+
dateDeleted DateTime?
496+
userDeleted User? @relation(fields: [userDeletedId], references: [userId], name: "materialDeleter")
497+
userDeletedId Int?
498+
dateCreated DateTime
499+
userCreated User @relation(fields: [userCreatedId], references: [userId], name: "materialCreator")
500+
userCreatedId Int
501+
status Material_Status
502+
materialType Material_Type @relation(fields: [materialTypeName], references: [name])
503+
materialTypeName String
504+
manufacturer Manufacturer @relation(fields: [manufacturerName], references: [name])
505+
manufacturerName String
506+
manufacturerPartNumber String
507+
pdmFileName String?
508+
quantity Int
509+
quantityUnit Unit? @relation(fields: [unitName], references: [name])
510+
unitName String?
511+
price Int
512+
subtotal Int
513+
linkUrl String
514+
notes String
515+
}
516+
517+
model Material_Type {
518+
name String @id
519+
dateCreated DateTime
520+
creatorId Int
521+
materials Material[]
522+
}
523+
524+
model Manufacturer {
525+
name String @id
526+
dateCreated DateTime
527+
creatorId Int
528+
materials Material[]
529+
}

0 commit comments

Comments
 (0)