Skip to content

Commit 7a92da6

Browse files
committed
CLAP-122 Feat: 요청 승인 폼 조회
1 parent 9ce7860 commit 7a92da6

File tree

5 files changed

+63
-0
lines changed

5 files changed

+63
-0
lines changed
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package clap.server.adapter.inbound.web.dto.task;
2+
3+
public record FindApprovalFormResponse(
4+
Long categoryId,
5+
String categoryName,
6+
String mainCategoryName
7+
) {
8+
}
9+
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
package clap.server.adapter.inbound.web.task;
2+
3+
import clap.server.adapter.inbound.security.SecurityUserDetails;
4+
import clap.server.adapter.inbound.web.dto.task.FindApprovalFormResponse;
5+
import clap.server.application.port.inbound.task.ApprovalTaskUsecase;
6+
import clap.server.common.annotation.architecture.WebAdapter;
7+
import io.swagger.v3.oas.annotations.Operation;
8+
import lombok.RequiredArgsConstructor;
9+
import org.springframework.http.ResponseEntity;
10+
import org.springframework.security.access.annotation.Secured;
11+
import org.springframework.security.core.annotation.AuthenticationPrincipal;
12+
import org.springframework.web.bind.annotation.*;
13+
14+
@WebAdapter
15+
@RestController
16+
@RequiredArgsConstructor
17+
@RequestMapping("/api/tasks/form")
18+
public class FindApprovalTaskFormController {
19+
20+
private final ApprovalTaskUsecase approvalTaskUsecase;
21+
22+
@Operation(summary = "요청 승인 폼 조회")
23+
@Secured("ROLE_MANAGER")
24+
@GetMapping("/{taskId}")
25+
public ResponseEntity<FindApprovalFormResponse> findTaskForm(
26+
@PathVariable Long taskId,
27+
@AuthenticationPrincipal SecurityUserDetails userInfo){
28+
return ResponseEntity.ok(approvalTaskUsecase.findApprovalForm(userInfo.getUserId(), taskId));
29+
}
30+
}

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

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
import clap.server.adapter.inbound.web.dto.task.ApprovalTaskRequest;
44
import clap.server.adapter.inbound.web.dto.task.ApprovalTaskResponse;
5+
import clap.server.adapter.inbound.web.dto.task.FindApprovalFormResponse;
6+
import clap.server.adapter.outbound.persistense.entity.task.constant.TaskStatus;
57
import clap.server.application.mapper.TaskMapper;
68
import clap.server.application.port.inbound.domain.CategoryService;
79
import clap.server.application.port.inbound.domain.LabelService;
@@ -22,6 +24,7 @@
2224

2325
@ApplicationService
2426
@RequiredArgsConstructor
27+
@Transactional(readOnly = true)
2528
public class ApprovalTaskService implements ApprovalTaskUsecase {
2629

2730
private final MemberService memberService;
@@ -45,4 +48,15 @@ public ApprovalTaskResponse approvalTaskByReviewer(Long reviewerId, Long taskId,
4548
task.approveTask(reviewer, processor, approvalTaskRequest.dueDate(), category, label);
4649
return TaskMapper.toApprovalTaskResponse(commandTaskPort.save(task));
4750
}
51+
52+
53+
@Override
54+
public FindApprovalFormResponse findApprovalForm(Long managerId, Long taskId) {
55+
memberService.findActiveMember(managerId);
56+
Task task = taskService.findById(taskId);
57+
if (task.getTaskStatus() != TaskStatus.REQUESTED) {
58+
throw new ApplicationException(TaskErrorCode.TASK_STATUS_MISMATCH);
59+
}
60+
return TaskMapper.toFindApprovalFormResponse(task);
61+
}
4862
}

src/main/java/clap/server/application/mapper/TaskMapper.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -152,4 +152,12 @@ public static FindTaskDetailsForManagerResponse toFindTaskDetailForManagerRespon
152152
attachmentResponses
153153
);
154154
}
155+
156+
public static FindApprovalFormResponse toFindApprovalFormResponse(Task task) {
157+
return new FindApprovalFormResponse(
158+
task.getCategory().getCategoryId(),
159+
task.getCategory().getName(),
160+
task.getCategory().getMainCategory().getName()
161+
);
162+
}
155163
}

src/main/java/clap/server/application/port/inbound/task/ApprovalTaskUsecase.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,9 @@
22

33
import clap.server.adapter.inbound.web.dto.task.ApprovalTaskRequest;
44
import clap.server.adapter.inbound.web.dto.task.ApprovalTaskResponse;
5+
import clap.server.adapter.inbound.web.dto.task.FindApprovalFormResponse;
56

67
public interface ApprovalTaskUsecase {
78
ApprovalTaskResponse approvalTaskByReviewer(Long userId, Long taskId, ApprovalTaskRequest approvalTaskRequest);
9+
FindApprovalFormResponse findApprovalForm(Long managerId, Long taskId);
810
}

0 commit comments

Comments
 (0)