add bidang api
This commit is contained in:
parent
62ccecb214
commit
a2a23fd71c
@ -0,0 +1,74 @@
|
|||||||
|
package com.iconplus.smartproc.controller;
|
||||||
|
|
||||||
|
import com.iconplus.smartproc.helper.model.EmptyResponse;
|
||||||
|
import com.iconplus.smartproc.model.request.BidangRequest;
|
||||||
|
import com.iconplus.smartproc.model.response.BidangResponse;
|
||||||
|
import com.iconplus.smartproc.model.response.GetListBidangResponse;
|
||||||
|
import com.iconplus.smartproc.service.bidang.*;
|
||||||
|
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/bidang")
|
||||||
|
public class BidangController {
|
||||||
|
|
||||||
|
private GetBidangService getBidangService;
|
||||||
|
private DeleteBidangService deleteBidangService;
|
||||||
|
private GetListBidangService getListBidangService;
|
||||||
|
private PostCreateBidangService postCreateBidangService;
|
||||||
|
private PutUpdateBidangService putUpdateBidangService;
|
||||||
|
|
||||||
|
public BidangController(GetBidangService getBidangService,
|
||||||
|
DeleteBidangService deleteBidangService,
|
||||||
|
GetListBidangService getListBidangService,
|
||||||
|
PostCreateBidangService postCreateBidangService,
|
||||||
|
PutUpdateBidangService putUpdateBidangService) {
|
||||||
|
this.getBidangService = getBidangService;
|
||||||
|
this.deleteBidangService = deleteBidangService;
|
||||||
|
this.getListBidangService = getListBidangService;
|
||||||
|
this.postCreateBidangService = postCreateBidangService;
|
||||||
|
this.putUpdateBidangService = putUpdateBidangService;
|
||||||
|
}
|
||||||
|
|
||||||
|
@GetMapping
|
||||||
|
public GetListBidangResponse getListInstansi(@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);
|
||||||
|
BidangRequest bidangRequest = BidangRequest.builder()
|
||||||
|
.search(search)
|
||||||
|
.pageable(pageable)
|
||||||
|
.build();
|
||||||
|
|
||||||
|
return getListBidangService.execute(bidangRequest);
|
||||||
|
}
|
||||||
|
|
||||||
|
@PostMapping
|
||||||
|
public BidangResponse createBidang(@RequestBody BidangRequest request) {
|
||||||
|
return postCreateBidangService.execute(request);
|
||||||
|
}
|
||||||
|
|
||||||
|
@GetMapping("/{id}")
|
||||||
|
public BidangResponse getBidangById(@PathVariable Long id) {
|
||||||
|
return getBidangService.execute(BidangRequest.builder()
|
||||||
|
.id(id)
|
||||||
|
.build());
|
||||||
|
}
|
||||||
|
|
||||||
|
@PutMapping("/{id}")
|
||||||
|
public BidangResponse updateBidang(@PathVariable Long id, @RequestBody BidangRequest request){
|
||||||
|
request.setId(id);
|
||||||
|
return putUpdateBidangService.execute(request);
|
||||||
|
}
|
||||||
|
|
||||||
|
@DeleteMapping("/{id}")
|
||||||
|
public EmptyResponse deleteBidang(@PathVariable Long id){
|
||||||
|
return deleteBidangService.execute(BidangRequest.builder()
|
||||||
|
.id(id)
|
||||||
|
.build());
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -22,6 +22,9 @@ public class Bidang extends BaseEntity {
|
|||||||
@Column(name = "id")
|
@Column(name = "id")
|
||||||
private Long id;
|
private Long id;
|
||||||
|
|
||||||
|
@Column(name = "instansi_id")
|
||||||
|
private Long instansiId;
|
||||||
|
|
||||||
@Column(name = "bidang")
|
@Column(name = "bidang")
|
||||||
private String bidang;
|
private String bidang;
|
||||||
|
|
||||||
|
@ -0,0 +1,22 @@
|
|||||||
|
package com.iconplus.smartproc.model.projection;
|
||||||
|
|
||||||
|
public interface BidangView {
|
||||||
|
|
||||||
|
Long getId();
|
||||||
|
void setId(Long id);
|
||||||
|
|
||||||
|
Long getInstansiId();
|
||||||
|
void setInstansiId(Long instansiId);
|
||||||
|
|
||||||
|
String getInstansi();
|
||||||
|
void setInstansi(String instansi);
|
||||||
|
|
||||||
|
String getBidang();
|
||||||
|
void setBidang(String bidang);
|
||||||
|
|
||||||
|
String getKeterangan();
|
||||||
|
void setketerangan(String keterangan);
|
||||||
|
|
||||||
|
Boolean getIsActive();
|
||||||
|
void setIsActive(Boolean isActive);
|
||||||
|
};
|
@ -0,0 +1,24 @@
|
|||||||
|
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 BidangRequest extends BaseRequest {
|
||||||
|
|
||||||
|
private Long id;
|
||||||
|
private Long instansiId;
|
||||||
|
private String bidang;
|
||||||
|
private String keterangan;
|
||||||
|
private Boolean isActive;
|
||||||
|
private String search;
|
||||||
|
private transient Pageable pageable;
|
||||||
|
}
|
@ -0,0 +1,23 @@
|
|||||||
|
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 BidangResponse extends BaseResponse {
|
||||||
|
|
||||||
|
private Long id;
|
||||||
|
private Long instansiId;
|
||||||
|
private String instansi;
|
||||||
|
private String bidang;
|
||||||
|
private String keterangan;
|
||||||
|
private Boolean isActive;
|
||||||
|
private Boolean isDelete;
|
||||||
|
|
||||||
|
}
|
@ -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
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
public class GetListBidangResponse extends BaseResponse {
|
||||||
|
|
||||||
|
private List<BidangResponse> data;
|
||||||
|
private Pagination pagination;
|
||||||
|
}
|
@ -1,13 +1,31 @@
|
|||||||
package com.iconplus.smartproc.repository;
|
package com.iconplus.smartproc.repository;
|
||||||
|
|
||||||
import com.iconplus.smartproc.model.entity.Bidang;
|
import com.iconplus.smartproc.model.entity.Bidang;
|
||||||
|
import com.iconplus.smartproc.model.projection.BidangView;
|
||||||
|
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.JpaRepository;
|
||||||
|
import org.springframework.data.jpa.repository.Query;
|
||||||
import org.springframework.stereotype.Repository;
|
import org.springframework.stereotype.Repository;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
|
|
||||||
@Repository
|
@Repository
|
||||||
public interface BidangRepository extends JpaRepository<Bidang, LokasiRepository> {
|
public interface BidangRepository extends JpaRepository<Bidang, LokasiRepository> {
|
||||||
|
|
||||||
|
@Query(value = "SELECT b.id as id, " +
|
||||||
|
"b.instansiId as instansiId, " +
|
||||||
|
"i.instansi as instansi, " +
|
||||||
|
"b.bidang as bidang, " +
|
||||||
|
"b.keterangan as keterangan, " +
|
||||||
|
"b.isActive as isActive " +
|
||||||
|
"FROM Bidang b " +
|
||||||
|
"JOIN Instansi i on i.id = b.instansiId " +
|
||||||
|
"WHERE b.isDelete = false " +
|
||||||
|
"AND (:search='' or UPPER(b.bidang) like :search) " +
|
||||||
|
"ORDER BY b.id")
|
||||||
|
Page<BidangView> getListBidang(String search, Pageable pageable);
|
||||||
|
|
||||||
Optional<Bidang> findByIdAndIsDeleteFalse(Long id);
|
Optional<Bidang> findByIdAndIsDeleteFalse(Long id);
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,29 @@
|
|||||||
|
package com.iconplus.smartproc.service.bidang;
|
||||||
|
|
||||||
|
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.BidangRequest;
|
||||||
|
import com.iconplus.smartproc.repository.BidangRepository;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
@Service
|
||||||
|
public class DeleteBidangService implements BaseService<BidangRequest, EmptyResponse> {
|
||||||
|
|
||||||
|
private BidangRepository bidangRepository;
|
||||||
|
|
||||||
|
public DeleteBidangService (BidangRepository bidangRepository) {
|
||||||
|
this.bidangRepository = bidangRepository;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public EmptyResponse execute(BidangRequest input) {
|
||||||
|
|
||||||
|
var bidang = bidangRepository.findByIdAndIsDeleteFalse(input.getId()).orElseThrow(() -> new BusinessException("err", "err", "err"));
|
||||||
|
|
||||||
|
bidang.setIsDelete(true);
|
||||||
|
bidangRepository.save(bidang);
|
||||||
|
|
||||||
|
return new EmptyResponse();
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,31 @@
|
|||||||
|
package com.iconplus.smartproc.service.bidang;
|
||||||
|
|
||||||
|
import com.iconplus.smartproc.exception.BusinessException;
|
||||||
|
import com.iconplus.smartproc.helper.service.BaseService;
|
||||||
|
import com.iconplus.smartproc.model.request.BidangRequest;
|
||||||
|
import com.iconplus.smartproc.model.response.BidangResponse;
|
||||||
|
import com.iconplus.smartproc.repository.BidangRepository;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
@Service
|
||||||
|
public class GetBidangService implements BaseService<BidangRequest, BidangResponse> {
|
||||||
|
|
||||||
|
private BidangRepository bidangRepository;
|
||||||
|
|
||||||
|
public GetBidangService(BidangRepository bidangRepository) {
|
||||||
|
this.bidangRepository = bidangRepository;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public BidangResponse execute(BidangRequest input) {
|
||||||
|
|
||||||
|
var bidang = bidangRepository.findByIdAndIsDeleteFalse(input.getId()).orElseThrow(() -> new BusinessException("err", "err", "err"));
|
||||||
|
return BidangResponse.builder()
|
||||||
|
.id(bidang.getId())
|
||||||
|
.instansiId(bidang.getInstansiId())
|
||||||
|
.bidang(bidang.getBidang())
|
||||||
|
.keterangan(bidang.getKeterangan())
|
||||||
|
.isActive(bidang.getIsActive())
|
||||||
|
.build();
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,62 @@
|
|||||||
|
package com.iconplus.smartproc.service.bidang;
|
||||||
|
|
||||||
|
import com.iconplus.smartproc.helper.model.Pagination;
|
||||||
|
import com.iconplus.smartproc.helper.service.BaseService;
|
||||||
|
import com.iconplus.smartproc.model.projection.BidangView;
|
||||||
|
import com.iconplus.smartproc.model.request.BidangRequest;
|
||||||
|
import com.iconplus.smartproc.model.request.InstansiRequest;
|
||||||
|
import com.iconplus.smartproc.model.response.BidangResponse;
|
||||||
|
import com.iconplus.smartproc.model.response.GetListBidangResponse;
|
||||||
|
import com.iconplus.smartproc.repository.BidangRepository;
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Service
|
||||||
|
public class GetListBidangService implements BaseService<BidangRequest, GetListBidangResponse> {
|
||||||
|
|
||||||
|
private BidangRepository bidangRepository;
|
||||||
|
|
||||||
|
public GetListBidangService(BidangRepository bidangRepository) {
|
||||||
|
this.bidangRepository = bidangRepository;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public GetListBidangResponse execute(BidangRequest input) {
|
||||||
|
validateRequest(input);
|
||||||
|
List<BidangResponse> bidangResponseList = new ArrayList<>();
|
||||||
|
var bidangViews= bidangRepository.getListBidang(input.getSearch(), input.getPageable());
|
||||||
|
|
||||||
|
for (BidangView bidangView : bidangViews) {
|
||||||
|
BidangResponse bidangResponse = BidangResponse.builder()
|
||||||
|
.id(bidangView.getId())
|
||||||
|
.instansiId(bidangView.getInstansiId())
|
||||||
|
.instansi(bidangView.getInstansi())
|
||||||
|
.bidang(bidangView.getBidang())
|
||||||
|
.keterangan(bidangView.getKeterangan())
|
||||||
|
.isActive(bidangView.getIsActive())
|
||||||
|
.build();
|
||||||
|
bidangResponseList.add(bidangResponse);
|
||||||
|
}
|
||||||
|
|
||||||
|
return GetListBidangResponse.builder()
|
||||||
|
.data(bidangResponseList)
|
||||||
|
.pagination(Pagination.builder()
|
||||||
|
.pageSize(input.getPageable().getPageSize())
|
||||||
|
.currentPage(input.getPageable().getPageNumber())
|
||||||
|
.totalPages(bidangViews.getTotalPages())
|
||||||
|
.totalRecords(bidangViews.getTotalElements())
|
||||||
|
.isFirstPage(bidangViews.isFirst())
|
||||||
|
.isLastPage(bidangViews.isLast())
|
||||||
|
.build())
|
||||||
|
.build();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void validateRequest(BidangRequest input) {
|
||||||
|
if (StringUtils.isNotBlank(input.getSearch())) {
|
||||||
|
input.setSearch('%'+ input.getSearch().toUpperCase()+'%');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,36 @@
|
|||||||
|
package com.iconplus.smartproc.service.bidang;
|
||||||
|
|
||||||
|
import com.iconplus.smartproc.helper.service.BaseService;
|
||||||
|
import com.iconplus.smartproc.model.entity.Bidang;
|
||||||
|
import com.iconplus.smartproc.model.request.BidangRequest;
|
||||||
|
import com.iconplus.smartproc.model.response.BidangResponse;
|
||||||
|
import com.iconplus.smartproc.repository.BidangRepository;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
@Service
|
||||||
|
public class PostCreateBidangService implements BaseService<BidangRequest, BidangResponse> {
|
||||||
|
|
||||||
|
private BidangRepository bidangRepository;
|
||||||
|
|
||||||
|
public PostCreateBidangService(BidangRepository bidangRepository) {
|
||||||
|
this.bidangRepository = bidangRepository;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public BidangResponse execute(BidangRequest input) {
|
||||||
|
Bidang bidang = Bidang.builder()
|
||||||
|
.id(input.getId())
|
||||||
|
.instansiId(input.getInstansiId())
|
||||||
|
.bidang(input.getBidang())
|
||||||
|
.keterangan(input.getKeterangan())
|
||||||
|
.isActive(input.getIsActive())
|
||||||
|
.isDelete(false)
|
||||||
|
.build();
|
||||||
|
|
||||||
|
var result = bidangRepository.save(bidang);
|
||||||
|
return BidangResponse.builder()
|
||||||
|
.id(result.getId())
|
||||||
|
.build();
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,32 @@
|
|||||||
|
package com.iconplus.smartproc.service.bidang;
|
||||||
|
|
||||||
|
import com.iconplus.smartproc.exception.BusinessException;
|
||||||
|
import com.iconplus.smartproc.helper.service.BaseService;
|
||||||
|
import com.iconplus.smartproc.model.request.BidangRequest;
|
||||||
|
import com.iconplus.smartproc.model.response.BidangResponse;
|
||||||
|
import com.iconplus.smartproc.repository.BidangRepository;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
@Service
|
||||||
|
public class PutUpdateBidangService implements BaseService<BidangRequest, BidangResponse> {
|
||||||
|
|
||||||
|
private BidangRepository bidangRepository;
|
||||||
|
|
||||||
|
public PutUpdateBidangService(BidangRepository bidangRepository) {
|
||||||
|
this.bidangRepository = bidangRepository;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public BidangResponse execute(BidangRequest input) {
|
||||||
|
|
||||||
|
var bidang = bidangRepository.findByIdAndIsDeleteFalse(input.getId()).orElseThrow(() -> new BusinessException("err", "err", "err"));
|
||||||
|
bidang.setInstansiId(input.getInstansiId());
|
||||||
|
bidang.setBidang(input.getBidang());
|
||||||
|
bidang.setKeterangan(input.getKeterangan());
|
||||||
|
bidang.setIsActive(input.getIsActive());
|
||||||
|
var result = bidangRepository.save(bidang);
|
||||||
|
return BidangResponse.builder()
|
||||||
|
.id(result.getId())
|
||||||
|
.build();
|
||||||
|
}
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user