Files
smartproc-be/src/main/java/com/iconplus/smartproc/service/jenisanggaran/GetListJenisAnggaranService.java
dirgantarasiahaan b49a2425c1 refactor v2
2023-05-24 09:23:51 +07:00

61 lines
2.7 KiB
Java

package com.iconplus.smartproc.service.jenisanggaran;
import com.iconplus.smartproc.helper.model.Pagination;
import com.iconplus.smartproc.helper.service.BaseService;
import com.iconplus.smartproc.model.projection.JenisAnggaranView;
import com.iconplus.smartproc.model.request.JenisAnggaranRequest;
import com.iconplus.smartproc.model.response.GetListJenisAnggaranResponse;
import com.iconplus.smartproc.model.response.JenisAnggaranResponse;
import com.iconplus.smartproc.repository.JenisAnggaranRepository;
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 GetListJenisAnggaranService implements BaseService<JenisAnggaranRequest, GetListJenisAnggaranResponse> {
private JenisAnggaranRepository jenisAnggaranRepository;
public GetListJenisAnggaranService(JenisAnggaranRepository jenisAnggaranRepository) {
this.jenisAnggaranRepository = jenisAnggaranRepository;
}
@Override
public GetListJenisAnggaranResponse execute(JenisAnggaranRequest input) {
validateRequest(input);
List<JenisAnggaranResponse> jenisAnggaranResponseList = new ArrayList<>();
Page<JenisAnggaranView> jenisAnggaranViews = jenisAnggaranRepository.getAllJenisAnggaran(input.getSearch(), input.getPageable());
for (JenisAnggaranView jenisAnggaranView : jenisAnggaranViews) {
JenisAnggaranResponse jenisAnggaranResponse = JenisAnggaranResponse.builder()
.id(jenisAnggaranView.getId())
.jenisAnggaran(jenisAnggaranView.getJenisAnggaran())
.keterangan(jenisAnggaranView.getKeterangan())
.isDelete(jenisAnggaranView.getIsDelete())
.build();
jenisAnggaranResponseList.add(jenisAnggaranResponse);
}
return GetListJenisAnggaranResponse.builder()
.data(jenisAnggaranResponseList)
.pagination(Pagination.builder()
.pageSize(input.getPageable().getPageSize())
.currentPage(input.getPageable().getPageNumber())
.totalPages(jenisAnggaranViews.getTotalPages())
.totalRecords(jenisAnggaranViews.getTotalElements())
.isFirstPage(jenisAnggaranViews.isFirst())
.isLastPage(jenisAnggaranViews.isLast())
.build())
.build();
}
private void validateRequest(JenisAnggaranRequest input) {
if (StringUtils.isNotBlank(input.getSearch())) {
input.setSearch('%'+ input.getSearch().toUpperCase()+'%');
}
}
}