add master data api

This commit is contained in:
dirgantarasiahaan
2023-05-26 10:39:31 +07:00
parent c573eb2fb3
commit fe72608465
67 changed files with 2376 additions and 307 deletions

View File

@@ -0,0 +1,38 @@
package com.iconplus.smartproc.service.lokasi;
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.LokasiRequest;
import com.iconplus.smartproc.repository.LokasiRepository;
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 DeleteLokasiService implements BaseService<LokasiRequest, EmptyResponse> {
private LokasiRepository lokasiRepository;
public DeleteLokasiService(LokasiRepository lokasiRepository) {
this.lokasiRepository = lokasiRepository;
}
@Override
public EmptyResponse execute(LokasiRequest input) {
var lokasi = lokasiRepository.findByIdAndIsDeleteFalse(input.getId())
.orElseThrow(() -> new BusinessException(HttpStatus.CONFLICT,
Constants.ERR_CODE_10001,
Constants.ERR_TTL_10001,
String.format(Constants.ERR_MSG_10001, input.getId())));
lokasi.setIsDelete(true);
lokasiRepository.save(lokasi);
log.info("success delete jenis lokasi id {}", lokasi.getIsDelete());
return new EmptyResponse();
}
}

View File

@@ -0,0 +1,61 @@
package com.iconplus.smartproc.service.lokasi;
import com.iconplus.smartproc.helper.model.Pagination;
import com.iconplus.smartproc.helper.service.BaseService;
import com.iconplus.smartproc.model.projection.LokasiView;
import com.iconplus.smartproc.model.request.LokasiRequest;
import com.iconplus.smartproc.model.response.GetListLokasiResponse;
import com.iconplus.smartproc.model.response.LokasiResponse;
import com.iconplus.smartproc.repository.LokasiRepository;
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 GetListLokasiService implements BaseService<LokasiRequest, GetListLokasiResponse> {
private LokasiRepository lokasiRepository;
public GetListLokasiService(LokasiRepository lokasiRepository) {
this.lokasiRepository = lokasiRepository;
}
@Override
public GetListLokasiResponse execute(LokasiRequest input) {
validateRequest(input);
List<LokasiResponse> lokasiResponseList = new ArrayList<>();
Page<LokasiView> lokasiViews = lokasiRepository.getAllLokasi(input.getSearch(), input.getPageable());
for (LokasiView lokasiView : lokasiViews) {
LokasiResponse lokasiResponse = LokasiResponse.builder()
.id(lokasiView.getId())
.lokasi(lokasiView.getLokasi())
.keterangan(lokasiView.getKeterangan())
.isActive(lokasiView.getIsActive())
.isDelete(lokasiView.getIsDelete())
.build();
lokasiResponseList.add(lokasiResponse);
}
return GetListLokasiResponse.builder()
.data(lokasiResponseList)
.pagination(Pagination.builder()
.pageSize(input.getPageable().getPageSize())
.currentPage(input.getPageable().getPageNumber())
.totalPages(lokasiViews.getTotalPages())
.totalRecords(lokasiViews.getTotalElements())
.isFirstPage(lokasiViews.isFirst())
.isLastPage(lokasiViews.isLast())
.build())
.build();
}
private void validateRequest(LokasiRequest input) {
if (StringUtils.isNotBlank(input.getSearch())) {
input.setSearch('%'+ input.getSearch().toUpperCase()+'%');
}
}
}

View File

