Merge branch 'develop' of https://github.com/Kitzanos/GEPAFIN-BE into develop
This commit is contained in:
@@ -409,5 +409,28 @@ public class GepafinConstant {
|
|||||||
|
|
||||||
public static final String REQUIRED_REQUESTED_AMOUNT_MSG = "validation.required.requested.amount";
|
public static final String REQUIRED_REQUESTED_AMOUNT_MSG = "validation.required.requested.amount";
|
||||||
public static final String CRITERIA_TABLE_COLUMNS="criteria_table_columns";
|
public static final String CRITERIA_TABLE_COLUMNS="criteria_table_columns";
|
||||||
|
|
||||||
|
public static final String DOCUMENTATION_INTEGRATION_REQUEST_SVILUPPUMBRIA= "<html>\n" +
|
||||||
|
" <body style=\"font-family: Arial, sans-serif; color: #000; line-height: 1.6;\">\n" +
|
||||||
|
" <div style=\"padding: 20px; border: 1px solid #ddd; border-radius: 8px; max-width: 600px; margin: auto;\">\n" +
|
||||||
|
" <p><strong>RICHIESTA INTEGRAZIONE DOCUMENTALE</strong></p>\n" +
|
||||||
|
" <p>Buongiorno,</p>\n" +
|
||||||
|
" <p>In riferimento alla domanda di concessione di Finanziamento agevolato a valere sul Bando \n" +
|
||||||
|
" <strong>{{call_name}}</strong> di cui al <strong>Protocollo n. {{protocol_number}} del\n" +
|
||||||
|
" {{protocol_date}} e {{protocol_time}}</strong>, alla luce dell'attività istruttoria svolta,\n" +
|
||||||
|
" segnaliamo quanto segue:\n" +
|
||||||
|
" </p>\n" +
|
||||||
|
" {{note}}\n" +
|
||||||
|
" <p>Vi invitiamo a fornire quanto sopra richiesto integrando la documentazione caricandola all'interno dello sportello\n" +
|
||||||
|
" online <a href=\"{{platform_link}}\">{{platform_link}}</a> entro e <strong>non oltre {{response_days}} giorni</strong> dal ricevimento della presente comunicazione,\n" +
|
||||||
|
" precisando che, in caso di mancata ricezione nei termini indicati, saremo costretti a non prendere in considerazione la Vostra richiesta di finanziamento.\n" +
|
||||||
|
" </p>\n" +
|
||||||
|
" <p>La documentazione trasmessa e le informazioni fornite saranno processate dall'istruttore assegnatario della pratica.\n" +
|
||||||
|
" </p>\n" +
|
||||||
|
" <p>Distinti Saluti,</p>\n" +
|
||||||
|
" <p><strong>{{email_signature}}</strong></p>\n" +
|
||||||
|
" </div>\n" +
|
||||||
|
" </body>\n" +
|
||||||
|
"</html>";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -94,7 +94,15 @@ public class EmailNotificationDao {
|
|||||||
subjectPlaceholders.put("{{company_name}}", company.getCompanyName());
|
subjectPlaceholders.put("{{company_name}}", company.getCompanyName());
|
||||||
// bodyPlaceholders.put("{{legal_mail}}", legalMail);
|
// bodyPlaceholders.put("{{legal_mail}}", legalMail);
|
||||||
String subject = Utils.replacePlaceholders(systemEmailTemplateResponse.getSubject(), subjectPlaceholders);
|
String subject = Utils.replacePlaceholders(systemEmailTemplateResponse.getSubject(), subjectPlaceholders);
|
||||||
String body = Utils.replacePlaceholders(systemEmailTemplateResponse.getHtmlContent(), bodyPlaceholders);
|
String body;
|
||||||
|
if ("t7jh5wfg9QXylNaTZkPoE".equals(hubEntity.getUniqueUuid()) && templateType.equals(SystemEmailTemplatesEntity.SystemEmailTemplatesEntityTypeEnum.DOCUMENTATION_INTEGRATION_REQUEST)) {
|
||||||
|
bodyPlaceholders.put("{{email_signature}}", hubEntity.getEmailSignature());
|
||||||
|
bodyPlaceholders.put("{{platform_link}}",hubEntity.getDomainName());
|
||||||
|
body = Utils.replacePlaceholders(GepafinConstant.DOCUMENTATION_INTEGRATION_REQUEST_SVILUPPUMBRIA, bodyPlaceholders);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
body = Utils.replacePlaceholders(systemEmailTemplateResponse.getHtmlContent(), bodyPlaceholders);
|
||||||
|
}
|
||||||
|
|
||||||
return new EmailContentResponse(subject, body, systemEmailTemplateResponse);
|
return new EmailContentResponse(subject, body, systemEmailTemplateResponse);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -36,6 +36,8 @@ import java.util.stream.Collectors;
|
|||||||
@Component
|
@Component
|
||||||
public class FormDao {
|
public class FormDao {
|
||||||
|
|
||||||
|
private final Logger log = LoggerFactory.getLogger(FormDao.class);
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private FormRepository formRepository;
|
private FormRepository formRepository;
|
||||||
|
|
||||||
@@ -203,8 +205,9 @@ public class FormDao {
|
|||||||
String formFieldId,Long evaluationCriteriaId) {
|
String formFieldId,Long evaluationCriteriaId) {
|
||||||
EvaluationCriteriaEntity evaluationCriteria = evaluationCriteriaService.validateEvaluationCriteria(evaluationCriteriaId);
|
EvaluationCriteriaEntity evaluationCriteria = evaluationCriteriaService.validateEvaluationCriteria(evaluationCriteriaId);
|
||||||
if (Boolean.FALSE.equals(evaluationCriteria.getCall().getId().equals(callEntity.getId()))) {
|
if (Boolean.FALSE.equals(evaluationCriteria.getCall().getId().equals(callEntity.getId()))) {
|
||||||
throw new CustomValidationException(Status.VALIDATION_ERROR,
|
log.info("This evaluation criterion does not belong to the current call. Expected Call ID = {}, Found Call ID = {}",
|
||||||
Translator.toLocale(GepafinConstant.EVALUATIONCRITERIA_INVALID));
|
callEntity.getId(), evaluationCriteria.getCall().getId());
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
CriteriaFormFieldEntity criteriaFormField = new CriteriaFormFieldEntity();
|
CriteriaFormFieldEntity criteriaFormField = new CriteriaFormFieldEntity();
|
||||||
criteriaFormField.setCallId(callEntity.getId());
|
criteriaFormField.setCallId(callEntity.getId());
|
||||||
@@ -471,7 +474,9 @@ public class FormDao {
|
|||||||
|
|
||||||
FieldValidatorBean fieldValidatorBean = Utils.convertSourceObjectToDestinationObject(contentResponseBean.getValidators(), FieldValidatorBean.class);
|
FieldValidatorBean fieldValidatorBean = Utils.convertSourceObjectToDestinationObject(contentResponseBean.getValidators(), FieldValidatorBean.class);
|
||||||
String fieldValue = getFieldValue(contentResponseBean);
|
String fieldValue = getFieldValue(contentResponseBean);
|
||||||
validator.isRequired(value, fieldValidatorBean.getIsRequired(), fieldValue);
|
|
||||||
|
validator.isRequired(value, fieldValidatorBean.getIsRequired(), fieldValue)
|
||||||
|
.validateCustomTableValidation(value,fieldValidatorBean.getCustom(),fieldValue,contentResponseBean);
|
||||||
});
|
});
|
||||||
if (Boolean.TRUE.equals(isSendValidationError)) {
|
if (Boolean.TRUE.equals(isSendValidationError)) {
|
||||||
validator.validate();
|
validator.validate();
|
||||||
|
|||||||
@@ -147,11 +147,51 @@ public class FieldValidator {
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void checkTableValidation(String value, String fieldId, ContentResponseBean contentResponseBean, List<String> errors) {
|
|
||||||
|
|
||||||
|
public FieldValidator validateCustomTableValidation(String value, String customRule, String fieldId, ContentResponseBean contentResponseBean) {
|
||||||
|
if (customRule == null || value == null) {
|
||||||
|
return this; // No custom rule to validate
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (customRule) {
|
||||||
|
|
||||||
|
case GepafinConstant.NON_EMPTY_TABLES:
|
||||||
|
try {
|
||||||
|
checkTableValidation(value, fieldId, contentResponseBean, errors);
|
||||||
|
} catch (Exception e) {
|
||||||
|
throw new RuntimeException(e);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
// If the custom rule is unknown, just log or add an error (optional)
|
||||||
|
errors.add(MessageFormat.format(Translator.toLocale(GepafinConstant.VALIDATION_FIELD_CUSTOM), fieldId, customRule));
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void checkTableValidation(String value, String fieldId, ContentResponseBean contentResponseBean, List<String> errors) throws Exception {
|
||||||
Map<String, Boolean> stateFieldMap= new HashMap<>();
|
Map<String, Boolean> stateFieldMap= new HashMap<>();
|
||||||
|
String tableType = contentResponseBean.getSettings().stream()
|
||||||
|
.filter(setting ->GepafinConstant.CRITERIA_TABLE_COLUMNS.equals(setting.getName())) // Check for "table_columns"
|
||||||
|
.map(SettingResponseBean::getName) // Extract the name
|
||||||
|
.findFirst() // Get the first matching result
|
||||||
|
.orElse(null); // Default to null if no match
|
||||||
|
|
||||||
|
if (tableType!=null){
|
||||||
|
try {
|
||||||
|
Object object = PdfUtils.extractRows(value);;
|
||||||
|
value= Utils.convertToString(object);
|
||||||
|
} catch (Exception e) {
|
||||||
|
throw new RuntimeException(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
contentResponseBean.getSettings().stream()
|
contentResponseBean.getSettings().stream()
|
||||||
.filter(setting -> "table_columns".equals(setting.getName())) // Check for "table_columns"
|
.filter(setting -> "table_columns".equals(setting.getName()) || GepafinConstant.CRITERIA_TABLE_COLUMNS.equals(setting.getName())) // Check for "table_columns"
|
||||||
.map(SettingResponseBean::getValue)
|
.map(SettingResponseBean::getValue)
|
||||||
.filter(Objects::nonNull) // Ensure value is not null
|
.filter(Objects::nonNull) // Ensure value is not null
|
||||||
.filter(settingValue -> settingValue instanceof Map) // Ensure value is a Map
|
.filter(settingValue -> settingValue instanceof Map) // Ensure value is a Map
|
||||||
|
|||||||
Reference in New Issue
Block a user