|
1 | 1 | package clap.server.application.Task; |
2 | 2 |
|
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.*; |
7 | 4 | import clap.server.adapter.outbound.infrastructure.s3.S3UploadAdapter; |
8 | 5 | import clap.server.application.mapper.AttachmentMapper; |
9 | 6 | import clap.server.application.mapper.TaskMapper; |
10 | 7 | import clap.server.application.port.inbound.domain.CategoryService; |
11 | 8 | import clap.server.application.port.inbound.domain.MemberService; |
12 | 9 | import clap.server.application.port.inbound.domain.TaskService; |
| 10 | +import clap.server.application.port.inbound.task.UpdateTaskLabelUsecase; |
13 | 11 | import clap.server.application.port.inbound.task.UpdateTaskProcessorUsecase; |
14 | 12 | import clap.server.application.port.inbound.task.UpdateTaskStatusUsecase; |
15 | 13 | import clap.server.application.port.inbound.task.UpdateTaskUsecase; |
16 | 14 | import clap.server.application.port.outbound.task.CommandAttachmentPort; |
17 | 15 | import clap.server.application.port.outbound.task.CommandTaskPort; |
18 | 16 | import clap.server.application.port.outbound.task.LoadAttachmentPort; |
| 17 | +import clap.server.application.port.outbound.task.LoadLabelPort; |
19 | 18 | import clap.server.common.annotation.architecture.ApplicationService; |
20 | 19 | 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.*; |
25 | 21 |
|
26 | 22 | import clap.server.exception.ApplicationException; |
| 23 | +import clap.server.exception.code.LabelErrorCode; |
27 | 24 | import clap.server.exception.code.MemberErrorCode; |
28 | 25 | import clap.server.exception.code.TaskErrorCode; |
29 | 26 | import lombok.RequiredArgsConstructor; |
|
34 | 31 | import java.util.List; |
35 | 32 | import java.util.Objects; |
36 | 33 |
|
| 34 | +import static clap.server.exception.code.MemberErrorCode.ACTIVE_MEMBER_NOT_FOUND; |
| 35 | + |
37 | 36 |
|
38 | 37 | @ApplicationService |
39 | 38 | @RequiredArgsConstructor |
40 | 39 | @Slf4j |
41 | | -public class UpdateTaskService implements UpdateTaskUsecase, UpdateTaskStatusUsecase, UpdateTaskProcessorUsecase { |
| 40 | +public class UpdateTaskService implements UpdateTaskUsecase, UpdateTaskStatusUsecase, UpdateTaskProcessorUsecase, UpdateTaskLabelUsecase { |
42 | 41 |
|
43 | 42 | private final MemberService memberService; |
44 | 43 | private final CategoryService categoryService; |
45 | 44 | private final TaskService taskService; |
46 | 45 | private final CommandTaskPort commandTaskPort; |
47 | 46 | private final LoadAttachmentPort loadAttachmentPort; |
| 47 | + private final LoadLabelPort loadLabelPort; |
48 | 48 | private final CommandAttachmentPort commandAttachmentPort; |
49 | 49 | private final S3UploadAdapter s3UploadAdapter; |
50 | 50 |
|
@@ -96,6 +96,21 @@ public UpdateTaskResponse updateTaskProcessor(Long taskId, Long userId, UpdateTa |
96 | 96 | // TODO : 알림 생성 로직 및 푸시 알림 로직 추가 |
97 | 97 | } |
98 | 98 |
|
| 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 | + |
99 | 114 | private void updateAttachments(List<Long> attachmentIdsToDelete, List<MultipartFile> files, Task task) { |
100 | 115 | List<Attachment> attachmentsToDelete = validateAndGetAttachments(attachmentIdsToDelete, task); |
101 | 116 | attachmentsToDelete.forEach(Attachment::softDelete); |
|
0 commit comments