Skip to content

Commit fbb8af5

Browse files
author
Madalynn Nenninger
committed
#3913 updated overdue task endpoint to also include project name
1 parent 8da790a commit fbb8af5

6 files changed

Lines changed: 35 additions & 16 deletions

File tree

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

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,20 @@ export const getTaskQueryArgs = (organizationId: string) =>
1717
export const getTaskPreviewQueryArgs = (organizationId: string) =>
1818
Prisma.validator<Prisma.TaskDefaultArgs>()({
1919
include: {
20-
wbsElement: true,
20+
wbsElement: {
21+
include: {
22+
project: {
23+
select: {
24+
projectId: true,
25+
wbsElement: {
26+
select: {
27+
name: true
28+
}
29+
}
30+
}
31+
}
32+
}
33+
},
2134
createdBy: getUserQueryArgs(organizationId),
2235
assignees: getUserQueryArgs(organizationId)
2336
}

src/backend/src/transformers/tasks.transformer.ts

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,17 @@ const taskTransformer = (task: Prisma.TaskGetPayload<TaskQueryArgs>): Task => {
2626

2727
export const taskCardPreviewTransformer = (task: Prisma.TaskGetPayload<TaskPreviewQueryArgs>): TaskCardPreview => {
2828
return {
29-
...task,
29+
taskId: task.taskId,
30+
wbsNum: wbsNumOf(task.wbsElement),
31+
title: task.title,
32+
deadline: task.deadline ?? undefined,
3033
priority: convertTaskPriority(task.priority),
31-
deadline: task.deadline ?? undefined
34+
assignees: task.assignees.map((assignee) => ({
35+
userId: assignee.userId,
36+
firstName: assignee.firstName,
37+
lastName: assignee.lastName
38+
})),
39+
projectName: task.wbsElement?.project?.wbsElement?.name || 'Unknown Project'
3240
};
3341
};
3442

src/frontend/src/apis/tasks.api.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
* See the LICENSE file in the repository root folder for details.
44
*/
55

6-
import { Task, TaskPriority, TaskStatus, WbsNumber, wbsPipe } from 'shared';
6+
import { Task, TaskCardPreview, TaskPriority, TaskStatus, WbsNumber, wbsPipe } from 'shared';
77
import axios from '../utils/axios';
88
import { apiUrls } from '../utils/urls';
99
import { taskTransformer } from './transformers/tasks.transformers';
@@ -114,7 +114,7 @@ export const deleteSingleTask = (taskId: string) => {
114114
};
115115

116116
export const getOverdueTasksByTeamLeader = (userId: string) => {
117-
return axios.get<Task[]>(apiUrls.overdueTasksByTeamLeadership(userId), {
117+
return axios.get<TaskCardPreview[]>(apiUrls.overdueTasksByTeamLeadership(userId), {
118118
transformResponse: (data) => JSON.parse(data).map(taskTransformer)
119119
});
120120
};

src/frontend/src/hooks/tasks.hooks.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
*/
55

66
import { useMutation, useQuery, useQueryClient } from 'react-query';
7-
import { WbsNumber, TaskPriority, TaskStatus, Task } from 'shared';
7+
import { WbsNumber, TaskPriority, TaskStatus, Task, TaskCardPreview } from 'shared';
88
import {
99
createSingleTask,
1010
deleteSingleTask,
@@ -148,7 +148,7 @@ export const useDeleteTask = () => {
148148
};
149149

150150
export const useOverdueTasksByTeamLeader = (userId: string) => {
151-
return useQuery<Task[], Error>([userId, 'tasks'], async () => {
151+
return useQuery<TaskCardPreview[], Error>([userId, 'tasks'], async () => {
152152
const { data } = await getOverdueTasksByTeamLeader(userId);
153153
return data;
154154
});

src/frontend/src/pages/HomePage/components/TeamTaskCard.tsx

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { Box, Card, CardContent, Chip, Link, Stack, Typography } from '@mui/mate
22
import { Link as RouterLink } from 'react-router-dom';
33
import { useTheme } from '@mui/system';
44
import React from 'react';
5-
import { Task, wbsPipe } from 'shared';
5+
import { Task, TaskCardPreview, wbsPipe } from 'shared';
66
import LoadingIndicator from '../../../components/LoadingIndicator';
77
import ErrorPage from '../../ErrorPage';
88
import { useSingleProject } from '../../../hooks/projects.hooks';
@@ -14,15 +14,12 @@ import { taskPriorityColor } from '../../../utils/task.utils';
1414
import { formatDate } from '../../../utils/datetime.utils';
1515

1616
interface TeamTaskCardProps {
17-
task: Task;
17+
task: TaskCardPreview;
1818
taskNumber: number;
1919
}
2020

2121
const TeamTaskCard: React.FC<TeamTaskCardProps> = ({ task, taskNumber }) => {
2222
const theme = useTheme();
23-
const { data: project, isLoading, isError, error } = useSingleProject(task.wbsNum);
24-
if (isLoading || !project) return <LoadingIndicator />;
25-
if (isError) return <ErrorPage message={error.message} />;
2623

2724
return (
2825
<Card
@@ -49,7 +46,7 @@ const TeamTaskCard: React.FC<TeamTaskCardProps> = ({ task, taskNumber }) => {
4946
</Typography>
5047
<Link component={RouterLink} to={`${routes.PROJECTS}/${wbsPipe(task.wbsNum)}`} noWrap>
5148
<Typography fontWeight={'regular'} variant="subtitle2">
52-
{wbsPipe(task.wbsNum)} - {project.name}
49+
{wbsPipe(task.wbsNum)} - {task.projectName}
5350
</Typography>
5451
</Link>
5552
<Stack direction={'row'} spacing={1}>
@@ -60,7 +57,7 @@ const TeamTaskCard: React.FC<TeamTaskCardProps> = ({ task, taskNumber }) => {
6057
<Stack spacing={1}>
6158
<Chip
6259
sx={{
63-
background: taskPriorityColor(task)
60+
background: taskPriorityColor({ priority: task.priority } as Task)
6461
}}
6562
label={task.priority}
6663
size="medium"

src/shared/src/types/task-types.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,9 @@ export interface Task {
3434
status: TaskStatus;
3535
}
3636

37-
export type TaskCardPreview = Pick<Task, 'taskId' | 'title' | 'deadline' | 'priority'> & {
38-
assignees: { firstName: string; lastName: string }[];
37+
export type TaskCardPreview = Pick<Task, 'taskId' | 'title' | 'deadline' | 'priority' | 'wbsNum'> & {
38+
assignees: { userId: string; firstName: string; lastName: string }[];
39+
projectName: string;
3940
};
4041

4142
export interface TaskWithIndex extends Task {

0 commit comments

Comments
 (0)