From 2f609d4f3eb10aae4343066222385d2fb6554870 Mon Sep 17 00:00:00 2001 From: Bradford Derby Date: Mon, 9 Sep 2024 21:00:08 -0400 Subject: [PATCH 1/6] #2971 added logoImage and featuredProjects to the organization model --- .../migration.sql | 8 ++++ src/backend/src/prisma/schema.prisma | 46 ++++++++++--------- 2 files changed, 33 insertions(+), 21 deletions(-) create mode 100644 src/backend/src/prisma/migrations/20240910005616_add_logo_image_featured_project/migration.sql diff --git a/src/backend/src/prisma/migrations/20240910005616_add_logo_image_featured_project/migration.sql b/src/backend/src/prisma/migrations/20240910005616_add_logo_image_featured_project/migration.sql new file mode 100644 index 000000000..fe5771a6b --- /dev/null +++ b/src/backend/src/prisma/migrations/20240910005616_add_logo_image_featured_project/migration.sql @@ -0,0 +1,8 @@ +-- AlterTable +ALTER TABLE "Organization" ADD COLUMN "logoImage" TEXT; + +-- AlterTable +ALTER TABLE "Project" ADD COLUMN "organizationId" TEXT; + +-- AddForeignKey +ALTER TABLE "Project" ADD CONSTRAINT "Project_organizationId_fkey" FOREIGN KEY ("organizationId") REFERENCES "Organization"("organizationId") ON DELETE SET NULL ON UPDATE CASCADE; diff --git a/src/backend/src/prisma/schema.prisma b/src/backend/src/prisma/schema.prisma index 2c7863e01..88d671804 100644 --- a/src/backend/src/prisma/schema.prisma +++ b/src/backend/src/prisma/schema.prisma @@ -382,16 +382,18 @@ model WBS_Element { } model Project { - projectId String @id @default(uuid()) - wbsElementId String @unique - wbsElement WBS_Element @relation(fields: [wbsElementId], references: [wbsElementId]) - budget Int @default(0) - summary String - workPackages Work_Package[] - carId String - car Car @relation(fields: [carId], references: [carId]) - teams Team[] @relation(name: "assignedBy") - favoritedBy User[] @relation(name: "favoritedBy") + projectId String @id @default(uuid()) + wbsElementId String @unique + wbsElement WBS_Element @relation(fields: [wbsElementId], references: [wbsElementId]) + budget Int @default(0) + summary String + workPackages Work_Package[] + carId String + car Car @relation(fields: [carId], references: [carId]) + teams Team[] @relation(name: "assignedBy") + favoritedBy User[] @relation(name: "favoritedBy") + organizationId String? + organization Organization? @relation(fields: [organizationId], references: [organizationId]) } model Work_Package { @@ -872,6 +874,7 @@ model Organization { description String applyInterestImageId String? @unique exploreAsGuestImageId String? @unique + logoImage String? // Relation references wbsElements WBS_Element[] @@ -893,20 +896,21 @@ model Organization { usefulLinks Link[] FrequentlyAskedQuestions FrequentlyAskedQuestion[] Milestone Milestone[] + featuredProjects Project[] } model FrequentlyAskedQuestion { - faqId String @id @default(uuid()) - question String - answer String - userCreated User @relation(fields: [userCreatedId], references: [userId], name: "frequentlyAskedQuestionCreator") - userCreatedId String - userDeleted User? @relation(fields: [userDeletedId], references: [userId], name: "frequentlyAskedQuestionDeleter") - userDeletedId String? - dateCreated DateTime @default(now()) - dateDeleted DateTime? - organizationId String - organization Organization @relation(fields: [organizationId], references: [organizationId]) + faqId String @id @default(uuid()) + question String + answer String + userCreated User @relation(fields: [userCreatedId], references: [userId], name: "frequentlyAskedQuestionCreator") + userCreatedId String + userDeleted User? @relation(fields: [userDeletedId], references: [userId], name: "frequentlyAskedQuestionDeleter") + userDeletedId String? + dateCreated DateTime @default(now()) + dateDeleted DateTime? + organizationId String + organization Organization @relation(fields: [organizationId], references: [organizationId]) } model Milestone { From 7b2e347d536adb53e09a2820984debf80b6e0a03 Mon Sep 17 00:00:00 2001 From: Chris Pyle Date: Tue, 10 Sep 2024 23:27:08 -0400 Subject: [PATCH 2/6] #2798 Created function to get projects --- src/backend/src/utils/teams.utils.ts | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/src/backend/src/utils/teams.utils.ts b/src/backend/src/utils/teams.utils.ts index 087ebc37a..5e9c2586f 100644 --- a/src/backend/src/utils/teams.utils.ts +++ b/src/backend/src/utils/teams.utils.ts @@ -1,5 +1,8 @@ -import { Prisma, User, Team } from '@prisma/client'; +import { Prisma, User, Team, Project } from '@prisma/client'; +import prisma from '../prisma/prisma'; import { UserWithSettings } from './auth.utils'; +import { TeamQueryArgs, getTeamQueryArgs } from '../prisma-query-args/teams.query-args'; +import { NotFoundException } from './errors.utils'; const teamQueryArgsMembersOnly = Prisma.validator()({ include: { @@ -88,3 +91,23 @@ export const removeUsersFromList = (currentUsers: UserWithId[], usersToRemove: U const userIdsToRemove = usersToRemove.map((user) => user.userId); return currentUsers.filter((user) => !userIdsToRemove.includes(user.userId)); }; + +/** + * Given a team id, produces all of the projects assigned to that team + * @param teamId the id of the team + * @returns array of projects currently assigned to the given team (errors if no team is found) + */ +export const getTeamProjects = async (teamId: string): Promise => { + const team = await prisma.team.findUnique({ + where: { + teamId: teamId + }, + include: { + projects: true + } + }); + if (!team) { + throw new NotFoundException('Team', teamId); + } + return team.projects; +}; From 9b2aeaed927ffaa9d8de631dadc631215638b151 Mon Sep 17 00:00:00 2001 From: Chris Pyle Date: Tue, 10 Sep 2024 23:39:07 -0400 Subject: [PATCH 3/6] #2798 redundent dependencies and linting shorthand --- src/backend/src/utils/teams.utils.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/backend/src/utils/teams.utils.ts b/src/backend/src/utils/teams.utils.ts index 5e9c2586f..8fb7c7ce2 100644 --- a/src/backend/src/utils/teams.utils.ts +++ b/src/backend/src/utils/teams.utils.ts @@ -1,7 +1,6 @@ import { Prisma, User, Team, Project } from '@prisma/client'; import prisma from '../prisma/prisma'; import { UserWithSettings } from './auth.utils'; -import { TeamQueryArgs, getTeamQueryArgs } from '../prisma-query-args/teams.query-args'; import { NotFoundException } from './errors.utils'; const teamQueryArgsMembersOnly = Prisma.validator()({ @@ -100,7 +99,7 @@ export const removeUsersFromList = (currentUsers: UserWithId[], usersToRemove: U export const getTeamProjects = async (teamId: string): Promise => { const team = await prisma.team.findUnique({ where: { - teamId: teamId + teamId }, include: { projects: true From 6489aaaf1125e02ce47e3eb3577cc3bb34f49987 Mon Sep 17 00:00:00 2001 From: caiodasilva2005 Date: Wed, 11 Sep 2024 12:34:30 -0400 Subject: [PATCH 4/6] changed logoImage to logoIMageId in schema --- src/backend/src/prisma/schema.prisma | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/backend/src/prisma/schema.prisma b/src/backend/src/prisma/schema.prisma index 88d671804..6903ac1bf 100644 --- a/src/backend/src/prisma/schema.prisma +++ b/src/backend/src/prisma/schema.prisma @@ -874,7 +874,7 @@ model Organization { description String applyInterestImageId String? @unique exploreAsGuestImageId String? @unique - logoImage String? + logoImageId String? // Relation references wbsElements WBS_Element[] From 81a5e9c7e15ea38c842575ac384b7b0d213cb6e6 Mon Sep 17 00:00:00 2001 From: caiodasilva2005 Date: Wed, 11 Sep 2024 12:44:17 -0400 Subject: [PATCH 5/6] created migration for logo name change --- .../migration.sql | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 src/backend/src/prisma/migrations/20240911164338_changed_logo_image_name_to_logo_image_id/migration.sql diff --git a/src/backend/src/prisma/migrations/20240911164338_changed_logo_image_name_to_logo_image_id/migration.sql b/src/backend/src/prisma/migrations/20240911164338_changed_logo_image_name_to_logo_image_id/migration.sql new file mode 100644 index 000000000..2ddd9fa7b --- /dev/null +++ b/src/backend/src/prisma/migrations/20240911164338_changed_logo_image_name_to_logo_image_id/migration.sql @@ -0,0 +1,9 @@ +/* + Warnings: + + - You are about to drop the column `logoImage` on the `Organization` table. All the data in the column will be lost. + +*/ +-- AlterTable +ALTER TABLE "Organization" DROP COLUMN "logoImage", +ADD COLUMN "logoImageId" TEXT; From d99c461fe7029fe465c307ad4f10867f584fa38c Mon Sep 17 00:00:00 2001 From: caiodasilva2005 Date: Fri, 13 Sep 2024 12:51:00 -0400 Subject: [PATCH 6/6] #2796-Added guest view tab to admin tools --- src/frontend/src/pages/AdminToolsPage/AdminToolsPage.tsx | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/frontend/src/pages/AdminToolsPage/AdminToolsPage.tsx b/src/frontend/src/pages/AdminToolsPage/AdminToolsPage.tsx index 9cdf7d1ad..4a68e3cfe 100644 --- a/src/frontend/src/pages/AdminToolsPage/AdminToolsPage.tsx +++ b/src/frontend/src/pages/AdminToolsPage/AdminToolsPage.tsx @@ -40,6 +40,7 @@ const AdminToolsPage: React.FC = () => { } if (isUserAdmin) { tabs.push({ tabUrlValue: 'recruitment', tabName: 'Recruitment' }); + tabs.push({ tabUrlValue: 'guest-view', tabName: 'Guest View' }); tabs.push({ tabUrlValue: 'miscellaneous', tabName: 'Miscellaneous' }); } @@ -91,6 +92,8 @@ const AdminToolsPage: React.FC = () => { ) : tabIndex === 3 ? ( + ) : tabIndex === 4 ? ( + ) : (