package com.iconplus.smartproc.service.drp; import com.iconplus.smartproc.exception.BusinessException; import com.iconplus.smartproc.helper.service.BaseService; import com.iconplus.smartproc.model.entity.DrpDokumen; import com.iconplus.smartproc.model.entity.DrpPengadaanDokumen; import com.iconplus.smartproc.model.request.DrpRequest; import com.iconplus.smartproc.model.response.DrpDokumenResponse; import com.iconplus.smartproc.model.response.DrpPengadaanDokumenResponse; import com.iconplus.smartproc.model.response.DrpPengadaanResponse; import com.iconplus.smartproc.model.response.DrpResponse; import com.iconplus.smartproc.repository.DrpDokumenRepository; import com.iconplus.smartproc.repository.DrpPengadaanDokumenRepository; import com.iconplus.smartproc.repository.DrpRepository; import com.iconplus.smartproc.util.Constants; import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.List; @Service public class GetDrpService implements BaseService { private final DrpRepository drpRepository; private final DrpDokumenRepository drpDokumenRepository; private final DrpPengadaanDokumenRepository drpPengadaanDokumenRepository; public GetDrpService(DrpRepository drpRepository, DrpDokumenRepository drpDokumenRepository, DrpPengadaanDokumenRepository drpPengadaanDokumenRepository) { this.drpRepository = drpRepository; this.drpDokumenRepository = drpDokumenRepository; this.drpPengadaanDokumenRepository = drpPengadaanDokumenRepository; } @Override public DrpResponse execute(DrpRequest input) { var drp = drpRepository.findByIdAndIsDeleteFalse(input.getId()) .orElseThrow(() -> new BusinessException(Constants.ERR_CODE_10001, Constants.ERR_TTL_10001, String.format(Constants.ERR_MSG_10001, "DRP", input.getId()))); List drpDokumenResponseList = new ArrayList<>(); setDrpDokumen(input, drpDokumenResponseList); List drpPengadaanDokumenResponseList = new ArrayList<>(); setDrpPengadaanDokumen(input, drpPengadaanDokumenResponseList); return DrpResponse.builder() .id(drp.getId()) .tahun(drp.getTahun()) .approveStatus(drp.getApproveStatus()) .approveDate(drp.getApproveDate()) .isActive(drp.getIsActive()) .isDelete(drp.getIsDelete()) .dataDrpDokumen(drpDokumenResponseList) .dataDrpPengadaanDokumen(drpPengadaanDokumenResponseList) .build(); } private void setDrpPengadaanDokumen(DrpRequest input, List drpPengadaanDokumenResponseList) { var drpPengadaanDokumenList = drpPengadaanDokumenRepository.findByDrpIdAndIsDeleteFalse(input.getId()); for (DrpPengadaanDokumen drpPengadaanDokumen : drpPengadaanDokumenList) { DrpPengadaanDokumenResponse drpPengadaanDokumenResponse = DrpPengadaanDokumenResponse.builder() .id(drpPengadaanDokumen.getId()) .drpId(drpPengadaanDokumen.getDrpId()) .jenisDokumenId(drpPengadaanDokumen.getJenisDokumenId()) .filename(drpPengadaanDokumen.getFilename()) .build(); drpPengadaanDokumenResponseList.add(drpPengadaanDokumenResponse); } } private void setDrpDokumen(DrpRequest input, List drpDokumenResponseList) { var drpDokumenList = drpDokumenRepository.findByDrpIdAndIsDeleteFalse(input.getId()); for (DrpDokumen drpDokumen : drpDokumenList) { DrpDokumenResponse drpDokumenResponse = DrpDokumenResponse.builder() .id(drpDokumen.getId()) .drpId(drpDokumen.getDrpId()) .jenisDokumenId(drpDokumen.getJenisDokumenId()) .filename(drpDokumen.getFilename()) .build(); drpDokumenResponseList.add(drpDokumenResponse); } } }