Skip to content

Commit 71b2264

Browse files
committed
date and query validation for filtered tasks
1 parent 9835746 commit 71b2264

3 files changed

Lines changed: 14 additions & 5 deletions

File tree

src/backend/src/routes/tasks.routes.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,14 @@ import express from 'express';
22
import { body } from 'express-validator';
33
import TasksController from '../controllers/tasks.controllers.js';
44
import { nonEmptyString, isTaskPriority, isTaskStatus, validateInputs, isOptionalDate } from '../utils/validation.utils.js';
5+
import { isDate } from '../utils/validation.utils.js';
56

67
const tasksRouter = express.Router();
78

89
tasksRouter.post(
910
'/filter',
10-
body('startPeriod').isString(),
11-
body('endPeriod').isString(),
11+
isDate(body('startPeriod')),
12+
isDate(body('endPeriod')),
1213
body('memberIds').optional().isArray(),
1314
body('memberIds.*').optional().isString(),
1415
body('teamIds').optional().isArray(),

src/backend/src/services/tasks.services.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -302,7 +302,7 @@ export default class TasksService {
302302
// Validate memberIds if provided
303303
if (memberIds && memberIds.length > 0) {
304304
const users = await prisma.user.findMany({
305-
where: { userId: { in: memberIds } }
305+
where: { userId: { in: memberIds }, organizations: { some: { organizationId: organization.organizationId } } }
306306
});
307307
if (users.length !== memberIds.length) {
308308
throw new NotFoundException('User', 'one or more member IDs');

src/frontend/src/pages/CalendarPage/CalendarPage.tsx

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -213,7 +213,12 @@ const NewCalendarPage: React.FC<NewCalendarPageProps> = ({
213213
}
214214
: null;
215215

216-
const { data: filteredTasks } = useFilterTasks(taskFilterArgs);
216+
const {
217+
isLoading: tasksIsLoading,
218+
isError: tasksIsError,
219+
error: tasksError,
220+
data: filteredTasks
221+
} = useFilterTasks(taskFilterArgs);
217222

218223
const [pendingEvent, setPendingEvent] = useState(
219224
yourEvents.filter((event) => event.approved === ConflictStatus.PENDING).length > 0
@@ -332,6 +337,7 @@ const NewCalendarPage: React.FC<NewCalendarPageProps> = ({
332337
if (conflictingEventsIsError) return <ErrorPage message={conflictingEventsError.message} />;
333338
if (conflictingDeniedEventsIsError) return <ErrorPage message={conflictingDeniedEventsError.message} />;
334339
if (conflictingReviewEventsIsError) return <ErrorPage message={conflictingReviewEventsError.message} />;
340+
if (tasksIsError) return <ErrorPage message={tasksError.message} />;
335341

336342
if (
337343
isLoading ||
@@ -341,7 +347,9 @@ const NewCalendarPage: React.FC<NewCalendarPageProps> = ({
341347
conflictingDeniedEventsLoading ||
342348
!conflictingDeniedEvents ||
343349
conflictingReviewEventsLoading ||
344-
!conflictingReviewEvents
350+
!conflictingReviewEvents ||
351+
tasksIsLoading ||
352+
!filteredTasks
345353
)
346354
return <LoadingIndicator />;
347355

0 commit comments

Comments
 (0)