11package controllers
22
3- import dto .request .task .{AssignMemberRequest , CreateTaskRequest , UpdateTaskRequest }
3+ import dto .request .task .{
4+ AssignMemberRequest ,
5+ CreateTaskRequest ,
6+ UpdateTaskRequest
7+ }
48import dto .response .ApiResponse
59import play .api .i18n .I18nSupport .RequestWithMessagesApi
610import play .api .i18n .Messages
711import play .api .libs .json .{JsValue , Json }
8- import play .api .mvc .{Action , AnyContent , MessagesAbstractController , MessagesControllerComponents }
12+ import play .api .mvc .{
13+ Action ,
14+ AnyContent ,
15+ MessagesAbstractController ,
16+ MessagesControllerComponents
17+ }
918import services .TaskService
10- import validations .ValidationHandler
1119import utils .WritesExtras .unitWrites
20+ import validations .ValidationHandler
1221
1322import javax .inject .Inject
1423import scala .concurrent .ExecutionContext
1524
1625class TaskController @ Inject ()(
17- cc : MessagesControllerComponents ,
18- taskService : TaskService ,
19- authenticatedActionWithUser : AuthenticatedActionWithUser
20- )(implicit ec : ExecutionContext )
21- extends MessagesAbstractController (cc)
26+ cc : MessagesControllerComponents ,
27+ taskService : TaskService ,
28+ authenticatedActionWithUser : AuthenticatedActionWithUser
29+ )(implicit ec : ExecutionContext )
30+ extends MessagesAbstractController (cc)
2231 with ValidationHandler {
2332
2433 def create (columnId : Int ): Action [JsValue ] =
2534 authenticatedActionWithUser.async(parse.json) { request =>
2635 implicit val messages : Messages = request.messages
2736 val createdBy = request.userToken.userId
28- handleJsonValidation[CreateTaskRequest ](request.body) {
29- createColumnDto =>
30- taskService
31- .createNewTask(createColumnDto, columnId, createdBy)
32- .map { taskId =>
33- Created (
34- Json .toJson(
35- ApiResponse [Unit ](
36- s " Task created successfully with ID: $taskId"
37- )
38- )
37+ handleJsonValidation[CreateTaskRequest ](request.body) { createColumnDto =>
38+ taskService
39+ .createNewTask(createColumnDto, columnId, createdBy)
40+ .map { taskId =>
41+ Created (
42+ Json .toJson(
43+ ApiResponse [Unit ](s " Task created successfully with ID: $taskId" )
3944 )
40- }
45+ )
46+ }
4147 }
4248 }
4349
4450 def update (taskId : Int ): Action [JsValue ] =
4551 authenticatedActionWithUser.async(parse.json) { request =>
4652 implicit val messages : Messages = request.messages
4753 val updatedBy = request.userToken.userId
48- handleJsonValidation[UpdateTaskRequest ](request.body) {
49- updateTaskDto =>
50- taskService
51- .updateTask(taskId, updateTaskDto, updatedBy)
52- .map { _ =>
53- Ok (
54- Json .toJson(
55- ApiResponse [Unit ](
56- s " Task updated successfully "
57- )
58- )
59- )
60- }
54+ handleJsonValidation[UpdateTaskRequest ](request.body) { updateTaskDto =>
55+ taskService
56+ .updateTask(taskId, updateTaskDto, updatedBy)
57+ .map { _ =>
58+ Ok (Json .toJson(ApiResponse [Unit ](s " Task updated successfully " )))
59+ }
6160 }
6261 }
6362
@@ -81,13 +80,7 @@ class TaskController @Inject()(
8180 taskService
8281 .archiveTask(taskId, archivedBy)
8382 .map { _ =>
84- Ok (
85- Json .toJson(
86- ApiResponse [Unit ](
87- s " Task archived successfully "
88- )
89- )
90- )
83+ Ok (Json .toJson(ApiResponse [Unit ](s " Task archived successfully " )))
9184 }
9285 }
9386
@@ -97,13 +90,7 @@ class TaskController @Inject()(
9790 taskService
9891 .restoreTask(taskId, restoredBy)
9992 .map { _ =>
100- Ok (
101- Json .toJson(
102- ApiResponse [Unit ](
103- s " Task restored successfully "
104- )
105- )
106- )
93+ Ok (Json .toJson(ApiResponse [Unit ](s " Task restored successfully " )))
10794 }
10895 }
10996
@@ -117,7 +104,7 @@ class TaskController @Inject()(
117104 }
118105 }
119106
120- def assignMember (projectId: Int , taskId : Int ): Action [JsValue ] = {
107+ def assignMember (projectId : Int , taskId : Int ): Action [JsValue ] = {
121108 authenticatedActionWithUser.async(parse.json) { request =>
122109 val assignedBy = request.userToken.userId
123110 handleJsonValidation[AssignMemberRequest ](request.body) {
@@ -136,6 +123,22 @@ class TaskController @Inject()(
136123 }
137124 }
138125
126+ def unassignMember (projectId : Int ,
127+ taskId : Int ,
128+ userId : Int ): Action [AnyContent ] =
129+ authenticatedActionWithUser.async { request =>
130+ val unassignedBy = request.userToken.userId
131+ taskService
132+ .unassignMemberFromTask(projectId, taskId, userId, unassignedBy)
133+ .map { _ =>
134+ Ok (
135+ Json .toJson(
136+ ApiResponse [Unit ](s " Member unassigned from task successfully " )
137+ )
138+ )
139+ }
140+ }
141+
139142 def getArchivedTasks (projectId : Int ): Action [AnyContent ] =
140143 authenticatedActionWithUser.async { request =>
141144 implicit val messages : Messages = request.messages
@@ -145,7 +148,8 @@ class TaskController @Inject()(
145148 .map { tasks =>
146149 Ok (
147150 Json .toJson(
148- ApiResponse .success(" Archived tasks retrieved successfully" , tasks)
151+ ApiResponse
152+ .success(" Archived tasks retrieved successfully" , tasks)
149153 )
150154 )
151155 }
@@ -166,7 +170,10 @@ class TaskController @Inject()(
166170 }
167171 }
168172
169- def search (page : Int , size : Int , keyword : String , projectIds : Option [List [Int ]]): Action [AnyContent ] =
173+ def search (page : Int ,
174+ size : Int ,
175+ keyword : String ,
176+ projectIds : Option [List [Int ]]): Action [AnyContent ] =
170177 authenticatedActionWithUser.async { request =>
171178 val userId = request.userToken.userId
172179 taskService
@@ -178,7 +185,11 @@ class TaskController @Inject()(
178185 userId
179186 )
180187 .map { tasks =>
181- Ok (Json .toJson(ApiResponse .success(" Tasks retrieved successfully" , tasks)))
188+ Ok (
189+ Json .toJson(
190+ ApiResponse .success(" Tasks retrieved successfully" , tasks)
191+ )
192+ )
182193 }
183194 }
184195
0 commit comments