@@ -0,0 +1,43 @@
package com.iconplus.smartproc.service.lokasi;
import com.iconplus.smartproc.exception.BusinessException;
import com.iconplus.smartproc.helper.service.BaseService;
import com.iconplus.smartproc.model.request.LokasiRequest;
import com.iconplus.smartproc.model.response.LokasiResponse;
import com.iconplus.smartproc.repository.LokasiRepository;
import com.iconplus.smartproc.util.Constants;
import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Service;
@Service
public class GetLokasiByIdService implements BaseService<LokasiRequest, LokasiResponse> {
private final LokasiRepository lokasiRepository;
public GetLokasiByIdService(LokasiRepository lokasiRepository) {
this.lokasiRepository = lokasiRepository;
}
@Override
public LokasiResponse execute(LokasiRequest input) {
LokasiResponse lokasiResponse = new LokasiResponse();
var lokasiView = lokasiRepository.findByIdAndIsDeleteFalse(input.getId());
if (lokasiView.isEmpty()) {
throw new BusinessException(HttpStatus.CONFLICT,
Constants.ERR_CODE_10001,
Constants.ERR_TTL_10001,
String.format(Constants.ERR_MSG_10001, input.getId()));
}
lokasiResponse.setLokasi(lokasiView.get().getLokasi());
lokasiResponse.setKeterangan(lokasiView.get().getKeterangan());
lokasiResponse.setIsDelete(lokasiView.get().getIsDelete());
return LokasiResponse.builder()
.id(lokasiView.get().getId())
.lokasi(lokasiView.get().getLokasi())
.keterangan(lokasiView.get().getKeterangan())
.isDelete(lokasiView.get().getIsDelete())
.build();
}
}

View File

@@ -0,0 +1,49 @@
package com.iconplus.smartproc.service.lokasi;
import com.iconplus.smartproc.exception.BusinessException;
import com.iconplus.smartproc.helper.service.BaseService;
import com.iconplus.smartproc.model.entity.Lokasi;
import com.iconplus.smartproc.model.request.LokasiRequest;
import com.iconplus.smartproc.model.response.LokasiResponse;
import com.iconplus.smartproc.repository.LokasiRepository;
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 PostCreateLokasiService implements BaseService<LokasiRequest, LokasiResponse> {
private final LokasiRepository lokasiRepository;
public PostCreateLokasiService(LokasiRepository lokasiRepository) {
this.lokasiRepository = lokasiRepository;
}
@Override
public LokasiResponse execute(LokasiRequest input) {
var existLokasi = lokasiRepository.findByLokasiAndIsDeleteFalse(input.getLokasi());
if (existLokasi.isPresent()) {
throw new BusinessException(HttpStatus.CONFLICT,
Constants.ERR_CODE_10002,
Constants.ERR_TTL_10002,
String.format(Constants.ERR_MSG_10002, input.getLokasi()));
}
Lokasi lokasi = Lokasi.builder()
.lokasi(input.getLokasi())
.keterangan(input.getKeterangan())
.isDelete(false)
.isActive(input.getIsActive())
.build();
var result = lokasiRepository.save(lokasi);
log.info("success insert lokasi id : {}", result.getId());
return LokasiResponse.builder()
.id(result.getId())
.build();
}
}

View File

@@ -0,0 +1,45 @@
package com.iconplus.smartproc.service.lokasi;
import com.iconplus.smartproc.exception.BusinessException;
import com.iconplus.smartproc.helper.service.BaseService;
import com.iconplus.smartproc.model.request.LokasiRequest;
import com.iconplus.smartproc.model.response.LokasiResponse;
import com.iconplus.smartproc.repository.LokasiRepository;
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 PutUpdateLokasiService implements BaseService<LokasiRequest, LokasiResponse> {
private LokasiRepository lokasiRepository;
public PutUpdateLokasiService(LokasiRepository lokasiRepository) {
this.lokasiRepository = lokasiRepository;
}
@Override
public LokasiResponse execute(LokasiRequest input) {
var lokasi = lokasiRepository.findByIdAndIsDeleteFalse(input.getId())
.orElseThrow(() -> new BusinessException(HttpStatus.CONFLICT,
Constants.ERR_CODE_10001,
Constants.ERR_TTL_10001,
String.format(Constants.ERR_MSG_10001, input.getId())));
lokasi.setLokasi(input.getLokasi());
lokasi.setKeterangan(input.getKeterangan());
lokasi.setIsDelete(BooleanUtils.isTrue(input.getIsDelete()));
lokasi.setLastUpdate(new Timestamp(System.currentTimeMillis()));
lokasiRepository.save(lokasi);
log.info("Success edit lokasi id {}", lokasi.getId());
return LokasiResponse.builder()
.id(lokasi.getId())
.build();
}
}