package com.iconplus.smartproc.service.drppengadaan; import com.iconplus.smartproc.exception.BusinessException; import com.iconplus.smartproc.helper.service.BaseService; import com.iconplus.smartproc.model.request.DrpPengadaanDokumenRequest; import com.iconplus.smartproc.model.response.DrpPengadaanDokumenResponse; import com.iconplus.smartproc.repository.DrpPengadaanDokumenRepository; import com.iconplus.smartproc.util.Constants; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.web.multipart.MultipartFile; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; @Service public class PostDrpUploadDokumenPendukungService implements BaseService { @Value("${config.file-upload.pendukung}") private String pathFileUploadPendukung; private final DrpPengadaanDokumenRepository drpPengadaanDokumenRepository; public PostDrpUploadDokumenPendukungService(DrpPengadaanDokumenRepository drpPengadaanDokumenRepository) { this.drpPengadaanDokumenRepository = drpPengadaanDokumenRepository; } @Override public DrpPengadaanDokumenResponse execute(DrpPengadaanDokumenRequest input) throws IOException { MultipartFile file = input.getFile(); String fileName = file.getOriginalFilename(); var drpDokumen= drpPengadaanDokumenRepository.findByFilenameAndIsDeleteFalse(fileName); if (drpDokumen.isPresent()) { throw new BusinessException(Constants.ERR_CODE_10002, Constants.ERR_TTL_10002, String.format(Constants.ERR_MSG_10002, "Filename", fileName)); } File path = new File(pathFileUploadPendukung + fileName); try { FileOutputStream output = new FileOutputStream(path); output.write(file.getBytes()); output.close(); } catch (Exception ex) { throw new BusinessException(Constants.ERR_CODE_10012, Constants.ERR_TTL_10012, String.format(Constants.ERR_MSG_10012, pathFileUploadPendukung)); } return DrpPengadaanDokumenResponse.builder() .jenisDokumenId(input.getJenisDokumenId()) .filename(fileName) .keterangan(input.getKeterangan()) .build(); } }