Skip to content

Commit 318ce01

Browse files
committed
Merge remote-tracking branch 'origin/CLAP-161' into CLAP-161
2 parents b0f1a02 + 31290b5 commit 318ce01

File tree

5 files changed

+53
-9
lines changed

5 files changed

+53
-9
lines changed
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
package clap.server.adapter.inbound.web.dto.task;
2+
3+
public record UpdateTaskLabelRequest(
4+
Long labelId
5+
) {
6+
}

src/main/java/clap/server/adapter/inbound/web/task/ManagementTaskController.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ public class ManagementTaskController {
3131
private final UpdateTaskUsecase updateTaskUsecase;
3232
private final UpdateTaskStatusUsecase updateTaskStatusUsecase;
3333
private final UpdateTaskProcessorUsecase updateTaskProcessorUsecase;
34+
private final UpdateTaskLabelUsecase updateTaskLabelUsecase;
3435
private final ApprovalTaskUsecase approvalTaskUsecase;
3536

3637
@Operation(summary = "작업 요청 생성")
@@ -76,6 +77,16 @@ public ResponseEntity<UpdateTaskResponse> updateTaskProcessor(
7677
return ResponseEntity.ok(updateTaskProcessorUsecase.updateTaskProcessor(taskId, userInfo.getUserId(), updateTaskProcessorRequest));
7778
}
7879

80+
@Operation(summary = "작업 구분 변경")
81+
@Secured({"ROLE_MANAGER"})
82+
@PatchMapping("/label/{taskId}")
83+
public ResponseEntity<UpdateTaskResponse> updateTaskLabel(
84+
@PathVariable Long taskId,
85+
@AuthenticationPrincipal SecurityUserDetails userInfo,
86+
@RequestBody UpdateTaskLabelRequest updateTaskLabelRequest) {
87+
return ResponseEntity.ok(updateTaskLabelUsecase.updateTaskLabel(taskId, userInfo.getUserId(), updateTaskLabelRequest));
88+
}
89+
7990
@Operation(summary = "작업 승인")
8091
@Secured({"ROLE_MANAGER"})
8192
@PostMapping("/approval/{taskId}")

src/main/java/clap/server/application/Task/UpdateTaskService.java

Lines changed: 24 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,26 @@
11
package clap.server.application.Task;
22

3-
import clap.server.adapter.inbound.web.dto.task.UpdateTaskRequest;
4-
import clap.server.adapter.inbound.web.dto.task.UpdateTaskResponse;
5-
import clap.server.adapter.inbound.web.dto.task.UpdateTaskStatusRequest;
6-
import clap.server.adapter.inbound.web.dto.task.UpdateTaskProcessorRequest;
3+
import clap.server.adapter.inbound.web.dto.task.*;
74
import clap.server.adapter.outbound.infrastructure.s3.S3UploadAdapter;
85
import clap.server.application.mapper.AttachmentMapper;
96
import clap.server.application.mapper.TaskMapper;
107
import clap.server.application.port.inbound.domain.CategoryService;
118
import clap.server.application.port.inbound.domain.MemberService;
129
import clap.server.application.port.inbound.domain.TaskService;
10+
import clap.server.application.port.inbound.task.UpdateTaskLabelUsecase;
1311
import clap.server.application.port.inbound.task.UpdateTaskProcessorUsecase;
1412
import clap.server.application.port.inbound.task.UpdateTaskStatusUsecase;
1513
import clap.server.application.port.inbound.task.UpdateTaskUsecase;
1614
import clap.server.application.port.outbound.task.CommandAttachmentPort;
1715
import clap.server.application.port.outbound.task.CommandTaskPort;
1816
import clap.server.application.port.outbound.task.LoadAttachmentPort;
17+
import clap.server.application.port.outbound.task.LoadLabelPort;
1918
import clap.server.common.annotation.architecture.ApplicationService;
2019
import clap.server.domain.model.member.Member;
21-
import clap.server.domain.model.task.Attachment;
22-
import clap.server.domain.model.task.Category;
23-
import clap.server.domain.model.task.FilePath;
24-
import clap.server.domain.model.task.Task;
20+
import clap.server.domain.model.task.*;
2521

2622
import clap.server.exception.ApplicationException;
23+
import clap.server.exception.code.LabelErrorCode;
2724
import clap.server.exception.code.MemberErrorCode;
2825
import clap.server.exception.code.TaskErrorCode;
2926
import lombok.RequiredArgsConstructor;
@@ -34,17 +31,20 @@
3431
import java.util.List;
3532
import java.util.Objects;
3633

34+
import static clap.server.exception.code.MemberErrorCode.ACTIVE_MEMBER_NOT_FOUND;
35+
3736

3837
@ApplicationService
3938
@RequiredArgsConstructor
4039
@Slf4j
41-
public class UpdateTaskService implements UpdateTaskUsecase, UpdateTaskStatusUsecase, UpdateTaskProcessorUsecase {
40+
public class UpdateTaskService implements UpdateTaskUsecase, UpdateTaskStatusUsecase, UpdateTaskProcessorUsecase, UpdateTaskLabelUsecase {
4241

4342
private final MemberService memberService;
4443
private final CategoryService categoryService;
4544
private final TaskService taskService;
4645
private final CommandTaskPort commandTaskPort;
4746
private final LoadAttachmentPort loadAttachmentPort;
47+
private final LoadLabelPort loadLabelPort;
4848
private final CommandAttachmentPort commandAttachmentPort;
4949
private final S3UploadAdapter s3UploadAdapter;
5050

@@ -96,6 +96,21 @@ public UpdateTaskResponse updateTaskProcessor(Long taskId, Long userId, UpdateTa
9696
// TODO : 알림 생성 로직 및 푸시 알림 로직 추가
9797
}
9898

99+
@Transactional
100+
@Override
101+
public UpdateTaskResponse updateTaskLabel(Long taskId, Long userId, UpdateTaskLabelRequest request) {
102+
Member reviewer = memberService.findActiveMember(userId);
103+
if (!reviewer.isReviewer()) {
104+
throw new ApplicationException(MemberErrorCode.NOT_A_REVIEWER);
105+
}
106+
Task task = taskService.findById(taskId);
107+
Label label = loadLabelPort.findById(request.labelId()).orElseThrow(() -> new ApplicationException(LabelErrorCode.LABEL_NOT_FOUND));
108+
109+
task.updateLabel(label);
110+
Task updatetask = commandTaskPort.save(task);
111+
return TaskMapper.toUpdateTaskResponse(updatetask);
112+
}
113+
99114
private void updateAttachments(List<Long> attachmentIdsToDelete, List<MultipartFile> files, Task task) {
100115
List<Attachment> attachmentsToDelete = validateAndGetAttachments(attachmentIdsToDelete, task);
101116
attachmentsToDelete.forEach(Attachment::softDelete);
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package clap.server.application.port.inbound.task;
2+
3+
import clap.server.adapter.inbound.web.dto.task.UpdateTaskLabelRequest;
4+
import clap.server.adapter.inbound.web.dto.task.UpdateTaskResponse;
5+
6+
public interface UpdateTaskLabelUsecase {
7+
UpdateTaskResponse updateTaskLabel(Long taskId, Long userId, UpdateTaskLabelRequest request);
8+
}

src/main/java/clap/server/domain/model/task/Task.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,10 @@ public void updateProcessor(Member processor) {
6767
this.processor = processor;
6868
}
6969

70+
public void updateLabel(Label label) {
71+
this.label = label;
72+
}
73+
7074
public void approveTask(Member reviewer, Member processor, LocalDateTime dueDate, Category category, Label label) {
7175
this.reviewer = reviewer;
7276
this.processor = processor;

0 commit comments

Comments
 (0)