package com.iconplus.smartproc.service.drppengadaan; import com.iconplus.smartproc.exception.BusinessException; import com.iconplus.smartproc.helper.service.BaseService; import com.iconplus.smartproc.model.entity.DrpPengadaanDokumen; import com.iconplus.smartproc.model.request.DrpPengadaanDokumenRequest; import com.iconplus.smartproc.model.request.DrpPengadaanRequest; import com.iconplus.smartproc.model.response.DrpPengadaanResponse; import com.iconplus.smartproc.repository.DrpPengadaanDokumenRepository; import com.iconplus.smartproc.repository.DrpPengadaanRepository; import com.iconplus.smartproc.util.Constants; import org.apache.commons.lang3.ObjectUtils; import org.springframework.stereotype.Service; import java.io.IOException; import java.util.ArrayList; import java.util.List; @Service public class PutDrpPengadaanService implements BaseService { private final DrpPengadaanRepository drpPengadaanRepository; private final DrpPengadaanDokumenRepository drpPengadaanDokumenRepository; public PutDrpPengadaanService(DrpPengadaanRepository drpPengadaanRepository, DrpPengadaanDokumenRepository drpPengadaanDokumenRepository) { this.drpPengadaanRepository = drpPengadaanRepository; this.drpPengadaanDokumenRepository = drpPengadaanDokumenRepository; } @Override public DrpPengadaanResponse execute(DrpPengadaanRequest input) throws IOException { var drpPengadaan = drpPengadaanRepository.findByIdAndIsDeleteFalse(input.getId()) .orElseThrow(()-> new BusinessException(Constants.ERR_CODE_10001, Constants.ERR_TTL_10001, String.format(Constants.ERR_MSG_10001, "DRP Pengadaan", input.getId()))); drpPengadaan.setNomor(input.getNomor()); drpPengadaan.setNamaPengadaan(input.getNamaPengadaan()); drpPengadaan.setLokasiId(input.getLokasiId()); drpPengadaan.setJenisPengadaanId(input.getJenisPengadaanId()); drpPengadaan.setUnitInisiatorId(input.getUnitInisiatorId()); drpPengadaan.setPagu(input.getPagu()); drpPengadaan.setSumberDanaId(input.getSumberDanaId()); drpPengadaan.setSupplyPositioningMatrixId(input.getSupplyPositioningMatrixId()); drpPengadaan.setMetodePengadaanId(input.getMetodePengadaanId()); drpPengadaan.setMetodePengadaanId(input.getMetodePenyampaianId()); drpPengadaan.setJenisKontrakId(input.getJenisKontrakId()); drpPengadaan.setStrategiPengadaanId(input.getStrategiPengadaanId()); drpPengadaan.setRencanaTanggal(input.getRencanaTanggal()); drpPengadaan.setTargetTanggal(input.getTargetTanggal()); drpPengadaan.setHpe(input.getHpe()); drpPengadaan.setIsActive(input.getIsActive()); drpPengadaan.setIsDelete(false); drpPengadaanRepository.save(drpPengadaan); var drpPengadaanDokumenList = drpPengadaanDokumenRepository.findByDrpPengadaanIdAndIsDeleteFalse(drpPengadaan.getId()); for (DrpPengadaanDokumen drpPengadaanDokumen : drpPengadaanDokumenList) { drpPengadaanDokumen.setIsDelete(true); drpPengadaanDokumenRepository.save(drpPengadaanDokumen); } List drpPengadaanDokumenArrayList = new ArrayList<>(); if (ObjectUtils.isNotEmpty(input.getDataDrpPengadaanDokumen())) { for (DrpPengadaanDokumenRequest drpPengadaanDokumenRequest : input.getDataDrpPengadaanDokumen()) { DrpPengadaanDokumen drpPengadaanDokumen = DrpPengadaanDokumen.builder() .drpPengadaanId(drpPengadaan.getId()) .drpId(drpPengadaan.getDrpId()) .jenisDokumenId(drpPengadaanDokumenRequest.getJenisDokumenId()) .filename(drpPengadaanDokumenRequest.getFilename()) .keterangan(drpPengadaanDokumenRequest.getKeterangan()) .isDelete(false) .build(); drpPengadaanDokumenArrayList.add(drpPengadaanDokumen); } drpPengadaanDokumenRepository.saveAll(drpPengadaanDokumenArrayList); } return DrpPengadaanResponse.builder() .id(drpPengadaan.getId()) .build(); } }