Skip to content

Commit 2d19f1a

Browse files
committed
Merge remote-tracking branch 'origin/develop' into #3936-delete-guest-definition
2 parents 3080cca + 45a3609 commit 2d19f1a

47 files changed

Lines changed: 671 additions & 70 deletions

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/attendance.controllers.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,16 @@ export default class AttendanceController {
2121
}
2222
}
2323

24+
static async getAttendanceById(req: Request, res: Response, next: NextFunction) {
25+
try {
26+
const { meetingAttendanceId } = req.params as Record<string, string>;
27+
const attendance = await AttendanceService.getAttendanceById(meetingAttendanceId, req.organization);
28+
res.status(200).json(attendance);
29+
} catch (error: unknown) {
30+
next(error);
31+
}
32+
}
33+
2434
static async getOngoingAttendance(req: Request, res: Response, next: NextFunction) {
2535
try {
2636
const { teamId } = req.params as Record<string, string>;

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

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,15 @@ export default class ChangeRequestsController {
2323
}
2424
}
2525

26+
static async getAllGuestChangeRequests(req: Request, res: Response, next: NextFunction) {
27+
try {
28+
const changeRequests = await ChangeRequestsService.getAllGuestChangeRequests(req.organization);
29+
res.status(200).json(changeRequests);
30+
} catch (error: unknown) {
31+
next(error);
32+
}
33+
}
34+
2635
static async getToReviewChangeRequests(req: Request, res: Response, next: NextFunction) {
2736
try {
2837
const changeRequests = await ChangeRequestsService.getToReviewChangeRequests(req.currentUser, req.organization);

src/backend/src/controllers/recruitment.controllers.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -125,4 +125,13 @@ export default class RecruitmentController {
125125
next(error);
126126
}
127127
}
128+
129+
static async getAllGuestDefintions(req: Request, res: Response, next: NextFunction) {
130+
try {
131+
const allDefinitons = await RecruitmentServices.getAllGuestDefinitions(req.organization);
132+
res.status(200).json(allDefinitons);
133+
} catch (error: unknown) {
134+
next(error);
135+
}
136+
}
128137
}

src/backend/src/controllers/users.controllers.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ export default class UsersController {
102102

103103
const { user, token } = await UsersService.logUserIn(idToken, header!);
104104

105-
res.cookie('token', token, { httpOnly: true, sameSite: 'none', secure: true });
105+
res.cookie('token', token, { httpOnly: true, sameSite: 'none', secure: true, maxAge: 7 * 24 * 60 * 60 * 1000 });
106106
res.status(200).json(user);
107107
} catch (error: unknown) {
108108
next(error);

src/backend/src/integrations/slack.ts

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -271,6 +271,23 @@ export const getChannelName = async (channelId: string) => {
271271
}
272272
};
273273

274+
/**
275+
* Checks whether the bot is a member of the given channel
276+
* @param channelId the id of the slack channel
277+
* @returns true if the bot is a member of the channel, false otherwise
278+
*/
279+
export const checkBotInChannel = async (channelId: string): Promise<boolean> => {
280+
const client = getSlackClient();
281+
if (!client) return false;
282+
283+
try {
284+
const channelRes = await client.conversations.info({ channel: channelId });
285+
return channelRes.channel?.is_member ?? false;
286+
} catch (error) {
287+
return false;
288+
}
289+
};
290+
274291
/**
275292
* Given a slack user id, prood.uces the name of the channel
276293
* @param userId the id of the slack user

src/backend/src/prisma-query-args/attendance.query-args.ts

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import { Prisma } from '@prisma/client';
22
import { getUserQueryArgs } from './user.query-args.js';
33

44
export type MeetingAttendanceQueryArgs = ReturnType<typeof getMeetingAttendanceQueryArgs>;
5+
export type MeetingAttendanceWithAttendeesQueryArgs = ReturnType<typeof getMeetingAttendanceWithAttendeesQueryArgs>;
56

67
export const getMeetingAttendanceQueryArgs = (organizationId: string) =>
78
Prisma.validator<Prisma.Meeting_AttendanceDefaultArgs>()({
@@ -19,3 +20,20 @@ export const getMeetingAttendanceQueryArgs = (organizationId: string) =>
1920
attendees: { select: { userId: true } }
2021
}
2122
});
23+
24+
export const getMeetingAttendanceWithAttendeesQueryArgs = (organizationId: string) =>
25+
Prisma.validator<Prisma.Meeting_AttendanceDefaultArgs>()({
26+
include: {
27+
userCreated: getUserQueryArgs(organizationId),
28+
team: {
29+
select: {
30+
teamId: true,
31+
teamName: true,
32+
headId: true,
33+
members: { select: { userId: true } },
34+
leads: { select: { userId: true } }
35+
}
36+
},
37+
attendees: getUserQueryArgs(organizationId)
38+
}
39+
});

src/backend/src/prisma-query-args/change-requests.query-args.ts

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,51 @@ export const getManyChangeRequestQueryArgs = (organizationId: string) =>
6868
}
6969
});
7070

71+
export type ChangeRequestGuestQueryArgs = ReturnType<typeof getGuestChangeRequestQueryArgs>;
72+
73+
export const getGuestChangeRequestQueryArgs = (organizationId: string) =>
74+
Prisma.validator<Prisma.Change_RequestDefaultArgs>()({
75+
select: {
76+
crId: true,
77+
identifier: true,
78+
dateSubmitted: true,
79+
type: true,
80+
accepted: true,
81+
dateReviewed: true,
82+
submitter: getUserQueryArgs(organizationId),
83+
reviewer: getUserQueryArgs(organizationId),
84+
changes: { select: { changeId: true } },
85+
wbsElement: {
86+
select: {
87+
carNumber: true,
88+
projectNumber: true,
89+
workPackageNumber: true,
90+
name: true,
91+
project: {
92+
select: {
93+
wbsElement: { select: { name: true } },
94+
teams: {
95+
select: { teamType: { select: { name: true } } }
96+
}
97+
}
98+
},
99+
workPackage: {
100+
select: {
101+
project: {
102+
select: {
103+
wbsElement: { select: { name: true } },
104+
teams: {
105+
select: { teamType: { select: { name: true } } }
106+
}
107+
}
108+
}
109+
}
110+
}
111+
}
112+
}
113+
}
114+
});
115+
71116
export const getChangeRequestWithProjectAndWorkPackageQueryArgs = (organizationId: string) =>
72117
Prisma.validator<Prisma.Change_RequestDefaultArgs>()({
73118
include: {

src/backend/src/prisma-query-args/projects.query-args.ts

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { Prisma } from '@prisma/client';
1+
import { Prisma, Task_Status } from '@prisma/client';
22
import { getUserQueryArgs } from './user.query-args.js';
33
import { getDescriptionBulletQueryArgs } from './description-bullets.query-args.js';
44
import { getTeamPreviewQueryArgs } from './teams.query-args.js';
@@ -129,7 +129,13 @@ export const getProjectOverviewQueryArgs = (organizationId: string) =>
129129
manager: getUserQueryArgs(organizationId),
130130
status: true,
131131
links: getLinkQueryArgs(),
132-
tasks: getTaskQueryArgs(organizationId)
132+
_count: {
133+
select: {
134+
tasks: {
135+
where: { AND: [{ dateDeleted: null }, { NOT: { status: Task_Status.DONE } }] }
136+
}
137+
}
138+
}
133139
}
134140
},
135141
workPackages: getWorkPackagePreviewQueryArgs(),

src/backend/src/prisma/schema.prisma

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -739,11 +739,11 @@ model Receipt {
739739
model Reimbursement_Request {
740740
reimbursementRequestId String @id @default(uuid())
741741
identifier Int
742-
saboId String? @unique
742+
saboId String? @unique
743743
dateCreated DateTime @default(now())
744744
dateDeleted DateTime?
745745
dateOfExpense DateTime?
746-
description String @default("")
746+
description String @default("")
747747
reimbursementStatuses Reimbursement_Status[]
748748
recipientId String
749749
recipient User @relation(name: "reimbursementRequestRecipient", fields: [recipientId], references: [userId])

src/backend/src/prisma/seed.ts

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ import OnboardingServices from '../services/onboarding.services.js';
4141
import { dbSeedAllParts, dbSeedAllPartTags } from './seed-data/parts.seed.js';
4242
import FinanceServices from '../services/finance.services.js';
4343
import CalendarService from '../services/calendar.services.js';
44+
import { allChangeRequestsReviewed } from '../utils/change-requests.utils.js';
4445

4546
const prisma = new PrismaClient();
4647

@@ -3901,6 +3902,50 @@ const performSeed: () => Promise<void> = async () => {
39013902
userCreatedId: batman.userId
39023903
}
39033904
});
3905+
3906+
await RecruitmentServices.createGuestDefinition(
3907+
thomasEmrax,
3908+
ner,
3909+
'Projects',
3910+
'This is the definition of a project. Projects are blah blah blah',
3911+
0,
3912+
'bar_chart',
3913+
'Click here to view all our projects!',
3914+
'/projects'
3915+
);
3916+
3917+
await RecruitmentServices.createGuestDefinition(
3918+
thomasEmrax,
3919+
ner,
3920+
'Change Requests',
3921+
'This is the definiton for a change request. Changes requests are blah blah blah',
3922+
0,
3923+
'bar_chart',
3924+
'Click here to view all our change requests!',
3925+
'/change-requests'
3926+
);
3927+
3928+
await RecruitmentServices.createGuestDefinition(
3929+
thomasEmrax,
3930+
ner,
3931+
'Gantt Chart',
3932+
'This is the definiton for a change request. Changes requests are blah blah blah',
3933+
0,
3934+
'bar_chart',
3935+
'Click here to view all our projects!',
3936+
'/gantt'
3937+
);
3938+
3939+
await RecruitmentServices.createGuestDefinition(
3940+
thomasEmrax,
3941+
ner,
3942+
'Design Reviews',
3943+
'This is the definiton for a design review. Design reviews are blah blah blah',
3944+
0,
3945+
'bar_chart',
3946+
'Click here to view all our design reviews!',
3947+
'/design-reviews'
3948+
);
39043949
};
39053950

39063951
performSeed()

0 commit comments

Comments
 (0)