diff --git a/src/main/java/net/gepafin/tendermanagement/dao/PdfDao.java b/src/main/java/net/gepafin/tendermanagement/dao/PdfDao.java index 6a2c2b8c..d4899964 100644 --- a/src/main/java/net/gepafin/tendermanagement/dao/PdfDao.java +++ b/src/main/java/net/gepafin/tendermanagement/dao/PdfDao.java @@ -458,7 +458,7 @@ public class PdfDao { String contentId = content.getId(); // Content ID String label = content.getLabel(); // Content label String name = content.getName(); // Content name - Object fieldValue = null; + Object fieldValue = ""; String contentLabel = content.getSettings().stream() .filter(setting -> "label".equals(setting.getName())) // Filter settings by name @@ -467,6 +467,32 @@ public class PdfDao { .findFirst() // Get the first matching value .orElse(null); // If no match is found, set label to null // Find the form field in the response that matches the contentId + if (name.equals("paragraph")){ + String paragraph = content.getSettings().stream() + .filter(setting -> "text".equals(setting.getName())) // Filter settings by name + .map(SettingResponseBean::getValue) // Extract the value from the matching setting + .map(Object::toString) // Convert the value to a string + .findFirst() // Get the first matching value + .orElse(null); + Paragraph labelParagraph = new Paragraph(); + PdfPCell labelCell = new PdfPCell(PdfUtils.htmlToPdfPCell(paragraph,labelFont)); + labelCell.setBorder(Rectangle.NO_BORDER); + labelCell.setGrayFill(7); + labelCell.setPadding(5); + + // Create a PdfPTable with 1 column and add the PdfPCell to it + PdfPTable table = new PdfPTable(1); + table.setWidthPercentage(100); + table.addCell(labelCell); + labelParagraph.add(table); + try { + document.add(labelParagraph); + document.add(new Paragraph(" ")); + + } catch (DocumentException e) { + throw new RuntimeException(e); + } + } Optional matchingFormField = formFields.stream() .filter(formField -> formField.getFieldId().equals(contentId)) .findFirst(); @@ -483,7 +509,13 @@ public class PdfDao { // Process 'fileupload' and 'checkboxes' cases as in the original logic if (name.equals("fileupload")) { - continue; + if (fieldValue instanceof List && ((List) fieldValue).stream().allMatch(item -> item instanceof DocumentResponseBean)) { + List documentList = (List) fieldValue; + List names = documentList.stream() + .map(DocumentResponseBean::getName) + .collect(Collectors.toList()); + fieldValue = names; + } } else if (name.equals("checkboxes") && fieldValue instanceof List) { List check = (List) fieldValue; List settingResponseBeans = content.getSettings(); @@ -511,15 +543,12 @@ public class PdfDao { // Further processing of field value (e.g., finding labels in options) fieldValue = findLabelInOptions(content.getSettings(), fieldValue); - } else { - // If no matching form field is found, store contentId with an empty string - fieldValue = ""; } - try { - if((contentLabel!=null && Boolean.FALSE.equals(contentLabel.isEmpty())) || (fieldValue!=null && !StringUtils.isEmpty((CharSequence) fieldValue))) { - addLabelValuePair(writer, document, contentLabel, fieldValue, labelFont, valueFont, content); + if((contentLabel==null || StringUtils.isEmpty(contentLabel)) && (fieldValue==null || StringUtils.isEmpty(fieldValue.toString()))) { + continue; } + addLabelValuePair(writer, document, contentLabel, fieldValue, labelFont, valueFont, content); } catch (DocumentException e) { log.error("Error checking object: " + e.getMessage(), e);