diff --git a/src/main/java/clap/server/application/service/task/UpdateTaskService.java b/src/main/java/clap/server/application/service/task/UpdateTaskService.java index 6daad0ed..9f3a4a92 100644 --- a/src/main/java/clap/server/application/service/task/UpdateTaskService.java +++ b/src/main/java/clap/server/application/service/task/UpdateTaskService.java @@ -63,14 +63,16 @@ public void updateTask(Long requesterId, Long taskId, UpdateTaskRequest request, memberService.findActiveMember(requesterId); Category category = categoryService.findById(request.categoryId()); Task task = taskService.findById(taskId); + int attachmentCount = getAttachmentCount(request, files, task); - int attachmentToAdd = files==null? 0 : files.size(); - int attachmentCount = task.getAttachmentCount() - request.attachmentsToDelete().size() + attachmentToAdd; - if (attachmentCount > TASK_MAX_FILE_COUNT) { - throw new ApplicationException(TaskErrorCode.FILE_COUNT_EXCEEDED); - } if (!request.attachmentsToDelete().isEmpty()) { - updateAttachments(request.attachmentsToDelete(), files, task); + List attachmentsToDelete = validateAndGetAttachments(request.attachmentsToDelete(), task); + attachmentsToDelete.stream() + .peek(Attachment::softDelete) + .forEach(commandAttachmentPort::save); + } + if (files != null) { + updateAttachments(files, task); } task.updateTask(requesterId, category, request.title(), request.description(), attachmentCount); taskService.upsert(task); @@ -126,18 +128,19 @@ public void updateTaskLabel(Long taskId, Long memberId, UpdateTaskLabelRequest r taskService.upsert(task); } - private void updateAttachments(List attachmentIdsToDelete, List files, Task task) { - List attachmentsToDelete = validateAndGetAttachments(attachmentIdsToDelete, task); - attachmentsToDelete.stream() - .peek(Attachment::softDelete) - .forEach(commandAttachmentPort::save); + private void updateAttachments(List files, Task task) { + List fileUrls = s3UploadPort.uploadFiles(FilePathConstants.TASK_FILE, files); + List attachments = AttachmentMapper.toTaskAttachments(task, files, fileUrls); + commandAttachmentPort.saveAll(attachments); + } - if (files != null) { - List fileUrls = s3UploadPort.uploadFiles(FilePathConstants.TASK_FILE, files); - List attachments = AttachmentMapper.toTaskAttachments(task, files, fileUrls); - commandAttachmentPort.saveAll(attachments); + private static int getAttachmentCount(UpdateTaskRequest request, List files, Task task) { + int attachmentToAdd = files == null ? 0 : files.size(); + int attachmentCount = task.getAttachmentCount() - request.attachmentsToDelete().size() + attachmentToAdd; + if (attachmentCount > TASK_MAX_FILE_COUNT) { + throw new ApplicationException(TaskErrorCode.FILE_COUNT_EXCEEDED); } - + return attachmentCount; } private List validateAndGetAttachments(List attachmentIdsToDelete, Task task) {