unitinisiator

This commit is contained in:
dirgantarasiahaan 2023-05-25 01:52:31 +07:00
parent f96c8d2f17
commit 77dfe44ee6
12 changed files with 355 additions and 52 deletions

View File

@ -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<UnitInisiator> 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<UnitInisiator> 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<UnitInisiator> 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<Map<String, Boolean>> deleteUnitinisiator(@PathVariable Long id){
UnitInisiator unitinisiator = unitinisiatorRepository.findById(id)
.orElseThrow(() -> new ResourceNotFoundException("Unit inisiator not exist with id :" + id));
unitinisiatorRepository.delete(unitinisiator);
Map<String, Boolean> 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());
}
}

View File

@ -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);
}

View File

@ -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;
}

View File

@ -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<UnitInisiatorResponse> data;
private Pagination pagination;
}

View File

@ -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;
}

View File

@ -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<UnitInisiator, Long> {
Optional<UnitInisiator> findByIdAndIsDeleteFalse(Long id);
Optional<UnitInisiator> 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<UnitInisiatorView> getListUnitInisiator(String search, Pageable pageable);
}

View File

@ -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<SumberDanaRequest,
@Override
public GetListSumberDanaResponse execute(SumberDanaRequest input) {
validateRequest(input);
List<SumberDanaResponse> sumberDanaResponseList = new ArrayList<>();
var sumberDanaViews= sumberDanaRepository.getListSumberDana(input.getSearch(), input.getPageable());
for (SumberDanaView sumberDanaView : sumberDanaViews) {
@ -46,4 +49,10 @@ public class GetListSumberDanaService implements BaseService<SumberDanaRequest,
.build())
.build();
}
private void validateRequest(SumberDanaRequest input) {
if (StringUtils.isNotBlank(input.getSearch())) {
input.setSearch('%'+ input.getSearch().toUpperCase()+'%');
}
}
}

View File

@ -0,0 +1,27 @@
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 org.springframework.stereotype.Service;
@Service
public class DeleteUnitInisiatorService implements BaseService<UnitInisiatorRequest, EmptyResponse> {
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();
}
}

View File

@ -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<UnitInisiatorRequest, GetListUnitInisiatorResponse> {
private UnitInisiatorRepository unitInisiatorRepository;
private GetListUnitInisiatorService(UnitInisiatorRepository unitInisiatorRepository) {
this.unitInisiatorRepository = unitInisiatorRepository;
}
@Override
public GetListUnitInisiatorResponse execute(UnitInisiatorRequest input) {
validateRequest(input);
List<UnitInisiatorResponse> 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()+'%');
}
}
}

View File

@ -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<UnitInisiatorRequest, UnitInisiatorResponse> {
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();
}
}

View File

@ -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<UnitInisiatorRequest, UnitInisiatorResponse> {
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();
}
}

View File

@ -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<UnitInisiatorRequest, UnitInisiatorResponse> {
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();
}
}