diff --git a/src/main/java/net/gepafin/tendermanagement/dao/PdfDao.java b/src/main/java/net/gepafin/tendermanagement/dao/PdfDao.java index 11e39dc4..30e10fe8 100644 --- a/src/main/java/net/gepafin/tendermanagement/dao/PdfDao.java +++ b/src/main/java/net/gepafin/tendermanagement/dao/PdfDao.java @@ -1,5 +1,7 @@ package net.gepafin.tendermanagement.dao; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; import com.itextpdf.kernel.colors.ColorConstants; import com.itextpdf.kernel.colors.DeviceRgb; import com.itextpdf.kernel.pdf.canvas.PdfCanvas; @@ -12,6 +14,8 @@ import com.itextpdf.text.Font; import com.itextpdf.text.Image; import com.itextpdf.text.Rectangle; import com.itextpdf.text.pdf.*; + +import jakarta.servlet.http.HttpServletRequest; import net.gepafin.tendermanagement.config.Translator; import net.gepafin.tendermanagement.constants.GepafinConstant; import net.gepafin.tendermanagement.entities.*; @@ -20,6 +24,7 @@ import net.gepafin.tendermanagement.model.request.FieldLabelValuePairRequest; import net.gepafin.tendermanagement.model.response.*; import net.gepafin.tendermanagement.repositories.ApplicationRepository; import net.gepafin.tendermanagement.service.CallService; +import net.gepafin.tendermanagement.util.Validator; import net.gepafin.tendermanagement.web.rest.api.errors.ResourceNotFoundException; import net.gepafin.tendermanagement.web.rest.api.errors.Status; import org.springframework.beans.factory.annotation.Autowired; @@ -38,26 +43,21 @@ import java.util.stream.Collectors; @Component public class PdfDao { - @Autowired - private ApplicationRepository applicationRepository; - @Autowired private CallService callService; @Autowired private ApplicationDao applicationDao; + + @Autowired + private Validator validator; - public byte[] generatePdf(UserEntity userEntity,Long applicationId) { + public byte[] generatePdf(HttpServletRequest request,Long applicationId) { try { - ApplicationEntity applicationEntity = applicationRepository - .findByIdAndUserIdAndIsDeletedFalse(applicationId, userEntity.getId()) - .orElseThrow(() -> new ResourceNotFoundException( - Status.NOT_FOUND, - Translator.toLocale(GepafinConstant.APPLICATION_NOT_FOUND_MSG) - )); - - CompanyEntity companyEntity=applicationEntity.getCompany(); + UserEntity userEntity = validator.validateUser(request); + ApplicationEntity applicationEntity = applicationDao.validateApplication(applicationId); + validator.validateUserWithCompany(request, applicationEntity.getCompany().getId()); CallEntity call=callService.validateCall(applicationEntity.getCall().getId()); // Create a byte stream to hold the PDF @@ -127,7 +127,7 @@ public class PdfDao { // addLabelValuePair(document, "Con il titolo di", "Rappresentante legale", regularFont); document.add(new Paragraph(" ")); - ApplicationGetResponseBean applicationGetResponseBean=applicationDao.getApplicationByFormId(applicationId,null,userEntity); + ApplicationGetResponseBean applicationGetResponseBean=applicationDao.getApplicationByFormId(applicationId,null, userEntity); for(FormApplicationResponse formApplicationResponse: applicationGetResponseBean.getForm()) { document.add(new Paragraph(formApplicationResponse.getLabel(),sectionFont)); document.add(new Paragraph(" ")); // Add line break @@ -534,6 +534,7 @@ public class PdfDao { String label = matchingContent.get().getLabel(); // Add the label-value pair to the list if (fieldValue != null && !fieldValue.toString().trim().isEmpty()) { + fieldValue = findLabelInOptions(matchingContent.get().getSettings(), fieldValue); labelValuePairs.add(new FieldLabelValuePairRequest(label, fieldValue)); } } @@ -541,6 +542,31 @@ public class PdfDao { return labelValuePairs; } + + public static Object findLabelInOptions(List settings, Object valueToFind) { + ObjectMapper objectMapper = new ObjectMapper(); + + try { + if (valueToFind instanceof String) { + String searchValue = (String) valueToFind; + for (SettingResponseBean setting : settings) { + Object value = setting.getValue(); + if (value instanceof List) { + List options = (List) value; + for (Object option : options) { + JsonNode optionNode = objectMapper.convertValue(option, JsonNode.class); + if (optionNode.get("name").asText().equals(searchValue)) { + return optionNode.get("label").asText(); + } + } + } + } + } + } catch (Exception e) { + } + return valueToFind; + } + public void addLogo(Document document, String logoPath) throws Exception { Image logo = Image.getInstance(logoPath); logo.scaleToFit(document.getPageSize().getWidth() - document.leftMargin() - document.rightMargin(), // Fit to document width diff --git a/src/main/java/net/gepafin/tendermanagement/service/impl/PdfServiceImpl.java b/src/main/java/net/gepafin/tendermanagement/service/impl/PdfServiceImpl.java index 3e6951f1..b075584d 100644 --- a/src/main/java/net/gepafin/tendermanagement/service/impl/PdfServiceImpl.java +++ b/src/main/java/net/gepafin/tendermanagement/service/impl/PdfServiceImpl.java @@ -19,7 +19,6 @@ public class PdfServiceImpl implements PdfService { @Override public byte[] generatePdf(HttpServletRequest request, Long applicationId) { - UserEntity userEntity = validator.validateUser(request); - return pdfDao.generatePdf(userEntity,applicationId); + return pdfDao.generatePdf(request, applicationId); } }