22
33import clap .server .adapter .inbound .web .dto .admin .request .UpdateMemberRequest ;
44import clap .server .adapter .inbound .web .dto .admin .response .MemberDetailsResponse ;
5+ import clap .server .adapter .outbound .persistense .entity .member .constant .MemberRole ;
56import clap .server .application .mapper .response .MemberResponseMapper ;
67import clap .server .application .port .inbound .admin .MemberDetailUsecase ;
78import clap .server .application .port .inbound .admin .UpdateMemberUsecase ;
1112import clap .server .common .annotation .architecture .ApplicationService ;
1213import clap .server .domain .model .member .Department ;
1314import clap .server .domain .model .member .Member ;
15+ import clap .server .domain .policy .member .ManagerInfoUpdatePolicy ;
1416import clap .server .exception .ApplicationException ;
1517import clap .server .exception .code .DepartmentErrorCode ;
1618import lombok .RequiredArgsConstructor ;
@@ -22,14 +24,21 @@ class ManageMemberService implements UpdateMemberUsecase, MemberDetailUsecase {
2224 private final MemberService memberService ;
2325 private final CommandMemberPort commandMemberPort ;
2426 private final LoadDepartmentPort loadDepartmentPort ;
27+ private final ManagerInfoUpdatePolicy managerInfoUpdatePolicy ;
2528
2629 @ Override
2730 @ Transactional
2831 public void updateMemberInfo (Long adminId , Long memberId , UpdateMemberRequest request ) {
2932 Member member = memberService .findById (memberId );
3033 Department department = loadDepartmentPort .findById (request .departmentId ()).orElseThrow (() ->
3134 new ApplicationException (DepartmentErrorCode .DEPARTMENT_NOT_FOUND ));
32-
35+
36+ managerInfoUpdatePolicy .validateDepartment (department , request .role ());
37+ if (member .getMemberInfo ().getRole ().equals (MemberRole .ROLE_MANAGER ) &&
38+ !request .role ().equals (MemberRole .ROLE_MANAGER )){
39+ managerInfoUpdatePolicy .validateNoRemainingTasks (member );
40+ }
41+
3342 member .getMemberInfo ().updateMemberInfoByAdmin (
3443 request .name (), request .isReviewer (),
3544 department , request .role (), request .departmentRole ());
0 commit comments