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.request.DrpRequest; import com.iconplus.smartproc.model.response.DrpDokumenResponse; 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<>(); List drpPengadaanDokumenPendukungList = new ArrayList<>(); setDrpDokumen(input, drpDokumenResponseList, drpPengadaanDokumenPendukungList); return DrpResponse.builder() .id(drp.getId()) .tahun(drp.getTahun()) .approveStatus(drp.getApproveStatus()) .approveDate(drp.getApproveDate()) .isActive(drp.getIsActive()) .isDelete(drp.getIsDelete()) .dataDrpDokumen(drpDokumenResponseList) .dataDrpDokumenPendukung(drpPengadaanDokumenPendukungList) .build(); } private void setDrpDokumen(DrpRequest input, List drpDokumenResponseList, List drpDokumenPendukungList) { var drpDokumenList = drpDokumenRepository.findByDrpIdAndIsDeleteFalse(input.getId()); for (DrpDokumen drpDokumen : drpDokumenList) { if (drpDokumen.getJenisDokumenId() == 1) { DrpDokumenResponse drpDokumenResponse = DrpDokumenResponse.builder() .id(drpDokumen.getId()) .drpId(drpDokumen.getDrpId()) .jenisDokumenId(drpDokumen.getJenisDokumenId()) .filename(drpDokumen.getFilename()) .keterangan(drpDokumen.getKeterangan()) .build(); drpDokumenResponseList.add(drpDokumenResponse); } else { DrpDokumenResponse drpDokumenResponse = DrpDokumenResponse.builder() .id(drpDokumen.getId()) .drpId(drpDokumen.getDrpId()) .jenisDokumenId(drpDokumen.getJenisDokumenId()) .filename(drpDokumen.getFilename()) .keterangan(drpDokumen.getKeterangan()) .build(); drpDokumenPendukungList.add(drpDokumenResponse); } } } }