@@ -6,7 +6,7 @@ import teamQueryArgs from '../prisma-query-args/teams.query-args';
66import prisma from '../prisma/prisma' ;
77import taskTransformer from '../transformers/tasks.transformer' ;
88import { NotFoundException , AccessDeniedException , HttpException , DeletedException } from '../utils/errors.utils' ;
9- import { hasPermissionToEditTask } from '../utils/tasks.utils' ;
9+ import { hasPermissionToEditTask , sendSlackTaskAssignedNotificationToUsers } from '../utils/tasks.utils' ;
1010import { areUsersPartOfTeams , isUserOnTeam } from '../utils/teams.utils' ;
1111import { getUsers } from '../utils/users.utils' ;
1212import { wbsNumOf } from '../utils/utils' ;
@@ -79,7 +79,11 @@ export default class TasksService {
7979 ...taskQueryArgs
8080 } ) ;
8181
82- return taskTransformer ( createdTask ) ;
82+ const newTask = taskTransformer ( createdTask ) ;
83+
84+ sendSlackTaskAssignedNotificationToUsers ( newTask , assignees ) ;
85+
86+ return newTask ;
8387 }
8488
8589 /**
@@ -152,12 +156,16 @@ export default class TasksService {
152156 const originalTask = await prisma . task . findUnique ( {
153157 where : { taskId } ,
154158 include : {
155- wbsElement : { include : { project : { ...projectQueryArgs } } }
159+ wbsElement : { include : { project : { ...projectQueryArgs } } } ,
160+ assignees : true
156161 }
157162 } ) ;
158163 if ( ! originalTask ) throw new NotFoundException ( 'Task' , taskId ) ;
159164 if ( originalTask . dateDeleted ) throw new DeletedException ( 'Task' , taskId ) ;
160165
166+ const originalAssigneeIds = originalTask . assignees . map ( ( assignee ) => assignee . userId ) ;
167+ const newAssigneeIds = assignees . filter ( ( userId ) => ! originalAssigneeIds . includes ( userId ) ) ;
168+
161169 const hasPermission = await hasPermissionToEditTask ( user , taskId ) ;
162170 if ( ! hasPermission )
163171 throw new AccessDeniedException (
@@ -183,17 +191,21 @@ export default class TasksService {
183191 } ;
184192 } ) ;
185193
186- const updatedTask = await prisma . task . update ( {
187- where : { taskId } ,
188- data : {
189- assignees : {
190- set : transformedAssigneeUsers
191- }
192- } ,
193- ...taskQueryArgs
194- } ) ;
195-
196- return taskTransformer ( updatedTask ) ;
194+ const updatedTask = taskTransformer (
195+ await prisma . task . update ( {
196+ where : { taskId } ,
197+ data : {
198+ assignees : {
199+ set : transformedAssigneeUsers
200+ }
201+ } ,
202+ ...taskQueryArgs
203+ } )
204+ ) ;
205+
206+ await sendSlackTaskAssignedNotificationToUsers ( updatedTask , newAssigneeIds ) ;
207+
208+ return updatedTask ;
197209 }
198210
199211 /**
0 commit comments