diff --git a/src/main/java/com/iconplus/smartproc/controller/ApprovalDrpController.java b/src/main/java/com/iconplus/smartproc/controller/ApprovalDrpController.java new file mode 100644 index 0000000..adc9276 --- /dev/null +++ b/src/main/java/com/iconplus/smartproc/controller/ApprovalDrpController.java @@ -0,0 +1,34 @@ +package com.iconplus.smartproc.controller; + +import com.iconplus.smartproc.helper.model.EmptyRequest; +import com.iconplus.smartproc.model.response.GetListUserApprovalResponse; +import com.iconplus.smartproc.service.approval.GetListUserDirekturKomiteService; +import com.iconplus.smartproc.service.approval.GetListUserVpService; +import org.springframework.web.bind.annotation.CrossOrigin; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@CrossOrigin(origins = "${fe.server}", allowCredentials = "true") +@RestController +@RequestMapping("/api/drp/approval") +public class ApprovalDrpController { + + private GetListUserVpService getListUserVpService; + private GetListUserDirekturKomiteService getListUserDirekturKomiteService; + public ApprovalDrpController(GetListUserVpService getListUserVpService, + GetListUserDirekturKomiteService getListUserDirekturKomiteService) { + this.getListUserVpService = getListUserVpService; + this.getListUserDirekturKomiteService = getListUserDirekturKomiteService; + } + + @GetMapping("/vp") + public GetListUserApprovalResponse getUserVp(EmptyRequest emptyRequest) { + return getListUserVpService.execute(emptyRequest); + } + + @GetMapping("direktur-komite") + public GetListUserApprovalResponse getUserDirekturKomite(EmptyRequest emptyRequest) { + return getListUserDirekturKomiteService.execute(emptyRequest); + } +} diff --git a/src/main/java/com/iconplus/smartproc/controller/DrpController.java b/src/main/java/com/iconplus/smartproc/controller/DrpController.java index 46274e7..3b1c957 100644 --- a/src/main/java/com/iconplus/smartproc/controller/DrpController.java +++ b/src/main/java/com/iconplus/smartproc/controller/DrpController.java @@ -1,6 +1,5 @@ package com.iconplus.smartproc.controller; -import com.iconplus.smartproc.helper.model.EmptyResponse; import com.iconplus.smartproc.model.request.DrpDokumenRequest; import com.iconplus.smartproc.model.request.DrpPengadaanRequest; import com.iconplus.smartproc.model.request.DrpRequest; diff --git a/src/main/java/com/iconplus/smartproc/model/response/GetListUserApprovalResponse.java b/src/main/java/com/iconplus/smartproc/model/response/GetListUserApprovalResponse.java new file mode 100644 index 0000000..0664315 --- /dev/null +++ b/src/main/java/com/iconplus/smartproc/model/response/GetListUserApprovalResponse.java @@ -0,0 +1,17 @@ +package com.iconplus.smartproc.model.response; + +import com.iconplus.smartproc.helper.base.BaseResponse; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class GetListUserApprovalResponse extends BaseResponse { + private List data; +} diff --git a/src/main/java/com/iconplus/smartproc/model/response/UserApprovalResponse.java b/src/main/java/com/iconplus/smartproc/model/response/UserApprovalResponse.java new file mode 100644 index 0000000..4265461 --- /dev/null +++ b/src/main/java/com/iconplus/smartproc/model/response/UserApprovalResponse.java @@ -0,0 +1,19 @@ +package com.iconplus.smartproc.model.response; + +import com.iconplus.smartproc.helper.base.BaseResponse; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class UserApprovalResponse extends BaseResponse { + + private Long id; + private String nama; +} diff --git a/src/main/java/com/iconplus/smartproc/repository/UsersRepository.java b/src/main/java/com/iconplus/smartproc/repository/UsersRepository.java index 04fb221..37683ad 100644 --- a/src/main/java/com/iconplus/smartproc/repository/UsersRepository.java +++ b/src/main/java/com/iconplus/smartproc/repository/UsersRepository.java @@ -8,6 +8,7 @@ import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; import org.springframework.stereotype.Repository; +import java.util.List; import java.util.Optional; @Repository @@ -101,5 +102,16 @@ public interface UsersRepository extends JpaRepository { "AND is_delete = 0 " + "AND expired_time >= CURRENT_TIMESTAMP", nativeQuery = true) Optional getUsersByEmailAndExpiredTime(String rememberId); + + @Query(value = "SELECT u.id as id, " + + "u.nama as nama, " + + "u.jabatanId as jabatanId, " + + "j.jabatan as jabatan " + + "FROM Users u " + + "JOIN Jabatan j ON j.id = u.jabatanId " + + "WHERE u.isDelete = false " + + "AND j.jabatan like :jabatan " + + "ORDER BY u.id") + List getListUserJabatan(String jabatan); } diff --git a/src/main/java/com/iconplus/smartproc/service/approval/GetListUserDirekturKomiteService.java b/src/main/java/com/iconplus/smartproc/service/approval/GetListUserDirekturKomiteService.java new file mode 100644 index 0000000..61890d6 --- /dev/null +++ b/src/main/java/com/iconplus/smartproc/service/approval/GetListUserDirekturKomiteService.java @@ -0,0 +1,42 @@ +package com.iconplus.smartproc.service.approval; + +import com.iconplus.smartproc.helper.model.EmptyRequest; +import com.iconplus.smartproc.helper.service.BaseService; +import com.iconplus.smartproc.model.projection.UserRoleView; +import com.iconplus.smartproc.model.response.GetListUserApprovalResponse; +import com.iconplus.smartproc.model.response.UserApprovalResponse; +import com.iconplus.smartproc.repository.UsersRepository; +import com.iconplus.smartproc.util.Constants; +import org.springframework.stereotype.Service; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +@Service +public class GetListUserDirekturKomiteService implements BaseService { + + private UsersRepository usersRepository; + public GetListUserDirekturKomiteService(UsersRepository usersRepository) { + this.usersRepository = usersRepository; + } + + @Override + public GetListUserApprovalResponse execute(EmptyRequest input) { + + List userApprovalResponseList = new ArrayList<>(); + + var userRoleViews = usersRepository.getListUserJabatan(Constants.JABATAN_DIREKTUR_KOMITE); + for (UserRoleView userRoleView : userRoleViews) { + UserApprovalResponse userApprovalResponse = UserApprovalResponse.builder() + .id(userRoleView.getId()) + .nama(userRoleView.getNama() + "-" + userRoleView.getJabatan()) + .build(); + userApprovalResponseList.add(userApprovalResponse); + } + + return GetListUserApprovalResponse.builder() + .data(userApprovalResponseList) + .build(); + } +} diff --git a/src/main/java/com/iconplus/smartproc/service/approval/GetListUserVpService.java b/src/main/java/com/iconplus/smartproc/service/approval/GetListUserVpService.java new file mode 100644 index 0000000..a046877 --- /dev/null +++ b/src/main/java/com/iconplus/smartproc/service/approval/GetListUserVpService.java @@ -0,0 +1,41 @@ +package com.iconplus.smartproc.service.approval; + +import com.iconplus.smartproc.helper.model.EmptyRequest; +import com.iconplus.smartproc.helper.service.BaseService; +import com.iconplus.smartproc.model.projection.UserRoleView; +import com.iconplus.smartproc.model.response.GetListUserApprovalResponse; +import com.iconplus.smartproc.model.response.UserApprovalResponse; +import com.iconplus.smartproc.repository.UsersRepository; +import com.iconplus.smartproc.util.Constants; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.List; + +@Service +public class GetListUserVpService implements BaseService { + + private UsersRepository usersRepository; + public GetListUserVpService(UsersRepository usersRepository) { + this.usersRepository = usersRepository; + } + + @Override + public GetListUserApprovalResponse execute(EmptyRequest input) { + + List userApprovalResponseList = new ArrayList<>(); + + var userRoleViews = usersRepository.getListUserJabatan(Constants.JABATAN_VP); + for (UserRoleView userRoleView : userRoleViews) { + UserApprovalResponse userApprovalResponse = UserApprovalResponse.builder() + .id(userRoleView.getId()) + .nama(userRoleView.getNama() + "-" + userRoleView.getJabatan()) + .build(); + userApprovalResponseList.add(userApprovalResponse); + } + + return GetListUserApprovalResponse.builder() + .data(userApprovalResponseList) + .build(); + } +} diff --git a/src/main/java/com/iconplus/smartproc/service/drp/GetDrpService.java b/src/main/java/com/iconplus/smartproc/service/drp/GetDrpService.java index 92bea46..4ab2f0c 100644 --- a/src/main/java/com/iconplus/smartproc/service/drp/GetDrpService.java +++ b/src/main/java/com/iconplus/smartproc/service/drp/GetDrpService.java @@ -7,7 +7,6 @@ import com.iconplus.smartproc.model.entity.DrpPengadaanDokumen; import com.iconplus.smartproc.model.request.DrpRequest; import com.iconplus.smartproc.model.response.DrpDokumenResponse; import com.iconplus.smartproc.model.response.DrpPengadaanDokumenResponse; -import com.iconplus.smartproc.model.response.DrpPengadaanResponse; import com.iconplus.smartproc.model.response.DrpResponse; import com.iconplus.smartproc.repository.DrpDokumenRepository; import com.iconplus.smartproc.repository.DrpPengadaanDokumenRepository; diff --git a/src/main/java/com/iconplus/smartproc/util/Constants.java b/src/main/java/com/iconplus/smartproc/util/Constants.java index 791ee7b..fc47db4 100644 --- a/src/main/java/com/iconplus/smartproc/util/Constants.java +++ b/src/main/java/com/iconplus/smartproc/util/Constants.java @@ -76,5 +76,7 @@ public class Constants { public static final String INVALID_KEY_EXCEPTION = "InvalidKeyException : "; public static final String ILEGAL_BLOCK_SIZE_EXCEPTION = "IllegalBlockSizeException : "; public static final String BAD_PADDING_EXCEPTION = "BadPaddingException : "; + public static final String JABATAN_VP = "%VP%"; + public static final String JABATAN_DIREKTUR_KOMITE = "%DIR%"; }