From 4877b84de0645fdb87d7e79f345a24721bd48312 Mon Sep 17 00:00:00 2001 From: dirgantarasiahaan Date: Tue, 6 Jun 2023 09:31:11 +0700 Subject: [PATCH] add rks isi --- .../controller/RksDaftarIsiController.java | 69 +++++++++++--- .../smartproc/model/entity/RksIsi.java | 6 ++ .../model/request/RksIsiRequest.java | 2 + .../model/response/RksIsiResponse.java | 1 + .../repository/RksDaftarIsiRepository.java | 2 + .../repository/RksIsiRepository.java | 15 +++ .../smartproc/service/drp/GetDrpService.java | 2 + .../rksdaftarisi/DeleteRksIsiService.java | 33 +++++++ .../rksdaftarisi/GetListRksParentService.java | 41 +++++++++ .../rksdaftarisi/PostCreateRksIsiService.java | 92 +++++++++++++++++++ .../rksdaftarisi/PutEditRksIsiService.java | 48 ++++++++++ 11 files changed, 297 insertions(+), 14 deletions(-) create mode 100644 src/main/java/com/iconplus/smartproc/service/rksdaftarisi/DeleteRksIsiService.java create mode 100644 src/main/java/com/iconplus/smartproc/service/rksdaftarisi/GetListRksParentService.java create mode 100644 src/main/java/com/iconplus/smartproc/service/rksdaftarisi/PostCreateRksIsiService.java create mode 100644 src/main/java/com/iconplus/smartproc/service/rksdaftarisi/PutEditRksIsiService.java diff --git a/src/main/java/com/iconplus/smartproc/controller/RksDaftarIsiController.java b/src/main/java/com/iconplus/smartproc/controller/RksDaftarIsiController.java index 4542f74..cb92d34 100644 --- a/src/main/java/com/iconplus/smartproc/controller/RksDaftarIsiController.java +++ b/src/main/java/com/iconplus/smartproc/controller/RksDaftarIsiController.java @@ -19,16 +19,28 @@ public class RksDaftarIsiController { private final GetListRksIsiService getListRksIsiService; private final DeleteRksDaftarIsiService deleteRksDaftarIsiService; private final PutUpdateRksDaftarIsiService putUpdateRksDaftarIsiService; + private final GetListRksParentService getListRksParentService; + private final PostCreateRksIsiService postCreateRksIsiService; + private final DeleteRksIsiService deleteRksIsiService; + private final PutEditRksIsiService putEditRksIsiService; public RksDaftarIsiController(GetListRksDaftarIsiService getListRksDaftarIsiService, PostCreateRksDaftarIsiService postCreateRksDaftarIsiService, GetListRksIsiService getListRksIsiService, DeleteRksDaftarIsiService deleteRksDaftarIsiService, - PutUpdateRksDaftarIsiService putUpdateRksDaftarIsiService) { + PutUpdateRksDaftarIsiService putUpdateRksDaftarIsiService, + GetListRksParentService getListRksParentService, + PostCreateRksIsiService postCreateRksIsiService, + DeleteRksIsiService deleteRksIsiService, + PutEditRksIsiService putEditRksIsiService) { this.getListRksDaftarIsiService = getListRksDaftarIsiService; this.postCreateRksDaftarIsiService = postCreateRksDaftarIsiService; this.getListRksIsiService = getListRksIsiService; this.deleteRksDaftarIsiService = deleteRksDaftarIsiService; this.putUpdateRksDaftarIsiService = putUpdateRksDaftarIsiService; + this.getListRksParentService = getListRksParentService; + this.postCreateRksIsiService = postCreateRksIsiService; + this.deleteRksIsiService = deleteRksIsiService; + this.putEditRksIsiService = putEditRksIsiService; } @@ -50,19 +62,6 @@ public class RksDaftarIsiController { return postCreateRksDaftarIsiService.execute(rksDaftarIsiRequest); } - @GetMapping("/{id}/isi") - public ListRksIsiResponse getListRksIsi(@PathVariable(name = "id") Long id, - @RequestParam(name = "page", defaultValue = "1") Integer page, - @RequestParam(name = "size", defaultValue = "5") Integer size) { - - Pageable pageable = PageRequest.of((page - 1), size); - RksIsiRequest rksIsiRequest = RksIsiRequest.builder() - .rksDaftarIsiId(id) - .pageable(pageable) - .build(); - return getListRksIsiService.execute(rksIsiRequest); - } - @PutMapping("/{id}") public RksDaftarIsiResponse editRksDaftarIsi(@PathVariable(name = "id") Long id, @RequestBody RksDaftarIsiRequest rksDaftarIsiRequest) { @@ -78,4 +77,46 @@ public class RksDaftarIsiController { } +// perlu enhance + @GetMapping("/{id}/isi") + public ListRksIsiResponse getListRksIsi(@PathVariable(name = "id") Long id, + @RequestParam(name = "page", defaultValue = "1") Integer page, + @RequestParam(name = "size", defaultValue = "5") Integer size) { + + Pageable pageable = PageRequest.of((page - 1), size); + RksIsiRequest rksIsiRequest = RksIsiRequest.builder() + .rksDaftarIsiId(id) + .pageable(pageable) + .build(); + return getListRksIsiService.execute(rksIsiRequest); + } + + @GetMapping("/{id}/parent") + public ListRksIsiResponse getParentRksIsi(@PathVariable(name = "id") Long id) { + return getListRksParentService.execute(RksIsiRequest.builder() + .rksDaftarIsiId(id) + .build()); + } + + @PostMapping("/{id}/isi") + public RksIsiResponse createRksIsi(@PathVariable(name = "id") Long id, + @RequestBody RksIsiRequest rksIsiRequest) { + rksIsiRequest.setRksDaftarIsiId(id); + return postCreateRksIsiService.execute(rksIsiRequest); + } + + @PutMapping("/isi/{id}") + public RksIsiResponse editRksIsi(@PathVariable(name = "id") Long id, + @RequestBody RksIsiRequest rksIsiRequest) { + rksIsiRequest.setId(id); + return putEditRksIsiService.execute(rksIsiRequest); + } + + @DeleteMapping("/isi/{id}") + public EmptyResponse deleteRksIsi(@PathVariable(name = "id") Long id) { + return deleteRksIsiService.execute(RksIsiRequest.builder() + .id(id) + .build()); + } + } diff --git a/src/main/java/com/iconplus/smartproc/model/entity/RksIsi.java b/src/main/java/com/iconplus/smartproc/model/entity/RksIsi.java index 0b64b47..9a466c1 100644 --- a/src/main/java/com/iconplus/smartproc/model/entity/RksIsi.java +++ b/src/main/java/com/iconplus/smartproc/model/entity/RksIsi.java @@ -31,12 +31,18 @@ public class RksIsi extends BaseEntity { @Column(name = "parent_id") private Integer parentId; + @Column(name = "parent") + private String parent; + @Column(name = "nama") private String nama; @Column(name = "bab") private String bab; + @Column(name = "kelompok") + private String kelompok; + @Column(name = "sub_bab") private String subBab; diff --git a/src/main/java/com/iconplus/smartproc/model/request/RksIsiRequest.java b/src/main/java/com/iconplus/smartproc/model/request/RksIsiRequest.java index ae8cf4d..2928cb4 100644 --- a/src/main/java/com/iconplus/smartproc/model/request/RksIsiRequest.java +++ b/src/main/java/com/iconplus/smartproc/model/request/RksIsiRequest.java @@ -23,9 +23,11 @@ public class RksIsiRequest extends BaseRequest { private Long rksDaftarIsiId; private String nomor; private Integer parentId; + private String parent; private String nama; private String bab; private String subBab; + private String kelompok; private String urutan; private Boolean isKontrak; private Boolean isActive; diff --git a/src/main/java/com/iconplus/smartproc/model/response/RksIsiResponse.java b/src/main/java/com/iconplus/smartproc/model/response/RksIsiResponse.java index db72bd6..f1ad4e6 100644 --- a/src/main/java/com/iconplus/smartproc/model/response/RksIsiResponse.java +++ b/src/main/java/com/iconplus/smartproc/model/response/RksIsiResponse.java @@ -15,6 +15,7 @@ public class RksIsiResponse extends BaseResponse { private Long rksDaftarIsiId; private String nomor; private Integer parentId; + private String parent; private String nama; private String bab; private String subBab; diff --git a/src/main/java/com/iconplus/smartproc/repository/RksDaftarIsiRepository.java b/src/main/java/com/iconplus/smartproc/repository/RksDaftarIsiRepository.java index 8c57c20..66c5e43 100644 --- a/src/main/java/com/iconplus/smartproc/repository/RksDaftarIsiRepository.java +++ b/src/main/java/com/iconplus/smartproc/repository/RksDaftarIsiRepository.java @@ -1,6 +1,7 @@ package com.iconplus.smartproc.repository; import com.iconplus.smartproc.model.entity.RksDaftarIsi; +import com.iconplus.smartproc.model.entity.RksIsi; import com.iconplus.smartproc.model.projection.RksDaftarIsiView; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; @@ -8,6 +9,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 diff --git a/src/main/java/com/iconplus/smartproc/repository/RksIsiRepository.java b/src/main/java/com/iconplus/smartproc/repository/RksIsiRepository.java index 7e06351..21ba256 100644 --- a/src/main/java/com/iconplus/smartproc/repository/RksIsiRepository.java +++ b/src/main/java/com/iconplus/smartproc/repository/RksIsiRepository.java @@ -9,11 +9,26 @@ import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; import org.springframework.stereotype.Repository; +import java.util.List; +import java.util.Optional; + @Repository public interface RksIsiRepository extends JpaRepository { Page findByRksDaftarIsiIdAndIsDeleteFalse(Long rksDaftarIsiId, Pageable pageable); + Optional findByRksDaftarIsiIdAndNamaAndIsDeleteFalse(Long rksDaftarIsiId, String nama); + + Optional findByRksDaftarIsiIdAndBabAndIsDeleteFalse(Long rksDaftarIsiId, String bab); + + Optional findByRksDaftarIsiIdAndSubBabAndIsDeleteFalse(Long rksDaftarIsiId, String subBab); + + Optional findByRksDaftarIsiIdAndKelompokAndIsDeleteFalse(Long rksDaftarIsiId, String kelompok); + + Optional findByIdAndIsDeleteFalse(Long id); + + List findByRksDaftarIsiIdAndIsDeleteFalse(Long rksDaftarIsiId); + @Modifying @Query(value = "update RksIsi ri " + "set ri.isDelete = true " + 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 9045888..2e08c57 100644 --- a/src/main/java/com/iconplus/smartproc/service/drp/GetDrpService.java +++ b/src/main/java/com/iconplus/smartproc/service/drp/GetDrpService.java @@ -65,6 +65,7 @@ public class GetDrpService implements BaseService { .drpId(drpDokumen.getDrpId()) .jenisDokumenId(drpDokumen.getJenisDokumenId()) .filename(drpDokumen.getFilename()) + .keterangan(drpDokumen.getKeterangan()) .build(); drpDokumenResponseList.add(drpDokumenResponse); } else { @@ -73,6 +74,7 @@ public class GetDrpService implements BaseService { .drpId(drpDokumen.getDrpId()) .jenisDokumenId(drpDokumen.getJenisDokumenId()) .filename(drpDokumen.getFilename()) + .keterangan(drpDokumen.getKeterangan()) .build(); drpDokumenPendukungList.add(drpDokumenResponse); } diff --git a/src/main/java/com/iconplus/smartproc/service/rksdaftarisi/DeleteRksIsiService.java b/src/main/java/com/iconplus/smartproc/service/rksdaftarisi/DeleteRksIsiService.java new file mode 100644 index 0000000..4a569bc --- /dev/null +++ b/src/main/java/com/iconplus/smartproc/service/rksdaftarisi/DeleteRksIsiService.java @@ -0,0 +1,33 @@ +package com.iconplus.smartproc.service.rksdaftarisi; + +import com.iconplus.smartproc.exception.BusinessException; +import com.iconplus.smartproc.helper.model.EmptyResponse; +import com.iconplus.smartproc.helper.service.BaseService; +import com.iconplus.smartproc.model.request.RksIsiRequest; +import com.iconplus.smartproc.repository.RksIsiRepository; +import com.iconplus.smartproc.util.Constants; +import org.springframework.stereotype.Service; + +@Service +public class DeleteRksIsiService implements BaseService { + + private final RksIsiRepository rksIsiRepository; + public DeleteRksIsiService(RksIsiRepository rksIsiRepository) { + this.rksIsiRepository = rksIsiRepository; + } + + @Override + public EmptyResponse execute(RksIsiRequest input) { + + var rksIsi = rksIsiRepository.findByIdAndIsDeleteFalse(input.getId()) + .orElseThrow(() -> new BusinessException( + Constants.ERR_CODE_10001, + Constants.ERR_TTL_10001, + String.format(Constants.ERR_MSG_10001, "RKS Isi", input.getId()) + )); + + rksIsi.setIsDelete(true); + rksIsiRepository.save(rksIsi); + return new EmptyResponse(); + } +} diff --git a/src/main/java/com/iconplus/smartproc/service/rksdaftarisi/GetListRksParentService.java b/src/main/java/com/iconplus/smartproc/service/rksdaftarisi/GetListRksParentService.java new file mode 100644 index 0000000..ecdaaaf --- /dev/null +++ b/src/main/java/com/iconplus/smartproc/service/rksdaftarisi/GetListRksParentService.java @@ -0,0 +1,41 @@ +package com.iconplus.smartproc.service.rksdaftarisi; + +import com.iconplus.smartproc.helper.service.BaseService; +import com.iconplus.smartproc.model.entity.RksIsi; +import com.iconplus.smartproc.model.request.RksIsiRequest; +import com.iconplus.smartproc.model.response.ListRksIsiResponse; +import com.iconplus.smartproc.model.response.RksIsiResponse; +import com.iconplus.smartproc.repository.RksDaftarIsiRepository; +import com.iconplus.smartproc.repository.RksIsiRepository; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.List; + +@Service +public class GetListRksParentService implements BaseService { + + private final RksIsiRepository rksIsiRepository; + public GetListRksParentService(RksIsiRepository rksIsiRepository) { + this.rksIsiRepository = rksIsiRepository; + } + + @Override + public ListRksIsiResponse execute(RksIsiRequest input) { + + List rksIsiResponseList = new ArrayList<>(); + var rksIsiList = rksIsiRepository.findByRksDaftarIsiIdAndIsDeleteFalse(input.getRksDaftarIsiId()); + + for (RksIsi rksIsi : rksIsiList) { + RksIsiResponse rksIsiResponse = RksIsiResponse.builder() + .id(rksIsi.getId()) + .parent(rksIsi.getNama()) + .build(); + rksIsiResponseList.add(rksIsiResponse); + } + + return ListRksIsiResponse.builder() + .data(rksIsiResponseList) + .build(); + } +} diff --git a/src/main/java/com/iconplus/smartproc/service/rksdaftarisi/PostCreateRksIsiService.java b/src/main/java/com/iconplus/smartproc/service/rksdaftarisi/PostCreateRksIsiService.java new file mode 100644 index 0000000..567e6fb --- /dev/null +++ b/src/main/java/com/iconplus/smartproc/service/rksdaftarisi/PostCreateRksIsiService.java @@ -0,0 +1,92 @@ +package com.iconplus.smartproc.service.rksdaftarisi; + +import com.iconplus.smartproc.exception.BusinessException; +import com.iconplus.smartproc.helper.service.BaseService; +import com.iconplus.smartproc.model.entity.RksIsi; +import com.iconplus.smartproc.model.request.RksIsiRequest; +import com.iconplus.smartproc.model.response.RksIsiResponse; +import com.iconplus.smartproc.repository.RksIsiRepository; +import com.iconplus.smartproc.util.Constants; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Service; + +@Service +public class PostCreateRksIsiService implements BaseService { + + private final RksIsiRepository rksIsiRepository; + public PostCreateRksIsiService(RksIsiRepository rksIsiRepository) { + this.rksIsiRepository = rksIsiRepository; + } + + @Override + public RksIsiResponse execute(RksIsiRequest input) { + + RksIsi rksIsi = RksIsi.builder().build(); + validasiRequest(input, rksIsi); + + rksIsi.setRksDaftarIsiId(input.getRksDaftarIsiId()); + rksIsi.setNomor(input.getNomor()); + rksIsi.setUrutan(input.getUrutan()); + rksIsi.setIsKontrak(input.getIsKontrak()); + rksIsi.setIsDelete(false); + var result = rksIsiRepository.save(rksIsi); + + return RksIsiResponse.builder() + .id(result.getId()) + .build(); + } + + private void validasiRequest(RksIsiRequest input, RksIsi rksIsi) { + if (StringUtils.isNotBlank(input.getNama())) { + var optionalRksIsi = rksIsiRepository.findByRksDaftarIsiIdAndNamaAndIsDeleteFalse(input.getRksDaftarIsiId(), input.getNama()); + if (optionalRksIsi.isPresent()) { + throw new BusinessException( + Constants.ERR_CODE_10002, + Constants.ERR_TTL_10002, + String.format(Constants.ERR_MSG_10002, "Nama Buku", input.getNama())); + } + rksIsi.setNama(input.getNama()); + return; + } + + if (StringUtils.isNotBlank(input.getBab())) { + var optionalRksIsi = rksIsiRepository.findByRksDaftarIsiIdAndBabAndIsDeleteFalse(input.getRksDaftarIsiId(), input.getBab()); + if (optionalRksIsi.isPresent()) { + throw new BusinessException( + Constants.ERR_CODE_10002, + Constants.ERR_TTL_10002, + String.format(Constants.ERR_MSG_10002, "Bab", input.getBab())); + } + rksIsi.setParent(input.getParent()); + rksIsi.setBab(input.getBab()); + return; + } + + if (StringUtils.isNotBlank(input.getSubBab())) { + + var optionalRksIsi = rksIsiRepository.findByRksDaftarIsiIdAndSubBabAndIsDeleteFalse(input.getRksDaftarIsiId(), input.getSubBab()); + if (optionalRksIsi.isPresent()) { + throw new BusinessException( + Constants.ERR_CODE_10002, + Constants.ERR_TTL_10002, + String.format(Constants.ERR_MSG_10002, "Sub Bab", input.getSubBab())); + } + rksIsi.setParent(input.getParent()); + rksIsi.setSubBab(input.getSubBab()); + return; + } + + if (StringUtils.isNotBlank(input.getKelompok())) { + + var optionalRksIsi = rksIsiRepository.findByRksDaftarIsiIdAndKelompokAndIsDeleteFalse(input.getRksDaftarIsiId(), input.getKelompok()); + if (optionalRksIsi.isPresent()) { + throw new BusinessException( + Constants.ERR_CODE_10002, + Constants.ERR_TTL_10002, + String.format(Constants.ERR_MSG_10002, "Sub Bab", input.getSubBab())); + } + rksIsi.setParent(input.getParent()); + rksIsi.setKelompok(input.getSubBab()); + } + } +} diff --git a/src/main/java/com/iconplus/smartproc/service/rksdaftarisi/PutEditRksIsiService.java b/src/main/java/com/iconplus/smartproc/service/rksdaftarisi/PutEditRksIsiService.java new file mode 100644 index 0000000..38a01a7 --- /dev/null +++ b/src/main/java/com/iconplus/smartproc/service/rksdaftarisi/PutEditRksIsiService.java @@ -0,0 +1,48 @@ +package com.iconplus.smartproc.service.rksdaftarisi; + +import com.iconplus.smartproc.exception.BusinessException; +import com.iconplus.smartproc.helper.service.BaseService; +import com.iconplus.smartproc.model.request.RksIsiRequest; +import com.iconplus.smartproc.model.response.RksIsiResponse; +import com.iconplus.smartproc.repository.RksIsiRepository; +import com.iconplus.smartproc.util.Constants; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Service; + +@Service +public class PutEditRksIsiService implements BaseService { + + private final RksIsiRepository rksIsiRepository; + public PutEditRksIsiService(RksIsiRepository rksIsiRepository) { + this.rksIsiRepository = rksIsiRepository; + } + + @Override + public RksIsiResponse execute(RksIsiRequest input) { + + var rksIsi = rksIsiRepository.findByIdAndIsDeleteFalse(input.getId()) + .orElseThrow(() -> new BusinessException( + Constants.ERR_CODE_10001, + Constants.ERR_TTL_10001, + String.format(Constants.ERR_MSG_10001, "RKS Isi", input.getId()) + )); + + if (StringUtils.isNotBlank(input.getNama())) { + rksIsi.setNama(input.getNama()); + } else if (StringUtils.isNotBlank(input.getBab())) { + rksIsi.setBab(input.getBab()); + } else if (StringUtils.isNotBlank(input.getSubBab())) { + rksIsi.setSubBab(input.getSubBab()); + } else { + rksIsi.setKelompok(input.getKelompok()); + } + + rksIsi.setUrutan(input.getUrutan()); + rksIsi.setIsKontrak(input.getIsKontrak()); + rksIsiRepository.save(rksIsi); + + return RksIsiResponse.builder() + .id(rksIsi.getId()) + .build(); + } +}