Merge branch 'develop' of https://github.com/Kitzanos/GEPAFIN-BE into develop
This commit is contained in:
@@ -22,8 +22,8 @@ import net.gepafin.tendermanagement.model.response.SystemEmailTemplateResponse;
|
|||||||
import net.gepafin.tendermanagement.repositories.*;
|
import net.gepafin.tendermanagement.repositories.*;
|
||||||
import net.gepafin.tendermanagement.service.*;
|
import net.gepafin.tendermanagement.service.*;
|
||||||
import net.gepafin.tendermanagement.util.DateTimeUtil;
|
import net.gepafin.tendermanagement.util.DateTimeUtil;
|
||||||
|
import net.gepafin.tendermanagement.util.Validator;
|
||||||
import net.gepafin.tendermanagement.entities.SystemEmailTemplatesEntity.SystemEmailTemplatesEntityTypeEnum;
|
import net.gepafin.tendermanagement.entities.SystemEmailTemplatesEntity.SystemEmailTemplatesEntityTypeEnum;
|
||||||
import net.gepafin.tendermanagement.util.MailUtil;
|
|
||||||
import net.gepafin.tendermanagement.util.Utils;
|
import net.gepafin.tendermanagement.util.Utils;
|
||||||
import net.gepafin.tendermanagement.web.rest.api.errors.CustomValidationException;
|
import net.gepafin.tendermanagement.web.rest.api.errors.CustomValidationException;
|
||||||
import net.gepafin.tendermanagement.web.rest.api.errors.ResourceNotFoundException;
|
import net.gepafin.tendermanagement.web.rest.api.errors.ResourceNotFoundException;
|
||||||
@@ -33,7 +33,6 @@ import org.springframework.beans.factory.annotation.Value;
|
|||||||
import org.springframework.data.jpa.domain.Specification;
|
import org.springframework.data.jpa.domain.Specification;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
import java.time.ZoneId;
|
|
||||||
import java.time.temporal.ChronoUnit;
|
import java.time.temporal.ChronoUnit;
|
||||||
|
|
||||||
|
|
||||||
@@ -96,6 +95,9 @@ public class ApplicationAmendmentRequestDao {
|
|||||||
// @Autowired
|
// @Autowired
|
||||||
// private MailUtil mailUtil;
|
// private MailUtil mailUtil;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private Validator validator;
|
||||||
|
|
||||||
public ApplicationAmendmentRequestResponse getApplicationDataForAmendment(HttpServletRequest request, Long applicationEvaluationId) {
|
public ApplicationAmendmentRequestResponse getApplicationDataForAmendment(HttpServletRequest request, Long applicationEvaluationId) {
|
||||||
log.info("Fetching the application data for the Amendment process {}", applicationEvaluationId);
|
log.info("Fetching the application data for the Amendment process {}", applicationEvaluationId);
|
||||||
ApplicationEvaluationEntity applicationEvaluationEntity = applicationEvaluationService.validateApplicationEvaluation(applicationEvaluationId);
|
ApplicationEvaluationEntity applicationEvaluationEntity = applicationEvaluationService.validateApplicationEvaluation(applicationEvaluationId);
|
||||||
@@ -338,7 +340,14 @@ public class ApplicationAmendmentRequestDao {
|
|||||||
return response;
|
return response;
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<ApplicationAmendmentRequestResponse> getAllApplicationAmendmentRequest(Long userId) {
|
public List<ApplicationAmendmentRequestResponse> getAllApplicationAmendmentRequest(HttpServletRequest request,Long userId) {
|
||||||
|
UserEntity user = validator.validateUser(request);
|
||||||
|
if(validator.checkIsPreInstructor() && userId == null) {
|
||||||
|
throw new CustomValidationException(Status.BAD_REQUEST, Translator.toLocale(GepafinConstant.USER_ID_NOT_NULL_MSG));
|
||||||
|
}
|
||||||
|
if(userId != null) {
|
||||||
|
validator.validatePreInstructor(request, userId);
|
||||||
|
}
|
||||||
Specification<ApplicationAmendmentRequestEntity> spec = search(userId);
|
Specification<ApplicationAmendmentRequestEntity> spec = search(userId);
|
||||||
List<ApplicationAmendmentRequestEntity> applicationAmendmentRequestEntities =
|
List<ApplicationAmendmentRequestEntity> applicationAmendmentRequestEntities =
|
||||||
applicationAmendmentRequestRepository.findAll(spec);
|
applicationAmendmentRequestRepository.findAll(spec);
|
||||||
@@ -369,8 +378,8 @@ public class ApplicationAmendmentRequestDao {
|
|||||||
ApplicationAmendmentRequestEntity existingApplicationAmendment = validateApplicationAmendmentRequest(id);
|
ApplicationAmendmentRequestEntity existingApplicationAmendment = validateApplicationAmendmentRequest(id);
|
||||||
|
|
||||||
setIfUpdated(existingApplicationAmendment::getNote, existingApplicationAmendment::setNote, updateRequest.getNote());
|
setIfUpdated(existingApplicationAmendment::getNote, existingApplicationAmendment::setNote, updateRequest.getNote());
|
||||||
if (updateRequest.getUpdatedFormFields() != null) {
|
if (updateRequest.getApplicationFormFields() != null) {
|
||||||
updateApplicationFormFields(existingApplicationAmendment, updateRequest.getUpdatedFormFields());
|
updateApplicationFormFields(existingApplicationAmendment, updateRequest.getApplicationFormFields());
|
||||||
}
|
}
|
||||||
existingApplicationAmendment.setUpdatedDate(DateTimeUtil.DateServerToUTC(LocalDateTime.now()));
|
existingApplicationAmendment.setUpdatedDate(DateTimeUtil.DateServerToUTC(LocalDateTime.now()));
|
||||||
|
|
||||||
@@ -380,27 +389,52 @@ public class ApplicationAmendmentRequestDao {
|
|||||||
return response;
|
return response;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private void updateApplicationFormFields(ApplicationAmendmentRequestEntity applicationAmendment, ApplicationFormFieldRequestBean updatedFormField) {
|
private void updateApplicationFormFields(ApplicationAmendmentRequestEntity applicationAmendment, ApplicationFormFieldRequestBean updatedFormField) {
|
||||||
|
if (updatedFormField.getFieldValue() == null || "".equals(updatedFormField.getFieldValue().toString().trim())) {
|
||||||
|
List<ApplicationFormEntity> applicationForms = applicationFormRepository.findByApplicationId(applicationAmendment.getApplicationId());
|
||||||
|
|
||||||
|
boolean fieldUpdated = false;
|
||||||
|
|
||||||
|
for (ApplicationFormEntity applicationForm : applicationForms) {
|
||||||
|
Optional<ApplicationFormFieldEntity> formFieldEntityOptional = applicationFormFieldRepository
|
||||||
|
.findByApplicationFormIdAndFieldId(applicationForm.getId(), updatedFormField.getFieldId());
|
||||||
|
|
||||||
|
if (formFieldEntityOptional.isPresent()) {
|
||||||
|
ApplicationFormFieldEntity formEntity = formFieldEntityOptional.get();
|
||||||
|
formEntity.setFieldValue(null); // Set field value to null
|
||||||
|
applicationFormFieldRepository.save(formEntity);
|
||||||
|
log.info("Set field value to null for application ID {} and field ID {}", applicationAmendment.getApplicationId(), updatedFormField.getFieldId());
|
||||||
|
fieldUpdated = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!fieldUpdated) {
|
||||||
|
throw new CustomValidationException(Status.NOT_FOUND, "No ApplicationFormField found for application ID " + applicationAmendment.getApplicationId() + " and field ID " + updatedFormField.getFieldId());
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
List<String> documentIds;
|
List<String> documentIds;
|
||||||
|
|
||||||
// Check if fieldValue is an array
|
if (updatedFormField.getFieldValue() instanceof String && updatedFormField.getFieldValue() != null) {
|
||||||
if (updatedFormField.getFieldValue() instanceof List) {
|
documentIds = Arrays.asList(((String) updatedFormField.getFieldValue()).split(","));
|
||||||
documentIds = ((List<?>) updatedFormField.getFieldValue()).stream()
|
|
||||||
.map(Object::toString)
|
|
||||||
.collect(Collectors.toList());
|
|
||||||
} else {
|
} else {
|
||||||
log.warn("Expected fieldValue as a list but got: {}", updatedFormField.getFieldValue());
|
log.warn("Expected fieldValue as a comma-separated String but got: {}", updatedFormField.getFieldValue());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
List<String> validDocumentIds = new ArrayList<>();
|
List<String> validDocumentIds = new ArrayList<>();
|
||||||
for (String documentId : documentIds) {
|
for (String documentId : documentIds) {
|
||||||
DocumentEntity documentEntity = documentService.validateDocument(Long.parseLong(documentId));
|
try {
|
||||||
if (documentEntity != null) {
|
DocumentEntity documentEntity = documentService.validateDocument(Long.parseLong(documentId.trim()));
|
||||||
validDocumentIds.add(documentId);
|
if (documentEntity != null) {
|
||||||
} else {
|
validDocumentIds.add(documentId.trim());
|
||||||
log.warn("Document with ID {} does not exist. Skipping this ID.", documentId);
|
} else {
|
||||||
|
log.warn("Document with ID {} does not exist. Skipping this ID.", documentId);
|
||||||
|
}
|
||||||
|
} catch (NumberFormatException e) {
|
||||||
|
log.error("Invalid document ID format: {}. Error: {}", documentId, e.getMessage());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -425,8 +459,7 @@ public class ApplicationAmendmentRequestDao {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!fieldUpdated) {
|
if (!fieldUpdated) {
|
||||||
log.warn("No ApplicationFormFieldEntity found for application ID {} and field ID {}. Skipping update.",
|
throw new CustomValidationException(Status.NOT_FOUND,"No ApplicationFormField found for application ID {} and field ID {}. Skipping update.");
|
||||||
applicationAmendment.getApplicationId(), updatedFormField.getFieldId());
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
log.warn("No valid document IDs found for update. Skipping field ID {}", updatedFormField.getFieldId());
|
log.warn("No valid document IDs found for update. Skipping field ID {}", updatedFormField.getFieldId());
|
||||||
@@ -434,8 +467,9 @@ public class ApplicationAmendmentRequestDao {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public List<ApplicationAmendmentRequestResponse> getAllAmendmentRequestByBeneficiaryId(Long beneficiaryId) {
|
|
||||||
|
|
||||||
|
public List<ApplicationAmendmentRequestResponse> getAllAmendmentRequestByBeneficiaryId(Long beneficiaryId) {
|
||||||
|
UserEntity userEntity = userService.validateUser(beneficiaryId);
|
||||||
List<ApplicationAmendmentRequestEntity> entities =
|
List<ApplicationAmendmentRequestEntity> entities =
|
||||||
applicationAmendmentRequestRepository.findByUserId(beneficiaryId);
|
applicationAmendmentRequestRepository.findByUserId(beneficiaryId);
|
||||||
|
|
||||||
|
|||||||
@@ -97,6 +97,7 @@ public class DocumentDao {
|
|||||||
private Long resolveSourceId(Long sourceId, DocumentSourceTypeEnum sourceType) {
|
private Long resolveSourceId(Long sourceId, DocumentSourceTypeEnum sourceType) {
|
||||||
if (sourceType == DocumentSourceTypeEnum.CALL) {
|
if (sourceType == DocumentSourceTypeEnum.CALL) {
|
||||||
CallEntity callEntity = callService.validateCall(sourceId);
|
CallEntity callEntity = callService.validateCall(sourceId);
|
||||||
|
callDao.validateUpdate(callEntity);
|
||||||
return callEntity.getId();
|
return callEntity.getId();
|
||||||
}
|
}
|
||||||
// else if (sourceType == SourceTypeEnum.APPLICATION) {
|
// else if (sourceType == SourceTypeEnum.APPLICATION) {
|
||||||
|
|||||||
@@ -5,5 +5,5 @@ import lombok.Data;
|
|||||||
@Data
|
@Data
|
||||||
public class ApplicationAmendmentRequestBean {
|
public class ApplicationAmendmentRequestBean {
|
||||||
private String note;
|
private String note;
|
||||||
private ApplicationFormFieldRequestBean updatedFormFields;
|
private ApplicationFormFieldRequestBean applicationFormFields;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,7 +8,6 @@ import net.gepafin.tendermanagement.entities.ApplicationAmendmentRequestEntity;
|
|||||||
import net.gepafin.tendermanagement.entities.ApplicationEvaluationEntity;
|
import net.gepafin.tendermanagement.entities.ApplicationEvaluationEntity;
|
||||||
import net.gepafin.tendermanagement.entities.UserEntity;
|
import net.gepafin.tendermanagement.entities.UserEntity;
|
||||||
import net.gepafin.tendermanagement.enums.ApplicationAmendmentRequestEnum;
|
import net.gepafin.tendermanagement.enums.ApplicationAmendmentRequestEnum;
|
||||||
import net.gepafin.tendermanagement.enums.ApplicationStatusTypeEnum;
|
|
||||||
import net.gepafin.tendermanagement.model.request.ApplicationAmendmentRequest;
|
import net.gepafin.tendermanagement.model.request.ApplicationAmendmentRequest;
|
||||||
import net.gepafin.tendermanagement.model.request.ApplicationAmendmentRequestBean;
|
import net.gepafin.tendermanagement.model.request.ApplicationAmendmentRequestBean;
|
||||||
import net.gepafin.tendermanagement.model.request.CloseAmendmentRequest;
|
import net.gepafin.tendermanagement.model.request.CloseAmendmentRequest;
|
||||||
@@ -62,7 +61,7 @@ public class ApplicationAmendmentRequestServiceImpl implements ApplicationAmendm
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<ApplicationAmendmentRequestResponse> getAllApplicationAmendmentRequest(HttpServletRequest request,Long userId) {
|
public List<ApplicationAmendmentRequestResponse> getAllApplicationAmendmentRequest(HttpServletRequest request,Long userId) {
|
||||||
return applicationAmendmentRequestDao.getAllApplicationAmendmentRequest(userId);
|
return applicationAmendmentRequestDao.getAllApplicationAmendmentRequest(request,userId);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -1702,7 +1702,7 @@
|
|||||||
<where>UNIQUE_UUID = 't7jh5wfg9QXylNaTZkPoE'</where>
|
<where>UNIQUE_UUID = 't7jh5wfg9QXylNaTZkPoE'</where>
|
||||||
</update>
|
</update>
|
||||||
</changeSet>
|
</changeSet>
|
||||||
<changeSet id="30-10-2024_4" author="Harish Bagora">
|
<changeSet id="30-10-2024_4" author="Harish Bagora">
|
||||||
<sql dbms="postgresql">select
|
<sql dbms="postgresql">select
|
||||||
setval('gepafin_schema.system_email_template_id_seq', (select
|
setval('gepafin_schema.system_email_template_id_seq', (select
|
||||||
max(id)+1
|
max(id)+1
|
||||||
@@ -1710,5 +1710,10 @@
|
|||||||
</sql>
|
</sql>
|
||||||
<sqlFile dbms="postgresql"
|
<sqlFile dbms="postgresql"
|
||||||
path="db/dump/insert_system_email_template_for_sollecito_30_10_2024.sql"/>
|
path="db/dump/insert_system_email_template_for_sollecito_30_10_2024.sql"/>
|
||||||
</changeSet>
|
</changeSet>
|
||||||
|
|
||||||
|
<changeSet id="04-11-2024_1" author="Piyush">
|
||||||
|
<sqlFile dbms="postgresql"
|
||||||
|
path="db/dump/update_system_email_template_for_notification_mail_04_11_2024_1.sql"/>
|
||||||
|
</changeSet>
|
||||||
</databaseChangeLog>
|
</databaseChangeLog>
|
||||||
|
|||||||
@@ -1,5 +1,14 @@
|
|||||||
UPDATE gepafin_schema.system_email_template
|
INSERT INTO gepafin_schema.system_email_template
|
||||||
SET html_content = '<html>
|
(
|
||||||
|
id, template_name, "type", html_content, subject, "json", "system",
|
||||||
|
is_deleted, created_date, updated_date
|
||||||
|
)
|
||||||
|
VALUES
|
||||||
|
(
|
||||||
|
3,
|
||||||
|
'Instructional Aid/Request for Documentation Integration Template',
|
||||||
|
'DOCUMENTATION_INTEGRATION_REQUEST',
|
||||||
|
'<html>
|
||||||
<body style="font-family: Arial, sans-serif; color: #000; line-height: 1.6;">
|
<body style="font-family: Arial, sans-serif; color: #000; line-height: 1.6;">
|
||||||
<div style="padding: 20px; border: 1px solid #ddd; border-radius: 8px; max-width: 600px; margin: auto;">
|
<div style="padding: 20px; border: 1px solid #ddd; border-radius: 8px; max-width: 600px; margin: auto;">
|
||||||
<p><strong>RICHIESTA INTEGRAZIONE DOCUMENTALE</strong></p>
|
<p><strong>RICHIESTA INTEGRAZIONE DOCUMENTALE</strong></p>
|
||||||
@@ -22,11 +31,27 @@ SET html_content = '<html>
|
|||||||
<p><strong>{{email_signature}}</strong></p>
|
<p><strong>{{email_signature}}</strong></p>
|
||||||
</div>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
</html>'
|
</html>',
|
||||||
WHERE "type" = 'DOCUMENTATION_INTEGRATION_REQUEST' AND "system" = true;
|
'RICHIESTA INTEGRAZIONE DOCUMENTALE - {{call_name}}',
|
||||||
|
NULL,
|
||||||
|
true,
|
||||||
|
false,
|
||||||
|
'2024-10-26 20:00:00',
|
||||||
|
'2024-10-26 20:00:00'
|
||||||
|
);
|
||||||
|
|
||||||
UPDATE gepafin_schema.system_email_template
|
-- Insert for INADMISSIBILITY_NOTIFICATION_DUE_TO_FAILURE
|
||||||
SET html_content = '<html>
|
INSERT INTO gepafin_schema.system_email_template
|
||||||
|
(
|
||||||
|
id, template_name, "type", html_content, subject, "json", "system",
|
||||||
|
is_deleted, created_date, updated_date
|
||||||
|
)
|
||||||
|
VALUES
|
||||||
|
(
|
||||||
|
4,
|
||||||
|
'Notification of Inadmissibility Due to Failure to Respond Template',
|
||||||
|
'INADMISSIBILITY_NOTIFICATION_DUE_TO_FAILURE',
|
||||||
|
'<html>
|
||||||
<body style="font-family: Arial, sans-serif; color: #000; line-height: 1.6;">
|
<body style="font-family: Arial, sans-serif; color: #000; line-height: 1.6;">
|
||||||
<div style="padding: 20px; border: 1px solid #ddd; border-radius: 8px; max-width: 600px; margin: auto;">
|
<div style="padding: 20px; border: 1px solid #ddd; border-radius: 8px; max-width: 600px; margin: auto;">
|
||||||
<p><strong>Comunicazione di non ammissibilità per mancata risposta a richiesta integrazione documentale</strong></p>
|
<p><strong>Comunicazione di non ammissibilità per mancata risposta a richiesta integrazione documentale</strong></p>
|
||||||
@@ -40,11 +65,27 @@ SET html_content = '<html>
|
|||||||
<p><strong>{{email_signature}}</strong></p>
|
<p><strong>{{email_signature}}</strong></p>
|
||||||
</div>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
</html>'
|
</html>',
|
||||||
WHERE "type" = 'INADMISSIBILITY_NOTIFICATION_DUE_TO_FAILURE' AND "system" = true;
|
'BANDO {{call_name}} - Domanda di finanziamento non ammessa {{company_name}}',
|
||||||
|
NULL,
|
||||||
|
true,
|
||||||
|
false,
|
||||||
|
'2024-10-26 20:00:00',
|
||||||
|
'2024-10-26 20:00:00'
|
||||||
|
);
|
||||||
|
|
||||||
UPDATE gepafin_schema.system_email_template
|
-- Insert for ADMISSIBILITY_NOTIFICATION
|
||||||
SET html_content = '<html>
|
INSERT INTO gepafin_schema.system_email_template
|
||||||
|
(
|
||||||
|
id, template_name, "type", html_content, subject, "json", "system",
|
||||||
|
is_deleted, created_date, updated_date
|
||||||
|
)
|
||||||
|
VALUES
|
||||||
|
(
|
||||||
|
5,
|
||||||
|
'Notification of Admissibility Template',
|
||||||
|
'ADMISSIBILITY_NOTIFICATION',
|
||||||
|
'<html>
|
||||||
<body style="font-family: Arial, sans-serif; color: #000; line-height: 1.6;">
|
<body style="font-family: Arial, sans-serif; color: #000; line-height: 1.6;">
|
||||||
<div style="padding: 20px; border: 1px solid #ddd; border-radius: 8px; max-width: 600px; margin: auto;">
|
<div style="padding: 20px; border: 1px solid #ddd; border-radius: 8px; max-width: 600px; margin: auto;">
|
||||||
<p>Buongiorno,</p>
|
<p>Buongiorno,</p>
|
||||||
@@ -56,11 +97,27 @@ SET html_content = '<html>
|
|||||||
<p><strong>{{email_signature}}</strong></p>
|
<p><strong>{{email_signature}}</strong></p>
|
||||||
</div>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
</html>'
|
</html>',
|
||||||
WHERE "type" = 'ADMISSIBILITY_NOTIFICATION' AND "system" = true;
|
'BANDO {{call_name}} – Esito positivo istruttoria di ammissibilità {{company_name}}',
|
||||||
|
NULL,
|
||||||
|
true,
|
||||||
|
false,
|
||||||
|
'2024-10-26 20:00:00',
|
||||||
|
'2024-10-26 20:00:00'
|
||||||
|
);
|
||||||
|
|
||||||
UPDATE gepafin_schema.system_email_template
|
-- Insert for INADMISSIBILITY_NOTIFICATION
|
||||||
SET html_content = '<html>
|
INSERT INTO gepafin_schema.system_email_template
|
||||||
|
(
|
||||||
|
id, template_name, "type", html_content, subject, "json", "system",
|
||||||
|
is_deleted, created_date, updated_date
|
||||||
|
)
|
||||||
|
VALUES
|
||||||
|
(
|
||||||
|
6,
|
||||||
|
'Notification of Inadmissibility Template',
|
||||||
|
'INADMISSIBILITY_NOTIFICATION',
|
||||||
|
'<html>
|
||||||
<body style="font-family: Arial, sans-serif; color: #000; line-height: 1.6;">
|
<body style="font-family: Arial, sans-serif; color: #000; line-height: 1.6;">
|
||||||
<div style="padding: 20px; border: 1px solid #ddd; border-radius: 8px; max-width: 600px; margin: auto;">
|
<div style="padding: 20px; border: 1px solid #ddd; border-radius: 8px; max-width: 600px; margin: auto;">
|
||||||
<p>Buongiorno,</p>
|
<p>Buongiorno,</p>
|
||||||
@@ -74,5 +131,11 @@ SET html_content = '<html>
|
|||||||
<p><strong>{{email_signature}}</strong></p>
|
<p><strong>{{email_signature}}</strong></p>
|
||||||
</div>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
</html>'
|
</html>',
|
||||||
WHERE "type" = 'INADMISSIBILITY_NOTIFICATION' AND "system" = true;
|
'BANDO {{call_name}} – Esito negativo istruttoria di ammissibilità {{company_name}}',
|
||||||
|
NULL,
|
||||||
|
true,
|
||||||
|
false,
|
||||||
|
'2024-10-26 20:00:00',
|
||||||
|
'2024-10-26 20:00:00'
|
||||||
|
);
|
||||||
@@ -0,0 +1,78 @@
|
|||||||
|
UPDATE gepafin_schema.system_email_template
|
||||||
|
SET html_content = '<html>
|
||||||
|
<body style="font-family: Arial, sans-serif; color: #000; line-height: 1.6;">
|
||||||
|
<div style="padding: 20px; border: 1px solid #ddd; border-radius: 8px; max-width: 600px; margin: auto;">
|
||||||
|
<p><strong>RICHIESTA INTEGRAZIONE DOCUMENTALE</strong></p>
|
||||||
|
<p>Buongiorno,</p>
|
||||||
|
<p>In riferimento alla domanda di concessione di Finanziamento agevolato a valere sul Fondo prestiti
|
||||||
|
<strong>{{call_name}}</strong> di cui al <strong>Protocollo n. {{protocol_number}} del
|
||||||
|
{{protocol_date}} e {{protocol_time}}</strong>, alla luce dell’attività istruttoria svolta,
|
||||||
|
segnaliamo quanto segue:</p>
|
||||||
|
<ul>
|
||||||
|
<li>{{form_dataInput}}</li>
|
||||||
|
</ul>
|
||||||
|
<p>{{note}}</p>
|
||||||
|
<p>Vi invitiamo a fornire quanto sopra richiesto integrando la documentazione sia caricandola all’interno dello sportello
|
||||||
|
online <a href="{{platform_link}}">{{platform_link}}</a> che inviandola a mezzo PEC all’indirizzo
|
||||||
|
{{legal_mail}} entro e <strong>non oltre 10 giorni</strong> dal ricevimento della presente comunicazione,
|
||||||
|
precisando che, in caso di mancata ricezione nei termini indicati, saremo costretti a non prendere in considerazione la Vostra richiesta di finanziamento.</p>
|
||||||
|
<p>Vi informiamo che per la ricezione della PEC farà fede la ricevuta di avvenuta consegna che attesterà il buon esito
|
||||||
|
dell’invio. La documentazione trasmessa e le informazioni fornite saranno processate dall''istruttore assegnatario della pratica.</p>
|
||||||
|
<p>Distinti Saluti,</p>
|
||||||
|
<p><strong>{{email_signature}}</strong></p>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>'
|
||||||
|
WHERE "type" = 'DOCUMENTATION_INTEGRATION_REQUEST' AND "system" = true;
|
||||||
|
|
||||||
|
UPDATE gepafin_schema.system_email_template
|
||||||
|
SET html_content = '<html>
|
||||||
|
<body style="font-family: Arial, sans-serif; color: #000; line-height: 1.6;">
|
||||||
|
<div style="padding: 20px; border: 1px solid #ddd; border-radius: 8px; max-width: 600px; margin: auto;">
|
||||||
|
<p><strong>Comunicazione di non ammissibilità per mancata risposta a richiesta integrazione documentale</strong></p>
|
||||||
|
<p>Buongiorno,</p>
|
||||||
|
<p>Con posta elettronica certificata del <strong>{{date_time_emailSend}}</strong>, vi abbiamo comunicato che i documenti richiesti
|
||||||
|
dal Gestore sarebbero dovuti pervenire entro <strong>10 giorni</strong> dal ricevimento di detta comunicazione.
|
||||||
|
Trascorso il termine senza la ricezione dei documenti richiesti, il Gestore non ha potuto prendere in considerazione la richiesta di finanziamento.</p>
|
||||||
|
<p>È possibile presentare ricorso tramite modello disponibile nello sportello online
|
||||||
|
<a href="{{platform_link}}">{{platform_link}}</a> entro <strong>10 giorni</strong> dalla ricezione di questa comunicazione.</p>
|
||||||
|
<p>Distinti Saluti,</p>
|
||||||
|
<p><strong>{{email_signature}}</strong></p>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>'
|
||||||
|
WHERE "type" = 'INADMISSIBILITY_NOTIFICATION_DUE_TO_FAILURE' AND "system" = true;
|
||||||
|
|
||||||
|
UPDATE gepafin_schema.system_email_template
|
||||||
|
SET html_content = '<html>
|
||||||
|
<body style="font-family: Arial, sans-serif; color: #000; line-height: 1.6;">
|
||||||
|
<div style="padding: 20px; border: 1px solid #ddd; border-radius: 8px; max-width: 600px; margin: auto;">
|
||||||
|
<p>Buongiorno,</p>
|
||||||
|
<p>In riferimento alla domanda di concessione di Finanziamento agevolato “<strong>{{call_name}}</strong>” di cui al
|
||||||
|
<strong>Protocollo n. {{protocol_number}} del {{protocol_date}} alle {{protocol_time}}</strong>, l’istruttoria di ammissibilità
|
||||||
|
è stata completata con esito positivo.</p>
|
||||||
|
<p>Seguirà una comunicazione relativa alla valutazione tecnica ed economico-finanziaria ai fini della valutazione finale.</p>
|
||||||
|
<p>Distinti Saluti,</p>
|
||||||
|
<p><strong>{{email_signature}}</strong></p>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>'
|
||||||
|
WHERE "type" = 'ADMISSIBILITY_NOTIFICATION' AND "system" = true;
|
||||||
|
|
||||||
|
UPDATE gepafin_schema.system_email_template
|
||||||
|
SET html_content = '<html>
|
||||||
|
<body style="font-family: Arial, sans-serif; color: #000; line-height: 1.6;">
|
||||||
|
<div style="padding: 20px; border: 1px solid #ddd; border-radius: 8px; max-width: 600px; margin: auto;">
|
||||||
|
<p>Buongiorno,</p>
|
||||||
|
<p>In riferimento alla domanda di concessione di Finanziamento agevolato “<strong>{{call_name}}</strong>” di cui al
|
||||||
|
<strong>Protocollo n. {{protocol_number}} del {{protocol_date}} alle {{protocol_time}}</strong>,
|
||||||
|
l''istruttoria di ammissibilità è stata completata con esito negativo.</p>
|
||||||
|
<p>Motivazioni: <strong>{{form_text}}</strong></p>
|
||||||
|
<p>È possibile presentare ricorso tramite modello disponibile nello sportello online
|
||||||
|
<a href="{{platform_link}}">{{platform_link}}</a> entro <strong>10 giorni</strong> dalla ricezione di questa comunicazione.</p>
|
||||||
|
<p>Distinti Saluti,</p>
|
||||||
|
<p><strong>{{email_signature}}</strong></p>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>'
|
||||||
|
WHERE "type" = 'INADMISSIBILITY_NOTIFICATION' AND "system" = true;
|
||||||
Reference in New Issue
Block a user