From 77dfe44ee6bda2df7dbdc41f0f02ce2a2fedd4cd Mon Sep 17 00:00:00 2001 From: dirgantarasiahaan Date: Thu, 25 May 2023 01:52:31 +0700 Subject: [PATCH] unitinisiator --- .../controller/UnitInisiatorController.java | 104 +++++++++--------- .../model/projection/UnitInisiatorView.java | 20 ++++ .../model/request/UnitInisiatorRequest.java | 22 ++++ .../GetListUnitInisiatorResponse.java | 21 ++++ .../model/response/UnitInisiatorResponse.java | 19 ++++ .../repository/UnitInisiatorRepository.java | 22 +++- .../sumberdana/GetListSumberDanaService.java | 9 ++ .../DeleteUnitInisiatorService.java | 27 +++++ .../GetListUnitInisiatorService.java | 60 ++++++++++ .../GetUnitInisiatorService.java | 32 ++++++ .../PostCreateUnitInisiatorService.java | 39 +++++++ .../PutUpdateUnitInisiatorService.java | 32 ++++++ 12 files changed, 355 insertions(+), 52 deletions(-) create mode 100644 src/main/java/com/iconplus/smartproc/model/projection/UnitInisiatorView.java create mode 100644 src/main/java/com/iconplus/smartproc/model/request/UnitInisiatorRequest.java create mode 100644 src/main/java/com/iconplus/smartproc/model/response/GetListUnitInisiatorResponse.java create mode 100644 src/main/java/com/iconplus/smartproc/model/response/UnitInisiatorResponse.java create mode 100644 src/main/java/com/iconplus/smartproc/service/unitinisiator/DeleteUnitInisiatorService.java create mode 100644 src/main/java/com/iconplus/smartproc/service/unitinisiator/GetListUnitInisiatorService.java create mode 100644 src/main/java/com/iconplus/smartproc/service/unitinisiator/GetUnitInisiatorService.java create mode 100644 src/main/java/com/iconplus/smartproc/service/unitinisiator/PostCreateUnitInisiatorService.java create mode 100644 src/main/java/com/iconplus/smartproc/service/unitinisiator/PutUpdateUnitInisiatorService.java diff --git a/src/main/java/com/iconplus/smartproc/controller/UnitInisiatorController.java b/src/main/java/com/iconplus/smartproc/controller/UnitInisiatorController.java index 07edb83..74461ed 100644 --- a/src/main/java/com/iconplus/smartproc/controller/UnitInisiatorController.java +++ b/src/main/java/com/iconplus/smartproc/controller/UnitInisiatorController.java @@ -1,74 +1,76 @@ package com.iconplus.smartproc.controller; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.http.ResponseEntity; -import org.springframework.web.bind.annotation.CrossOrigin; -import org.springframework.web.bind.annotation.DeleteMapping; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.PutMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -import com.iconplus.smartproc.exception.ResourceNotFoundException; -import com.iconplus.smartproc.model.entity.UnitInisiator; -import com.iconplus.smartproc.repository.UnitInisiatorRepository; +import com.iconplus.smartproc.helper.model.EmptyResponse; +import com.iconplus.smartproc.model.request.UnitInisiatorRequest; +import com.iconplus.smartproc.model.response.GetListUnitInisiatorResponse; +import com.iconplus.smartproc.model.response.UnitInisiatorResponse; +import com.iconplus.smartproc.service.unitinisiator.*; +import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Pageable; +import org.springframework.web.bind.annotation.*; @CrossOrigin(origins = "http://localhost:8080", allowCredentials = "true") @RestController @RequestMapping("/api/unitinisiator") public class UnitInisiatorController { - @Autowired - private UnitInisiatorRepository unitinisiatorRepository; - //get all data + private final GetUnitInisiatorService getUnitInisiatorService; + private final GetListUnitInisiatorService getListUnitInisiatorService; + private final PostCreateUnitInisiatorService postCreateUnitInisiatorService; + private final DeleteUnitInisiatorService deleteUnitInisiatorService; + private final PutUpdateUnitInisiatorService putUpdateUnitInisiatorService; + + public UnitInisiatorController(GetUnitInisiatorService getUnitInisiatorService, + GetListUnitInisiatorService getListUnitInisiatorService, + PostCreateUnitInisiatorService postCreateUnitInisiatorService, + DeleteUnitInisiatorService deleteUnitInisiatorService, + PutUpdateUnitInisiatorService putUpdateUnitInisiatorService) { + this.getUnitInisiatorService = getUnitInisiatorService; + this.getListUnitInisiatorService = getListUnitInisiatorService; + this.postCreateUnitInisiatorService = postCreateUnitInisiatorService; + this.deleteUnitInisiatorService = deleteUnitInisiatorService; + this.putUpdateUnitInisiatorService = putUpdateUnitInisiatorService; + + } + + @GetMapping - public List getAllUnitinisiator(){ - return unitinisiatorRepository.findAll(); + public GetListUnitInisiatorResponse getListUnitInisiator(@RequestParam(name = "search", required = false) String search, + @RequestParam(name = "page", defaultValue = "1") Integer page, + @RequestParam(name = "size", defaultValue = "5") Integer size){ + + Pageable pageable = PageRequest.of((page - 1), size); + UnitInisiatorRequest unitInisiatorRequest = UnitInisiatorRequest.builder() + .search(search) + .pageable(pageable) + .build(); + + return getListUnitInisiatorService.execute(unitInisiatorRequest); } - // create @PostMapping - public UnitInisiator createUnitinisiator(@RequestBody UnitInisiator unitinisiator) { - return unitinisiatorRepository.save(unitinisiator); + public UnitInisiatorResponse createUnitInisiator(@RequestBody UnitInisiatorRequest request) { + return postCreateUnitInisiatorService.execute(request); } - // get unitinisiator by id rest api @GetMapping("/{id}") - public ResponseEntity getUnitinisiatorById(@PathVariable Long id) { - UnitInisiator unitinisiator = unitinisiatorRepository.findById(id) - .orElseThrow(() -> new ResourceNotFoundException("Unitinisiator not exist with id :" + id)); - return ResponseEntity.ok(unitinisiator); + public UnitInisiatorResponse getUnitInisiator(@PathVariable Long id) { + return getUnitInisiatorService.execute(UnitInisiatorRequest.builder() + .id(id) + .build()); } - // update jenispengadaan rest api @PutMapping("/{id}") - public ResponseEntity updateUnitinisiator(@PathVariable Long id, @RequestBody UnitInisiator unitInisiatorDetails){ - UnitInisiator unitinisiator = unitinisiatorRepository.findById(id) - .orElseThrow(() -> new ResourceNotFoundException("Unitinisiator not exist with id :" + id)); - - unitinisiator.setUnitInisiator(unitInisiatorDetails.getUnitInisiator()); - unitinisiator.setKeterangan(unitInisiatorDetails.getKeterangan()); - - UnitInisiator updatedUnitInisiator = unitinisiatorRepository.save(unitinisiator); - return ResponseEntity.ok(updatedUnitInisiator); + public UnitInisiatorResponse updateUnitInisiator(@PathVariable Long id, @RequestBody UnitInisiatorRequest request){ + request.setId(id); + return putUpdateUnitInisiatorService.execute(request); } - // delete jenispengadaan rest api @DeleteMapping("/{id}") - public ResponseEntity> deleteUnitinisiator(@PathVariable Long id){ - UnitInisiator unitinisiator = unitinisiatorRepository.findById(id) - .orElseThrow(() -> new ResourceNotFoundException("Unit inisiator not exist with id :" + id)); - - unitinisiatorRepository.delete(unitinisiator); - Map response = new HashMap<>(); - response.put("deleted", Boolean.TRUE); - return ResponseEntity.ok(response); + public EmptyResponse deleteUnitInisiator(@PathVariable Long id){ + return deleteUnitInisiatorService.execute(UnitInisiatorRequest.builder() + .id(id) + .build()); } + } diff --git a/src/main/java/com/iconplus/smartproc/model/projection/UnitInisiatorView.java b/src/main/java/com/iconplus/smartproc/model/projection/UnitInisiatorView.java new file mode 100644 index 0000000..4928f5d --- /dev/null +++ b/src/main/java/com/iconplus/smartproc/model/projection/UnitInisiatorView.java @@ -0,0 +1,20 @@ +package com.iconplus.smartproc.model.projection; + +public interface UnitInisiatorView { + + Long getId(); + void setId(Long id); + + String getUnitInisiator(); + void setUnitInisiator(String unitInisiator); + + String getKeterangan(); + void setKeterangan(String keterangan); + + Boolean getIsActive(); + void setIsActive(Boolean isActive); + + Boolean getIsDelete(); + void setIsDelete(Boolean isDelete); + +} diff --git a/src/main/java/com/iconplus/smartproc/model/request/UnitInisiatorRequest.java b/src/main/java/com/iconplus/smartproc/model/request/UnitInisiatorRequest.java new file mode 100644 index 0000000..a88ee4d --- /dev/null +++ b/src/main/java/com/iconplus/smartproc/model/request/UnitInisiatorRequest.java @@ -0,0 +1,22 @@ +package com.iconplus.smartproc.model.request; + +import com.iconplus.smartproc.helper.base.BaseRequest; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; +import org.springframework.data.domain.Pageable; + +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class UnitInisiatorRequest extends BaseRequest { + + private Long id; + private String unitInisiator; + private String keterangan; + private Boolean isActive; + private String search; + private transient Pageable pageable; +} diff --git a/src/main/java/com/iconplus/smartproc/model/response/GetListUnitInisiatorResponse.java b/src/main/java/com/iconplus/smartproc/model/response/GetListUnitInisiatorResponse.java new file mode 100644 index 0000000..f765075 --- /dev/null +++ b/src/main/java/com/iconplus/smartproc/model/response/GetListUnitInisiatorResponse.java @@ -0,0 +1,21 @@ +package com.iconplus.smartproc.model.response; + +import com.iconplus.smartproc.helper.base.BaseResponse; +import com.iconplus.smartproc.helper.model.Pagination; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class GetListUnitInisiatorResponse extends BaseResponse { + + private List data; + private Pagination pagination; + +} diff --git a/src/main/java/com/iconplus/smartproc/model/response/UnitInisiatorResponse.java b/src/main/java/com/iconplus/smartproc/model/response/UnitInisiatorResponse.java new file mode 100644 index 0000000..4b722ef --- /dev/null +++ b/src/main/java/com/iconplus/smartproc/model/response/UnitInisiatorResponse.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; + +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class UnitInisiatorResponse extends BaseResponse { + private Long id; + private String unitInisiator; + private String keterangan; + private Boolean isActive; + private Boolean isDelete; +} diff --git a/src/main/java/com/iconplus/smartproc/repository/UnitInisiatorRepository.java b/src/main/java/com/iconplus/smartproc/repository/UnitInisiatorRepository.java index bf610f6..0670075 100644 --- a/src/main/java/com/iconplus/smartproc/repository/UnitInisiatorRepository.java +++ b/src/main/java/com/iconplus/smartproc/repository/UnitInisiatorRepository.java @@ -1,10 +1,30 @@ package com.iconplus.smartproc.repository; +import com.iconplus.smartproc.model.projection.UnitInisiatorView; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; import org.springframework.stereotype.Repository; import com.iconplus.smartproc.model.entity.UnitInisiator; +import java.util.Optional; + @Repository public interface UnitInisiatorRepository extends JpaRepository { - + + Optional findByIdAndIsDeleteFalse(Long id); + Optional findByUnitInisiatorAndIsDeleteFalse(String unitInisiator); + + @Query(value = "SELECT ui.id as id, " + + "ui.unitInisiator as unitInisiator, " + + "ui.keterangan as keterangan, " + + "ui.isActive as isActive " + + "FROM UnitInisiator ui " + + "WHERE ui.isDelete = false " + + "AND (:search = '' OR UPPER(ui.unitInisiator) like :search) " + + "ORDER BY ui.id") + Page getListUnitInisiator(String search, Pageable pageable); + + } diff --git a/src/main/java/com/iconplus/smartproc/service/sumberdana/GetListSumberDanaService.java b/src/main/java/com/iconplus/smartproc/service/sumberdana/GetListSumberDanaService.java index 10742bb..c9afe2c 100644 --- a/src/main/java/com/iconplus/smartproc/service/sumberdana/GetListSumberDanaService.java +++ b/src/main/java/com/iconplus/smartproc/service/sumberdana/GetListSumberDanaService.java @@ -3,10 +3,12 @@ package com.iconplus.smartproc.service.sumberdana; import com.iconplus.smartproc.helper.model.Pagination; import com.iconplus.smartproc.helper.service.BaseService; import com.iconplus.smartproc.model.projection.SumberDanaView; +import com.iconplus.smartproc.model.request.RolesRequest; import com.iconplus.smartproc.model.request.SumberDanaRequest; import com.iconplus.smartproc.model.response.GetListSumberDanaResponse; import com.iconplus.smartproc.model.response.SumberDanaResponse; import com.iconplus.smartproc.repository.SumberDanaRepository; +import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; import java.util.ArrayList; @@ -23,6 +25,7 @@ public class GetListSumberDanaService implements BaseService sumberDanaResponseList = new ArrayList<>(); var sumberDanaViews= sumberDanaRepository.getListSumberDana(input.getSearch(), input.getPageable()); for (SumberDanaView sumberDanaView : sumberDanaViews) { @@ -46,4 +49,10 @@ public class GetListSumberDanaService implements BaseService { + + private UnitInisiatorRepository unitInisiatorRepository; + + private DeleteUnitInisiatorService(UnitInisiatorRepository unitInisiatorRepository) { + this.unitInisiatorRepository = unitInisiatorRepository; + } + + @Override + public EmptyResponse execute(UnitInisiatorRequest input) { + + var unitInisiator = unitInisiatorRepository.findByIdAndIsDeleteFalse(input.getId()).orElseThrow(() -> new BusinessException("err", "err", "err")); + unitInisiator.setIsDelete(true); + unitInisiatorRepository.save(unitInisiator); + return new EmptyResponse(); + } +} diff --git a/src/main/java/com/iconplus/smartproc/service/unitinisiator/GetListUnitInisiatorService.java b/src/main/java/com/iconplus/smartproc/service/unitinisiator/GetListUnitInisiatorService.java new file mode 100644 index 0000000..5dde2dc --- /dev/null +++ b/src/main/java/com/iconplus/smartproc/service/unitinisiator/GetListUnitInisiatorService.java @@ -0,0 +1,60 @@ +package com.iconplus.smartproc.service.unitinisiator; + +import com.iconplus.smartproc.helper.model.Pagination; +import com.iconplus.smartproc.helper.service.BaseService; +import com.iconplus.smartproc.model.projection.UnitInisiatorView; +import com.iconplus.smartproc.model.request.UnitInisiatorRequest; +import com.iconplus.smartproc.model.response.GetListUnitInisiatorResponse; +import com.iconplus.smartproc.model.response.UnitInisiatorResponse; +import com.iconplus.smartproc.repository.UnitInisiatorRepository; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.List; + +@Service +public class GetListUnitInisiatorService implements BaseService { + + private UnitInisiatorRepository unitInisiatorRepository; + + private GetListUnitInisiatorService(UnitInisiatorRepository unitInisiatorRepository) { + this.unitInisiatorRepository = unitInisiatorRepository; + } + + @Override + public GetListUnitInisiatorResponse execute(UnitInisiatorRequest input) { + validateRequest(input); + List unitInisiatorResponseList = new ArrayList<>(); + var unitInisiatorViews = unitInisiatorRepository.getListUnitInisiator(input.getSearch(), input.getPageable()); + + for (UnitInisiatorView unitInisiatorView : unitInisiatorViews) { + UnitInisiatorResponse unitInisiatorResponse = UnitInisiatorResponse.builder() + .id(unitInisiatorView.getId()) + .unitInisiator(unitInisiatorView.getUnitInisiator()) + .keterangan(unitInisiatorView.getKeterangan()) + .isActive(unitInisiatorView.getIsActive()) + .isDelete(unitInisiatorView.getIsDelete()) + .build(); + unitInisiatorResponseList.add(unitInisiatorResponse); + } + + return GetListUnitInisiatorResponse.builder() + .data(unitInisiatorResponseList) + .pagination(Pagination.builder() + .pageSize(input.getPageable().getPageSize()) + .currentPage(input.getPageable().getPageNumber()) + .totalPages(unitInisiatorViews.getTotalPages()) + .totalRecords(unitInisiatorViews.getTotalElements()) + .isFirstPage(unitInisiatorViews.isFirst()) + .isLastPage(unitInisiatorViews.isLast()) + .build()) + .build(); + } + + private void validateRequest(UnitInisiatorRequest input) { + if (StringUtils.isNotBlank(input.getSearch())) { + input.setSearch('%'+ input.getSearch().toUpperCase()+'%'); + } + } +} diff --git a/src/main/java/com/iconplus/smartproc/service/unitinisiator/GetUnitInisiatorService.java b/src/main/java/com/iconplus/smartproc/service/unitinisiator/GetUnitInisiatorService.java new file mode 100644 index 0000000..6259640 --- /dev/null +++ b/src/main/java/com/iconplus/smartproc/service/unitinisiator/GetUnitInisiatorService.java @@ -0,0 +1,32 @@ +package com.iconplus.smartproc.service.unitinisiator; + +import com.iconplus.smartproc.exception.BusinessException; +import com.iconplus.smartproc.helper.service.BaseService; +import com.iconplus.smartproc.model.request.UnitInisiatorRequest; +import com.iconplus.smartproc.model.response.UnitInisiatorResponse; +import com.iconplus.smartproc.repository.UnitInisiatorRepository; +import org.springframework.stereotype.Service; + +@Service +public class GetUnitInisiatorService implements BaseService { + + private UnitInisiatorRepository unitInisiatorRepository; + + private GetUnitInisiatorService(UnitInisiatorRepository unitInisiatorRepository) { + this.unitInisiatorRepository = unitInisiatorRepository; + } + + @Override + public UnitInisiatorResponse execute(UnitInisiatorRequest input) { + + var unitInisiator = unitInisiatorRepository.findByIdAndIsDeleteFalse(input.getId()).orElseThrow(() -> new BusinessException("err", "err", "err")); + return UnitInisiatorResponse.builder() + .id(unitInisiator.getId()) + .unitInisiator(unitInisiator.getUnitInisiator()) + .keterangan(unitInisiator.getKeterangan()) + .isActive(unitInisiator.getIsActive()) + .isDelete(unitInisiator.getIsDelete()) + .build(); + + } +} diff --git a/src/main/java/com/iconplus/smartproc/service/unitinisiator/PostCreateUnitInisiatorService.java b/src/main/java/com/iconplus/smartproc/service/unitinisiator/PostCreateUnitInisiatorService.java new file mode 100644 index 0000000..3ef252e --- /dev/null +++ b/src/main/java/com/iconplus/smartproc/service/unitinisiator/PostCreateUnitInisiatorService.java @@ -0,0 +1,39 @@ +package com.iconplus.smartproc.service.unitinisiator; + +import com.iconplus.smartproc.exception.BusinessException; +import com.iconplus.smartproc.helper.service.BaseService; +import com.iconplus.smartproc.model.entity.UnitInisiator; +import com.iconplus.smartproc.model.request.UnitInisiatorRequest; +import com.iconplus.smartproc.model.response.UnitInisiatorResponse; +import com.iconplus.smartproc.repository.UnitInisiatorRepository; +import org.springframework.stereotype.Service; + +@Service +public class PostCreateUnitInisiatorService implements BaseService { + + private UnitInisiatorRepository unitInisiatorRepository; + private PostCreateUnitInisiatorService(UnitInisiatorRepository unitInisiatorRepository) { + this.unitInisiatorRepository = unitInisiatorRepository; + } + + @Override + public UnitInisiatorResponse execute(UnitInisiatorRequest input) { + + var unitInisiator = unitInisiatorRepository.findByUnitInisiatorAndIsDeleteFalse(input.getUnitInisiator()); + if (unitInisiator.isPresent()) { + throw new BusinessException("err", "err", "err"); + } + + UnitInisiator unitInisiatorEntity = UnitInisiator.builder() + .unitInisiator(input.getUnitInisiator()) + .keterangan(input.getKeterangan()) + .isActive(input.getIsActive()) + .isDelete(false) + .build(); + var result = unitInisiatorRepository.save(unitInisiatorEntity); + + return UnitInisiatorResponse.builder() + .id(result.getId()) + .build(); + } +} diff --git a/src/main/java/com/iconplus/smartproc/service/unitinisiator/PutUpdateUnitInisiatorService.java b/src/main/java/com/iconplus/smartproc/service/unitinisiator/PutUpdateUnitInisiatorService.java new file mode 100644 index 0000000..11fedc3 --- /dev/null +++ b/src/main/java/com/iconplus/smartproc/service/unitinisiator/PutUpdateUnitInisiatorService.java @@ -0,0 +1,32 @@ +package com.iconplus.smartproc.service.unitinisiator; + +import com.iconplus.smartproc.exception.BusinessException; +import com.iconplus.smartproc.helper.service.BaseService; +import com.iconplus.smartproc.model.request.UnitInisiatorRequest; +import com.iconplus.smartproc.model.response.UnitInisiatorResponse; +import com.iconplus.smartproc.repository.UnitInisiatorRepository; +import org.springframework.stereotype.Service; + +@Service +public class PutUpdateUnitInisiatorService implements BaseService { + + private UnitInisiatorRepository unitInisiatorRepository; + + private PutUpdateUnitInisiatorService(UnitInisiatorRepository unitInisiatorRepository) { + this.unitInisiatorRepository = unitInisiatorRepository; + } + + @Override + public UnitInisiatorResponse execute(UnitInisiatorRequest input) { + + var unitInisiator = unitInisiatorRepository.findByIdAndIsDeleteFalse(input.getId()).orElseThrow(() -> new BusinessException("err", "err", "err")); + unitInisiator.setUnitInisiator(input.getUnitInisiator()); + unitInisiator.setKeterangan(input.getKeterangan()); + unitInisiator.setIsActive(input.getIsActive()); + var result = unitInisiatorRepository.save(unitInisiator); + + return UnitInisiatorResponse.builder() + .id(result.getId()) + .build(); + } +}