From c781c36a5da51198e147e18dc7d580dbf73636aa Mon Sep 17 00:00:00 2001 From: Kevin Date: Thu, 25 May 2023 11:08:22 +0700 Subject: [PATCH] Test Java All --- .../controller/UnitInisiatorController.java | 120 ++++++++++-------- .../model/projection/UnitInisiatorView.java | 15 +++ .../model/request/UnitInisiatorRequest.java | 19 +++ .../GetListUnitInisiatorResponse.java | 20 +++ .../model/response/UnitInisiatorResponse.java | 21 +++ .../repository/UnitInisiatorRepository.java | 25 +++- .../DeleteUnitInisiatorService.java | 38 ++++++ .../GetListUnitInisiatorService.java | 60 +++++++++ .../GetUnitInisiatorByIdService.java | 43 +++++++ .../PostCreateUnitInisiatorService.java | 50 ++++++++ .../PutUpdateUnitInisiatorService.java | 45 +++++++ 11 files changed, 398 insertions(+), 58 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/GetUnitInisiatorByIdService.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..9a15fd7 100644 --- a/src/main/java/com/iconplus/smartproc/controller/UnitInisiatorController.java +++ b/src/main/java/com/iconplus/smartproc/controller/UnitInisiatorController.java @@ -1,74 +1,82 @@ 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.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.repository.UnitInisiatorRepository; +import com.iconplus.smartproc.service.unitinisiator.*; +import org.springframework.beans.factory.annotation.Autowired; +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 - @GetMapping - public List getAllUnitinisiator(){ - return unitinisiatorRepository.findAll(); - } + @Autowired + private UnitInisiatorRepository unitinisiatorRepository; - // create - @PostMapping - public UnitInisiator createUnitinisiator(@RequestBody UnitInisiator unitinisiator) { - return unitinisiatorRepository.save(unitinisiator); - } + private final GetListUnitInisiatorService getListUnitInisiatorService; + private final GetUnitInisiatorByIdService getUnitInisiatorByIdService; + private final PostCreateUnitInisiatorService postCreateUnitInisiatorService; + private final PutUpdateUnitInisiatorService putUpdateUnitInisiatorService; + private final DeleteUnitInisiatorService deleteUnitInisiatorService; - // 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 UnitInisiatorController(GetListUnitInisiatorService getListUnitInisiatorService, + GetUnitInisiatorByIdService getUnitInisiatorByIdService, + PostCreateUnitInisiatorService postCreateUnitInisiatorService, + PutUpdateUnitInisiatorService putUpdateUnitInisiatorService, + DeleteUnitInisiatorService deleteUnitInisiatorService) { + this.getListUnitInisiatorService = getListUnitInisiatorService; + this.getUnitInisiatorByIdService = getUnitInisiatorByIdService; + this.postCreateUnitInisiatorService = postCreateUnitInisiatorService; + this.putUpdateUnitInisiatorService = putUpdateUnitInisiatorService; + this.deleteUnitInisiatorService = deleteUnitInisiatorService; + } - // 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()); + @GetMapping + public GetListUnitInisiatorResponse getListUnitInisiator(@RequestParam(name = "search", required = false) String search, + @RequestParam(name = "page", defaultValue = "1") Integer page, + @RequestParam(name = "size", defaultValue = "5") Integer size){ - UnitInisiator updatedUnitInisiator = unitinisiatorRepository.save(unitinisiator); - return ResponseEntity.ok(updatedUnitInisiator); - } + Pageable pageable = PageRequest.of((page - 1), size); + UnitInisiatorRequest unitInisiatorRequest = UnitInisiatorRequest.builder() + .search(search) + .pageable(pageable) + .build(); - // 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)); + return getListUnitInisiatorService.execute(unitInisiatorRequest); + } - unitinisiatorRepository.delete(unitinisiator); - Map response = new HashMap<>(); - response.put("deleted", Boolean.TRUE); - return ResponseEntity.ok(response); - } + @PostMapping + public UnitInisiatorResponse createUnitInisiator(@RequestBody UnitInisiatorRequest unitInisiatorRequest) { + return postCreateUnitInisiatorService.execute(unitInisiatorRequest); + } + + @GetMapping("/{id}") + public UnitInisiatorResponse getUnitInisiatorById(@PathVariable Long id) { + return getUnitInisiatorByIdService.execute(UnitInisiatorRequest.builder() + .id(id) + .build()); + } + + + @PutMapping("/{id}") + public UnitInisiatorResponse updateUnitinisiator(@PathVariable Long id, + @RequestBody UnitInisiatorRequest unitInisiatorRequest){ + unitInisiatorRequest.setId(id); + return putUpdateUnitInisiatorService.execute(unitInisiatorRequest); + } + + @DeleteMapping("/{id}") + 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..b2e0780 --- /dev/null +++ b/src/main/java/com/iconplus/smartproc/model/projection/UnitInisiatorView.java @@ -0,0 +1,15 @@ +package com.iconplus.smartproc.model.projection; + +public interface UnitInisiatorView { + + Long getId(); + String getUnitInisiator(); + String getKeterangan(); + String getIsActive(); + Boolean getIsDelete(); + + void setId(Long id); + void setUnitInisiator(String unitInisiator); + void setKeterangan(String keterangan); + 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..7a71c02 --- /dev/null +++ b/src/main/java/com/iconplus/smartproc/model/request/UnitInisiatorRequest.java @@ -0,0 +1,19 @@ +package com.iconplus.smartproc.model.request; + +import com.iconplus.smartproc.helper.base.BaseRequest; +import lombok.Builder; +import lombok.Data; +import org.springframework.data.domain.Pageable; + +@Data +@Builder +public class UnitInisiatorRequest extends BaseRequest { + + private Long id; + private String unitInisiator; + private String keterangan; + private Boolean isActive; + private Boolean IsDelete; + 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..7d2cf14 --- /dev/null +++ b/src/main/java/com/iconplus/smartproc/model/response/GetListUnitInisiatorResponse.java @@ -0,0 +1,20 @@ +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 GetListJenisAnggaranResponse 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..40e6d8d --- /dev/null +++ b/src/main/java/com/iconplus/smartproc/model/response/UnitInisiatorResponse.java @@ -0,0 +1,21 @@ +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 +@NoArgsConstructor +@AllArgsConstructor +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..0f0f612 100644 --- a/src/main/java/com/iconplus/smartproc/repository/UnitInisiatorRepository.java +++ b/src/main/java/com/iconplus/smartproc/repository/UnitInisiatorRepository.java @@ -1,10 +1,31 @@ package com.iconplus.smartproc.repository; -import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.stereotype.Repository; import com.iconplus.smartproc.model.entity.UnitInisiator; +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 java.util.Optional; @Repository public interface UnitInisiatorRepository extends JpaRepository { + + @Query(value = "SELECT ja.id as id, " + + "ja.unitInisiator as unitInisiator, " + + "ja.keterangan as keterangan, " + + "ja.isDelete as isDelete " + + "FROM UnitInisiator ja " + + "WHERE ja.isDelete = false " + + "AND (:search = '' " + + "or (UPPER(ja.unitInisiator) like :search OR UPPER(ja.keterangan) like :search)) " + + "ORDER BY ja.id") + Page getAllUnitInisiator(String search, Pageable pageable); + + Optional findByIdAndIsDeleteFalse(Long id); + + Optional findByUnitInisiatorAndIsDeleteFalse(String unitInisiator); } diff --git a/src/main/java/com/iconplus/smartproc/service/unitinisiator/DeleteUnitInisiatorService.java b/src/main/java/com/iconplus/smartproc/service/unitinisiator/DeleteUnitInisiatorService.java new file mode 100644 index 0000000..2ebea33 --- /dev/null +++ b/src/main/java/com/iconplus/smartproc/service/unitinisiator/DeleteUnitInisiatorService.java @@ -0,0 +1,38 @@ +package com.iconplus.smartproc.service.unitinisiator; + +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.UnitInisiatorRequest; +import com.iconplus.smartproc.repository.UnitInisiatorRepository; +import com.iconplus.smartproc.util.Constants; +import lombok.extern.slf4j.Slf4j; +import org.springframework.http.HttpStatus; +import org.springframework.stereotype.Service; + +@Service +@Slf4j +public class DeleteUnitInisiatorService implements BaseService { + + private UnitInisiatorRepository unitInisiatorRepository; + + public DeleteUnitInisiatorService(UnitInisiatorRepository unitInisiatorRepository) { + this.unitInisiatorRepository = unitInisiatorRepository; + } + + + @Override + public EmptyResponse execute(UnitInisiatorRequest input) { + + var unitInisiator = unitInisiatorRepository.findByIdAndIsDeleteFalse(input.getId()) + .orElseThrow(() -> new BusinessException(HttpStatus.CONFLICT, + Constants.ERR_CODE_10001, + Constants.ERR_TTL_10001, + String.format(Constants.ERR_MSG_10001, input.getId()))); + + unitInisiator.setIsDelete(true); + unitInisiatorRepository.save(unitInisiator); + log.info("success delete unit inisiator id {}", unitInisiator.getIsDelete()); + 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..2e0f7e5 --- /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.data.domain.Page; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.List; + +@Service +public class GetListUnitInisiatorService implements BaseService { + + private UnitInisiatorRepository unitInisiatorRepository; + + public GetListUnitInisiatorService(UnitInisiatorRepository unitInisiatorRepository) { + this.unitInisiatorRepository = unitInisiatorRepository; + } + + @Override + public GetListUnitInisiatorResponse execute(UnitInisiatorRequest input) { + validateRequest(input); + List unitInisiatorResponseList = new ArrayList<>(); + Page unitInisiatorViews = unitInisiatorRepository.getAllUnitInisiator(input.getSearch(), input.getPageable()); + + for (UnitInisiatorView unitInisiatorView : unitInisiatorViews) { + UnitInisiatorResponse unitInisiatorResponse = UnitInisiatorResponse.builder() + .id(unitInisiatorView.getId()) + .unitInisiator(unitInisiatorView.getUnitInisiator()) + .keterangan(unitInisiatorView.getKeterangan()) + .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/GetUnitInisiatorByIdService.java b/src/main/java/com/iconplus/smartproc/service/unitinisiator/GetUnitInisiatorByIdService.java new file mode 100644 index 0000000..294dd6a --- /dev/null +++ b/src/main/java/com/iconplus/smartproc/service/unitinisiator/GetUnitInisiatorByIdService.java @@ -0,0 +1,43 @@ +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 com.iconplus.smartproc.util.Constants; +import org.springframework.http.HttpStatus; +import org.springframework.stereotype.Service; + +@Service +public class GetUnitInisiatorByIdService implements BaseService { + + private final UnitInisiatorRepository unitInisiatorRepository; + + public GetUnitInisiatorByIdService(UnitInisiatorRepository unitInisiatorRepository) { + this.unitInisiatorRepository = unitInisiatorRepository; + } + + @Override + public UnitInisiatorResponse execute(UnitInisiatorRequest input) { + UnitInisiatorResponse unitInisiatorResponse = new UnitInisiatorResponse(); + var unitInisiatorView = unitInisiatorRepository.findByIdAndIsDeleteFalse(input.getId()); + if (unitInisiatorView.isEmpty()) { + throw new BusinessException(HttpStatus.CONFLICT, + Constants.ERR_CODE_10001, + Constants.ERR_TTL_10001, + String.format(Constants.ERR_MSG_10001, input.getId())); + } + + unitInisiatorResponse.setUnitInisiator(unitInisiatorView.get().getUnitInisiator()); + unitInisiatorResponse.setKeterangan(unitInisiatorView.get().getKeterangan()); + unitInisiatorResponse.setIsDelete(unitInisiatorView.get().getIsDelete()); + + return UnitInisiatorResponse.builder() + .id(unitInisiatorView.get().getId()) + .unitInisiator(unitInisiatorView.get().getUnitInisiator()) + .keterangan(unitInisiatorView.get().getKeterangan()) + .isDelete(unitInisiatorView.get().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..207d9b0 --- /dev/null +++ b/src/main/java/com/iconplus/smartproc/service/unitinisiator/PostCreateUnitInisiatorService.java @@ -0,0 +1,50 @@ +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 com.iconplus.smartproc.util.Constants; +import lombok.extern.slf4j.Slf4j; +import org.springframework.http.HttpStatus; +import org.springframework.stereotype.Service; + +import java.sql.Timestamp; + +@Service +@Slf4j +public class PostCreateUnitInisiatorService implements BaseService { + + private final UnitInisiatorRepository unitInisiatorRepository; + + public PostCreateUnitInisiatorService(UnitInisiatorRepository unitInisiatorRepository) { + this.unitInisiatorRepository = unitInisiatorRepository; + } + + @Override + public UnitInisiatorResponse execute(UnitInisiatorRequest input) { + + var existUnitInisiator = unitInisiatorRepository.findByUnitInisiatorAndIsDeleteFalse(input.getUnitInisiator()); + if (existUnitInisiator.isPresent()) { + throw new BusinessException(HttpStatus.CONFLICT, + Constants.ERR_CODE_10002, + Constants.ERR_TTL_10002, + String.format(Constants.ERR_MSG_10002, input.getUnitInisiator())); + } + + UnitInisiator unitInisiator = UnitInisiator.builder() + .unitInisiator(input.getUnitInisiator()) + .keterangan(input.getKeterangan()) + .isDelete(false) + .build(); + + var result = unitInisiatorRepository.save(unitInisiator); + log.info("success insert unit inisiator id : {}", result.getId()); + return UnitInisiatorResponse.builder() + .id(result.getId()) + .build(); + + } +} \ No newline at end of file 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..df9400f --- /dev/null +++ b/src/main/java/com/iconplus/smartproc/service/unitinisiator/PutUpdateUnitInisiatorService.java @@ -0,0 +1,45 @@ +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 com.iconplus.smartproc.util.Constants; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.BooleanUtils; +import org.springframework.http.HttpStatus; +import org.springframework.stereotype.Service; + +import java.sql.Timestamp; + +@Service +@Slf4j +public class PutUpdateUnitInisiatorService implements BaseService { + + private UnitInisiatorRepository unitInisiatorRepository; + + public PutUpdateUnitInisiatorService(UnitInisiatorRepository unitInisiatorRepository) { + this.unitInisiatorRepository = unitInisiatorRepository; + } + + @Override + public UnitInisiatorResponse execute(UnitInisiatorRequest input) { + + var unitInisiator = unitInisiatorRepository.findByIdAndIsDeleteFalse(input.getId()) + .orElseThrow(() -> new BusinessException(HttpStatus.CONFLICT, + Constants.ERR_CODE_10001, + Constants.ERR_TTL_10001, + String.format(Constants.ERR_MSG_10001, input.getId()))); + + unitInisiator.setUnitInisiator(input.getUnitInisiator()); + unitInisiator.setKeterangan(input.getKeterangan()); + unitInisiator.setIsDelete(BooleanUtils.isTrue(input.getIsDelete())); + unitInisiator.setLastUpdate(new Timestamp(System.currentTimeMillis())); + unitInisiatorRepository.save(unitInisiator); + log.info("Success edit unit inisiator id {}", unitInisiator.getId()); + return UnitInisiatorResponse.builder() + .id(unitInisiator.getId()) + .build(); + } +}