Done changes related to application rejected

This commit is contained in:
rajesh
2025-10-16 17:40:56 +05:30
parent 33009b232e
commit e83e121ba0
23 changed files with 167 additions and 55 deletions

View File

@@ -622,6 +622,7 @@ public class GepafinConstant {
public static final String SUBJECT = "subject"; public static final String SUBJECT = "subject";
public static final List<String> MANUAL_EMAIL_KEYS = Arrays.asList(SUBJECT, MESSAGE); public static final List<String> MANUAL_EMAIL_KEYS = Arrays.asList(SUBJECT, MESSAGE);
public static final String INVALID_EMAIL_JSON = "invalid.email.json"; public static final String INVALID_EMAIL_JSON = "invalid.email.json";
public static final String MORE_FIELDS_REQUIRED_FOR_REJECTION="more.fields.required";
} }

View File

@@ -599,6 +599,8 @@ public class ApplicationAmendmentRequestDao {
String body = emailContent.getBody(); String body = emailContent.getBody();
response.setEmailTemplate(body); response.setEmailTemplate(body);
} }
response.setAmendmentType(entity.getType());
response.setAmendmentDocumentType(entity.getAmendmentDocumentType());
return response; return response;
} }

View File

@@ -19,8 +19,10 @@ import net.gepafin.tendermanagement.web.rest.api.errors.Status;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.json.JSONObject; import org.json.JSONObject;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import org.springframework.web.multipart.MultipartFile;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.text.MessageFormat; import java.text.MessageFormat;
@@ -146,6 +148,11 @@ public class ApplicationEvaluationDao {
@Autowired @Autowired
private EmailDao emailDao; private EmailDao emailDao;
@Autowired
private DocumentDao documentDao;
@Value("${default.hub.uuid}")
private String defaultHubUuid;
private ApplicationEvaluationEntity convertToEntity(UserEntity user, ApplicationEvaluationRequest req, Long assignedApplciationId) { private ApplicationEvaluationEntity convertToEntity(UserEntity user, ApplicationEvaluationRequest req, Long assignedApplciationId) {
@@ -182,7 +189,7 @@ public class ApplicationEvaluationDao {
ApplicationEvaluationResponse response = new ApplicationEvaluationResponse(); ApplicationEvaluationResponse response = new ApplicationEvaluationResponse();
populateBasicDetails(entity, response); populateBasicDetails(entity, response);
ApplicationEntity applicationEntity=entity.getAssignedApplicationsEntity().getApplication();
CallEntity call = callRepository.findCallEntityByApplicationId(entity.getApplicationId()); CallEntity call = callRepository.findCallEntityByApplicationId(entity.getApplicationId());
List<EvaluationCriteriaEntity> evaluationCriterias = evaluationCriteriaRepository List<EvaluationCriteriaEntity> evaluationCriterias = evaluationCriteriaRepository
.findByCallIdAndLookupDataTypeAndIsDeletedFalse(call.getId(), LookUpDataEntity.LookUpDataTypeEnum.EVALUATION_CRITERIA.getValue()); .findByCallIdAndLookupDataTypeAndIsDeletedFalse(call.getId(), LookUpDataEntity.LookUpDataTypeEnum.EVALUATION_CRITERIA.getValue());
@@ -201,10 +208,39 @@ public class ApplicationEvaluationDao {
List<EvaluationDocumentRequest> allDocs = prepareEvaluationDocumentBeanList(entity); List<EvaluationDocumentRequest> allDocs = prepareEvaluationDocumentBeanList(entity);
setEvaluationDocResponse(response, allDocs); setEvaluationDocResponse(response, allDocs);
setApplicationDetails(response, entity); setApplicationDetails(response, entity);
setRejectedDocuments(applicationEntity, response);
return response; return response;
} }
private void setRejectedDocuments(ApplicationEntity applicationEntity, ApplicationEvaluationResponse response) {
List<DocumentResponseBean> initialDocumentBeans = new ArrayList<>();
String initialDocuments = applicationEntity.getRejectedDocument();
if (initialDocuments != null && !initialDocuments.trim().isEmpty()) {
// Split the comma-separated values and process them
List<String> documentIds = Arrays.stream(initialDocuments.split(","))
.map(String::trim)
.filter(id -> !id.isEmpty())
.collect(Collectors.toList());
initialDocumentBeans.addAll(
documentIds.stream()
.map(id -> {
try {
return applicationAmendmentRequestDao.createDocumentResponseBean(id); // Convert to Long
} catch (NumberFormatException e) {
// Handle invalid document IDs gracefully
return null;
}
})
.filter(Objects::nonNull) // Skip null responses
.collect(Collectors.toList())
);
}
response.setRejectedDocument(initialDocumentBeans);
}
private void setAmendmentDetails(ApplicationEvaluationEntity entity, ApplicationEvaluationResponse response) { private void setAmendmentDetails(ApplicationEvaluationEntity entity, ApplicationEvaluationResponse response) {
List<ApplicationAmendmentRequestEntity> amendmentRequests=applicationAmendmentRequestRepository.findAllByApplicationEvaluationIdAndIsDeletedFalse(entity.getId()); List<ApplicationAmendmentRequestEntity> amendmentRequests=applicationAmendmentRequestRepository.findAllByApplicationEvaluationIdAndIsDeletedFalse(entity.getId());
List<AmendmentDocumentResponseBean> amendmentDocumentResponseBeans=new ArrayList<>(); List<AmendmentDocumentResponseBean> amendmentDocumentResponseBeans=new ArrayList<>();
@@ -653,7 +689,7 @@ public class ApplicationEvaluationDao {
public ApplicationEvaluationResponse createOrUpdateApplicationEvaluation( public ApplicationEvaluationResponse createOrUpdateApplicationEvaluation(
UserEntity user, UserEntity user,
ApplicationEvaluationRequest req, ApplicationEvaluationRequest req,
Long assignedApplicationId) { Long assignedApplicationId, List<MultipartFile> rejectedDocuments) {
log.info("Start createOrUpdateApplicationEvaluation: assignedApplicationId={}, userId={}", assignedApplicationId, user.getId()); log.info("Start createOrUpdateApplicationEvaluation: assignedApplicationId={}, userId={}", assignedApplicationId, user.getId());
Optional<ApplicationEvaluationEntity> existingEntityOptional = Optional<ApplicationEvaluationEntity> existingEntityOptional =
@@ -741,7 +777,7 @@ public class ApplicationEvaluationDao {
if (status != null) { if (status != null) {
AssignedApplicationsEntity assignedApplicationsEntity = assignedApplications.get(); AssignedApplicationsEntity assignedApplicationsEntity = assignedApplications.get();
return updateApplicationEvaluationStatus(application, assignedApplicationsEntity, status); return updateApplicationEvaluationStatus(application, assignedApplicationsEntity, status,rejectedDocuments,req);
} else { } else {
return convertToResponse(entity); return convertToResponse(entity);
} }
@@ -1903,7 +1939,7 @@ public class ApplicationEvaluationDao {
} }
public ApplicationEvaluationResponse updateApplicationEvaluationStatus(ApplicationEntity application, AssignedApplicationsEntity assignedApplicationsEntity, public ApplicationEvaluationResponse updateApplicationEvaluationStatus(ApplicationEntity application, AssignedApplicationsEntity assignedApplicationsEntity,
ApplicationStatusForEvaluation newStatus) { ApplicationStatusForEvaluation newStatus, List<MultipartFile> files,ApplicationEvaluationRequest applicationEvaluationRequest) {
log.info("Starting updateApplicationEvaluationStatus for applicationId: {}, assignedApplicationId: {}, newStatus: {}", log.info("Starting updateApplicationEvaluationStatus for applicationId: {}, assignedApplicationId: {}, newStatus: {}",
application.getId(), assignedApplicationsEntity.getId(), newStatus); application.getId(), assignedApplicationsEntity.getId(), newStatus);
@@ -1942,17 +1978,17 @@ public class ApplicationEvaluationDao {
log.info("Application status updated to {} for applicationId: {}", newStatus, application.getId()); log.info("Application status updated to {} for applicationId: {}", newStatus, application.getId());
} }
// if(newStatus.equals(ApplicationStatusForEvaluation.TECHNICAL_EVALUATION_REJECTED)) { if(newStatus.equals(ApplicationStatusForEvaluation.TECHNICAL_EVALUATION_REJECTED)) {
// application.setStatus(newStatus.getValue()); application.setStatus(newStatus.getValue());
// log.info("Application status updated to {} for applicationId: {}", newStatus, application.getId()); log.info("Application status updated to {} for applicationId: {}", newStatus, application.getId());
// emailNotificationDao.sendMailForApplicationTechnicalEvaluationRejected(application,hub,existingEntity); emailNotificationDao.sendMailForApplicationTechnicalEvaluationRejected(application,hub,existingEntity);
// application.setDateRejected(DateTimeUtil.DateServerToUTC(LocalDateTime.now())); application.setDateRejected(DateTimeUtil.DateServerToUTC(LocalDateTime.now()));
// emailSendResponse = emailDao.buildEmailSendResponseFromRequest(request); emailSendResponse = emailDao.buildEmailSendResponseFromRequest(request);
// responses = List.of(emailSendResponse); responses = List.of(emailSendResponse);
// if (!Boolean.TRUE.equals(emailSendResponse.getIsEmailSend())) { if (!Boolean.TRUE.equals(emailSendResponse.getIsEmailSend())) {
// saveEmailSendResponseToEvaluation(emailSendResponse, existingEntity); saveEmailSendResponseToEvaluation(emailSendResponse, existingEntity);
// } }
// } }
application = applicationRepository.save(application); application = applicationRepository.save(application);
ApplicationEvaluationEntity oldApplicationEvaluation = Utils.getClonedEntityForData(existingEntity); ApplicationEvaluationEntity oldApplicationEvaluation = Utils.getClonedEntityForData(existingEntity);
@@ -1997,10 +2033,28 @@ public class ApplicationEvaluationDao {
notificationDao.sendNotificationToBeneficiary(application, NotificationTypeEnum.EVALUATION_RESULT); notificationDao.sendNotificationToBeneficiary(application, NotificationTypeEnum.EVALUATION_RESULT);
} }
if (Boolean.TRUE.equals(statusType.equals((ApplicationStatusTypeEnum.REJECTED.getValue())))) { if (Boolean.TRUE.equals(statusType.equals((ApplicationStatusTypeEnum.REJECTED.getValue())))) {
String tipoInammissibilita =null;
if(Boolean.TRUE.equals(hub.getUniqueUuid().equals(defaultHubUuid))) {
if (applicationEvaluationRequest.getMotivation() == null || applicationEvaluationRequest.getRejectedReason() == null) {
throw new CustomValidationException(Status.VALIDATION_ERROR, Translator.toLocale(GepafinConstant.MORE_FIELDS_REQUIRED_FOR_REJECTION));
}
if (files != null) {
List<DocumentResponseBean> documentResponseBeans = uploadRejectedDocument(user.getId(), files, application);
List<Long> rejectedDocumentIds = documentResponseBeans.stream()
.map(DocumentResponseBean::getId)
.collect(Collectors.toList());
String rejectedDocumentId = rejectedDocumentIds.stream()
.map(String::valueOf)
.collect(Collectors.joining(","));
application.setRejectedDocument(rejectedDocumentId);
}
tipoInammissibilita=applicationEvaluationRequest.getRejectedReason();
application.setRejectedReason(applicationEvaluationRequest.getRejectedReason());
}
application.setDateRejected(DateTimeUtil.DateServerToUTC(LocalDateTime.now())); application.setDateRejected(DateTimeUtil.DateServerToUTC(LocalDateTime.now()));
application.setUpdatedDate(DateTimeUtil.DateServerToUTC(LocalDateTime.now())); application.setUpdatedDate(DateTimeUtil.DateServerToUTC(LocalDateTime.now()));
application = applicationRepository.save(application); application = applicationRepository.save(application);
emailNotificationDao.sendInadmissibilityEmailForRejectedApplication(application,existingEntity); emailNotificationDao.sendInadmissibilityEmailForRejectedApplication(application,existingEntity,tipoInammissibilita);
emailSendResponse = emailDao.buildEmailSendResponseFromRequest(request); emailSendResponse = emailDao.buildEmailSendResponseFromRequest(request);
responses = List.of(emailSendResponse); responses = List.of(emailSendResponse);
if (!Boolean.TRUE.equals(emailSendResponse.getIsEmailSend())) { if (!Boolean.TRUE.equals(emailSendResponse.getIsEmailSend())) {
@@ -2083,7 +2137,7 @@ public class ApplicationEvaluationDao {
return convertToResponse(savedEntity); return convertToResponse(savedEntity);
} }
public ApplicationEvaluationFormResponse createApplicationEvaluation(HttpServletRequest request, ApplicationEvaluationFormRequestBean applicationEvaluationFormRequestBean, Long evaluationFormId, Long assignedApplicationId){ public ApplicationEvaluationFormResponse createApplicationEvaluation(HttpServletRequest request, List<MultipartFile> files, ApplicationEvaluationFormRequestBean applicationEvaluationFormRequestBean, Long evaluationFormId, Long assignedApplicationId){
log.info("Start createApplicationEvaluation - assignedApplicationId: {}, evaluationFormId: {}", assignedApplicationId, evaluationFormId); log.info("Start createApplicationEvaluation - assignedApplicationId: {}, evaluationFormId: {}", assignedApplicationId, evaluationFormId);
UserEntity user = validator.validateUser(request); UserEntity user = validator.validateUser(request);
@@ -2094,7 +2148,7 @@ public class ApplicationEvaluationDao {
ApplicationEvaluationRequest req = convertToApplicationEvaluationRequest(applicationEvaluationFormRequestBean); ApplicationEvaluationRequest req = convertToApplicationEvaluationRequest(applicationEvaluationFormRequestBean);
// Call the existing method to create or update evaluation // Call the existing method to create or update evaluation
ApplicationEvaluationResponse evaluationResponse = createOrUpdateApplicationEvaluation(user, req, assignedApplicationId); ApplicationEvaluationResponse evaluationResponse = createOrUpdateApplicationEvaluation(user, req, assignedApplicationId,files);
ApplicationEvaluationEntity entity = applicationEvaluationService.validateApplicationEvaluation(evaluationResponse.getId()); ApplicationEvaluationEntity entity = applicationEvaluationService.validateApplicationEvaluation(evaluationResponse.getId());
@@ -2415,7 +2469,7 @@ public class ApplicationEvaluationDao {
request.setApplicationStatus(formRequestBean.getApplicationStatus()); request.setApplicationStatus(formRequestBean.getApplicationStatus());
request.setMotivation(formRequestBean.getMotivation()); request.setMotivation(formRequestBean.getMotivation());
request.setAmountAccepted(formRequestBean.getAmountAccepted()); request.setAmountAccepted(formRequestBean.getAmountAccepted());
request.setRejectedReason(formRequestBean.getRejectedReason());
request.setCriteria(null); request.setCriteria(null);
request.setChecklist(null); request.setChecklist(null);
@@ -2625,7 +2679,6 @@ public class ApplicationEvaluationDao {
log.info("Application status updated to {} for applicationId: {}", ApplicationStatusForEvaluation.TECHNICAL_EVALUATION_REJECTED, application.getId()); log.info("Application status updated to {} for applicationId: {}", ApplicationStatusForEvaluation.TECHNICAL_EVALUATION_REJECTED, application.getId());
emailNotificationDao.sendMailForApplicationTechnicalEvaluationRejected(application, hub, existingEntity); emailNotificationDao.sendMailForApplicationTechnicalEvaluationRejected(application, hub, existingEntity);
application.setDateRejected(DateTimeUtil.DateServerToUTC(LocalDateTime.now())); application.setDateRejected(DateTimeUtil.DateServerToUTC(LocalDateTime.now()));
application.setEmailJson(Utils.convertMapIntoJsonString(applicationRequest.getEmailJson()));
emailSendResponse = emailDao.buildEmailSendResponseFromRequest(request); emailSendResponse = emailDao.buildEmailSendResponseFromRequest(request);
responses = List.of(emailSendResponse); responses = List.of(emailSendResponse);
if (!Boolean.TRUE.equals(emailSendResponse.getIsEmailSend())) { if (!Boolean.TRUE.equals(emailSendResponse.getIsEmailSend())) {
@@ -2643,5 +2696,11 @@ public class ApplicationEvaluationDao {
} }
return null; return null;
} }
public List<DocumentResponseBean> uploadRejectedDocument(Long userId,List<MultipartFile> files,ApplicationEntity application){
if(files!=null) {
return documentDao.uploadFiles(userId, files, application.getId(), DocumentSourceTypeEnum.APPLICATION, DocumentTypeEnum.DOCUMENT);
}
return new ArrayList<>();
}
} }

View File

@@ -116,7 +116,7 @@ public class AssignedApplicationsDao {
UserEntity user = userService.validateUser(userId); UserEntity user = userService.validateUser(userId);
AssignedApplicationsEntity assignment = createAssignmentEntity(application, user.getId(), assignedByUser, assignedApplicationsRequest); AssignedApplicationsEntity assignment = createAssignmentEntity(application, user.getId(), assignedByUser, assignedApplicationsRequest);
applicationEvaluationDao.createOrUpdateApplicationEvaluation(user, new ApplicationEvaluationRequest(), assignment.getId()); applicationEvaluationDao.createOrUpdateApplicationEvaluation(user, new ApplicationEvaluationRequest(), assignment.getId(),null);
AssignedApplicationsResponse assignApplicationToInstructorResponse = convertEntityToResponse(assignment); AssignedApplicationsResponse assignApplicationToInstructorResponse = convertEntityToResponse(assignment);
log.info("Application assigned succesfully {}", assignApplicationToInstructorResponse); log.info("Application assigned succesfully {}", assignApplicationToInstructorResponse);
return assignApplicationToInstructorResponse; return assignApplicationToInstructorResponse;

View File

@@ -12,7 +12,6 @@ import net.gepafin.tendermanagement.enums.DocumentTypeEnum;
import net.gepafin.tendermanagement.enums.VersionActionTypeEnum; import net.gepafin.tendermanagement.enums.VersionActionTypeEnum;
import net.gepafin.tendermanagement.model.request.CommunicationRequestBean; import net.gepafin.tendermanagement.model.request.CommunicationRequestBean;
import net.gepafin.tendermanagement.model.request.VersionHistoryRequest; import net.gepafin.tendermanagement.model.request.VersionHistoryRequest;
import net.gepafin.tendermanagement.model.response.ApplicationAmendmentResponse;
import net.gepafin.tendermanagement.model.response.CommunicationResponseBean; import net.gepafin.tendermanagement.model.response.CommunicationResponseBean;
import net.gepafin.tendermanagement.model.response.DocumentResponseBean; import net.gepafin.tendermanagement.model.response.DocumentResponseBean;
import net.gepafin.tendermanagement.repositories.CommunicationRepository; import net.gepafin.tendermanagement.repositories.CommunicationRepository;
@@ -117,7 +116,7 @@ public class CommunicationDao {
return "Deleted Comment Successfully."; return "Deleted Comment Successfully.";
} }
public ApplicationAmendmentResponse getAmendmentComments(Long amendmentId) { public List<CommunicationResponseBean> getAmendmentComments(Long amendmentId) {
ApplicationAmendmentRequestEntity amendmentData = applicationAmendmentRequestService.validateApplicationAmendmentRequest(amendmentId); ApplicationAmendmentRequestEntity amendmentData = applicationAmendmentRequestService.validateApplicationAmendmentRequest(amendmentId);
List<CommunicationEntity> commentsList = communicationRepository.findByApplicationAmendmentRequestIdAndIsDeletedFalse(amendmentId); List<CommunicationEntity> commentsList = communicationRepository.findByApplicationAmendmentRequestIdAndIsDeletedFalse(amendmentId);
@@ -130,7 +129,7 @@ public class CommunicationDao {
CommunicationResponseBean communicationResponseBean=convertToCommunicationResponseBean(communicationEntity,communicationDocumentBeans); CommunicationResponseBean communicationResponseBean=convertToCommunicationResponseBean(communicationEntity,communicationDocumentBeans);
communicationResponseBeans.add(communicationResponseBean); communicationResponseBeans.add(communicationResponseBean);
} }
return new ApplicationAmendmentResponse(amendmentData, communicationResponseBeans); return communicationResponseBeans;
} }
public CommunicationResponseBean updateAmendmentComment(CommunicationRequestBean communicationRequestBean, Long amendmentId, Long commentId) { public CommunicationResponseBean updateAmendmentComment(CommunicationRequestBean communicationRequestBean, Long amendmentId, Long commentId) {

View File

@@ -158,8 +158,15 @@ public class EmailNotificationDao {
: new HashSet<>(documentIds); : new HashSet<>(documentIds);
documentEntities=documentRepository.findAllByIdInAndIsDeletedFalse(setOfDocumentIds); documentEntities=documentRepository.findAllByIdInAndIsDeletedFalse(setOfDocumentIds);
} }
if(Boolean.TRUE.equals(userEntity.getHub().getUniqueUuid().equals(defaultHubUuid)) && Boolean.TRUE.equals(systemEmailTemplateResponse.getEmailScenario().equals(EmailScenarioTypeEnum.APPLICATION_REJECTED))) {
List<Long> documentIds=applicationDao.validateDocumentIds(applicationEntity.getRejectedDocument());
Set<Long> setOfDocumentIds = (documentIds == null)
? Collections.emptySet()
: new HashSet<>(documentIds);
documentEntities=documentRepository.findAllByIdInAndIsDeletedFalse(setOfDocumentIds);
}
urls = documentEntities.stream() urls = documentEntities.stream()
.map(DocumentEntity::getFilePath) // or getUrl() .map(DocumentEntity::getFilePath) // or getUrl()
.collect(Collectors.toList()); .collect(Collectors.toList());
if(Boolean.FALSE.equals(urls.isEmpty())) { if(Boolean.FALSE.equals(urls.isEmpty())) {
@@ -376,7 +383,7 @@ public class EmailNotificationDao {
sendEmail(applicationEntity, SystemEmailTemplatesEntity.SystemEmailTemplatesEntityTypeEnum.ADMISSIBILITY_NOTIFICATION, bodyPlaceholders, null,null); sendEmail(applicationEntity, SystemEmailTemplatesEntity.SystemEmailTemplatesEntityTypeEnum.ADMISSIBILITY_NOTIFICATION, bodyPlaceholders, null,null);
} }
public void sendInadmissibilityEmailForRejectedApplication(ApplicationEntity applicationEntity,ApplicationEvaluationEntity applicationEvaluationEntity) { public void sendInadmissibilityEmailForRejectedApplication(ApplicationEntity applicationEntity,ApplicationEvaluationEntity applicationEvaluationEntity,String tipoInammissibilita) {
Map<String, String> bodyPlaceholders = new HashMap<>(); Map<String, String> bodyPlaceholders = new HashMap<>();
bodyPlaceholders.put("{{call_name}}", applicationEntity.getCall().getName()); bodyPlaceholders.put("{{call_name}}", applicationEntity.getCall().getName());
String protocolNumber=applicationEntity.getProtocol().getExternalProtocolNumber(); String protocolNumber=applicationEntity.getProtocol().getExternalProtocolNumber();
@@ -390,8 +397,9 @@ public class EmailNotificationDao {
} }
bodyPlaceholders.put("{{protocol_date}}", protocolDate); bodyPlaceholders.put("{{protocol_date}}", protocolDate);
bodyPlaceholders.put("{{protocol_time}}", DateTimeUtil.parseLocalTimeToString(applicationEntity.getProtocol().getTime(), GepafinConstant.HH_MM_SS)); bodyPlaceholders.put("{{protocol_time}}", DateTimeUtil.parseLocalTimeToString(applicationEntity.getProtocol().getTime(), GepafinConstant.HH_MM_SS));
HubEntity hubEntity = hubService.valdateHub(applicationEntity.getHubId());
bodyPlaceholders.put("{{tipo_inammissibilita}}", tipoInammissibilita);
bodyPlaceholders.put("{{form_text}}", applicationEvaluationEntity.getMotivation()); bodyPlaceholders.put("{{form_text}}", applicationEvaluationEntity.getMotivation());
sendEmail(applicationEntity, SystemEmailTemplatesEntity.SystemEmailTemplatesEntityTypeEnum.INADMISSIBILITY_TEMPLATE, bodyPlaceholders, null,null); sendEmail(applicationEntity, SystemEmailTemplatesEntity.SystemEmailTemplatesEntityTypeEnum.INADMISSIBILITY_TEMPLATE, bodyPlaceholders, null,null);
} }

View File

@@ -79,9 +79,12 @@ public class ApplicationEntity extends BaseEntity {
@Column(name="VAT_NUMBER") @Column(name="VAT_NUMBER")
private String vatNumber; private String vatNumber;
@Column(name = "EMAIL_JSON")
private String emailJson;
@Column(name = "PREVIOUS_STATUS") @Column(name = "PREVIOUS_STATUS")
private String previousStatus; private String previousStatus;
@Column(name = "REJECTED_REASON")
private String rejectedReason;
@Column(name = "REJECTED_DOCUMENT")
private String rejectedDocument;
} }

View File

@@ -16,4 +16,5 @@ public class ApplicationEvaluationFormRequestBean {
private List<ApplicationFormFieldRequestBean> formFields; private List<ApplicationFormFieldRequestBean> formFields;
private String motivation; private String motivation;
private BigDecimal amountAccepted; private BigDecimal amountAccepted;
private String rejectedReason;
} }

View File

@@ -17,4 +17,5 @@ public class ApplicationEvaluationRequest {
private ApplicationStatusForEvaluation applicationStatus; private ApplicationStatusForEvaluation applicationStatus;
private String motivation; private String motivation;
private BigDecimal amountAccepted; private BigDecimal amountAccepted;
private String rejectedReason;
} }

View File

@@ -34,4 +34,6 @@ public class ApplicationAmendmentRequestResponse {
private String emailTemplate; private String emailTemplate;
private List<EmailSendResponse> emailSendResponse; private List<EmailSendResponse> emailSendResponse;
private List<DocumentResponseBean> amendmentInitialDocuments; private List<DocumentResponseBean> amendmentInitialDocuments;
private String amendmentType;
private String amendmentDocumentType;
} }

View File

@@ -50,5 +50,6 @@ public class ApplicationEvaluationResponse {
private String companyVatNumber; private String companyVatNumber;
private String companyCodiceAteco; private String companyCodiceAteco;
private List<EmailSendResponse> emailSendResponse; private List<EmailSendResponse> emailSendResponse;
private List<DocumentResponseBean> rejectedDocument;
} }

View File

@@ -5,6 +5,7 @@ import net.gepafin.tendermanagement.entities.ApplicationEvaluationEntity;
import net.gepafin.tendermanagement.enums.FormActionEnum; import net.gepafin.tendermanagement.enums.FormActionEnum;
import net.gepafin.tendermanagement.model.request.*; import net.gepafin.tendermanagement.model.request.*;
import net.gepafin.tendermanagement.model.response.*; import net.gepafin.tendermanagement.model.response.*;
import org.springframework.web.multipart.MultipartFile;
import java.util.List; import java.util.List;
@@ -12,7 +13,7 @@ public interface ApplicationEvaluationService {
ApplicationEvaluationResponse createOrUpdateApplicationEvaluation( ApplicationEvaluationResponse createOrUpdateApplicationEvaluation(
HttpServletRequest request, HttpServletRequest request,
ApplicationEvaluationRequest applicationEvaluationRequest, ApplicationEvaluationRequest applicationEvaluationRequest,
Long assignedApplicationsId); Long assignedApplicationsId, List<MultipartFile> rejectedDocuments);
void deleteApplicationEvaluation(HttpServletRequest request,Long id); void deleteApplicationEvaluation(HttpServletRequest request,Long id);
@@ -21,7 +22,7 @@ public interface ApplicationEvaluationService {
ApplicationEvaluationEntity validateApplicationEvaluationByApplicationId(Long applicationId); ApplicationEvaluationEntity validateApplicationEvaluationByApplicationId(Long applicationId);
ApplicationEvaluationFormResponse createApplicationEvaluation(HttpServletRequest request, ApplicationEvaluationFormRequestBean applicationEvaluationFormRequestBean, Long evaluationId, Long evaluationFormId); ApplicationEvaluationFormResponse createApplicationEvaluation(HttpServletRequest request, List<MultipartFile> rejectedDocuments, ApplicationEvaluationFormRequestBean applicationEvaluationFormRequestBean, Long evaluationId, Long evaluationFormId);
ApplicationEvaluationFormResponse getApplicationEvaluationForm(HttpServletRequest request, Long applicationId, Long assignedApplicationId); ApplicationEvaluationFormResponse getApplicationEvaluationForm(HttpServletRequest request, Long applicationId, Long assignedApplicationId);

View File

@@ -2,7 +2,6 @@ package net.gepafin.tendermanagement.service;
import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletRequest;
import net.gepafin.tendermanagement.model.request.CommunicationRequestBean; import net.gepafin.tendermanagement.model.request.CommunicationRequestBean;
import net.gepafin.tendermanagement.model.response.ApplicationAmendmentResponse;
import net.gepafin.tendermanagement.model.response.CommunicationResponseBean; import net.gepafin.tendermanagement.model.response.CommunicationResponseBean;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
@@ -15,5 +14,5 @@ public interface CommunicationService {
CommunicationResponseBean updateAmendmentComment(HttpServletRequest request,CommunicationRequestBean communicationRequestBean, Long amendmentId, Long commentId); CommunicationResponseBean updateAmendmentComment(HttpServletRequest request,CommunicationRequestBean communicationRequestBean, Long amendmentId, Long commentId);
ApplicationAmendmentResponse getAmendmentComments(HttpServletRequest request,Long id); List<CommunicationResponseBean> getAmendmentComments(HttpServletRequest request,Long id);
} }

View File

@@ -22,6 +22,7 @@ import net.gepafin.tendermanagement.util.Validator;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
import java.util.List; import java.util.List;
@@ -47,13 +48,13 @@ public class ApplicationEvaluationServiceImpl implements ApplicationEvaluationSe
public ApplicationEvaluationResponse createOrUpdateApplicationEvaluation( public ApplicationEvaluationResponse createOrUpdateApplicationEvaluation(
HttpServletRequest request, HttpServletRequest request,
ApplicationEvaluationRequest req, ApplicationEvaluationRequest req,
Long assignedApplicationsId) { Long assignedApplicationsId, List<MultipartFile> rejectedDocuments) {
AssignedApplicationsEntity assignedApplication =assignedApplicationsService.validateAssignedApplication(assignedApplicationsId); AssignedApplicationsEntity assignedApplication =assignedApplicationsService.validateAssignedApplication(assignedApplicationsId);
UserEntity user = validator.validatePreInstructor(request, assignedApplication.getUserId()); UserEntity user = validator.validatePreInstructor(request, assignedApplication.getUserId());
return applicationEvaluationDao.createOrUpdateApplicationEvaluation(user, req, assignedApplication.getId()); return applicationEvaluationDao.createOrUpdateApplicationEvaluation(user, req, assignedApplication.getId(),rejectedDocuments);
} }
@Override @Override
@@ -88,10 +89,10 @@ public class ApplicationEvaluationServiceImpl implements ApplicationEvaluationSe
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public ApplicationEvaluationFormResponse createApplicationEvaluation(HttpServletRequest request, ApplicationEvaluationFormRequestBean applicationEvaluationFormRequestBean, Long assignedApplicationId, Long evaluationFormId) { public ApplicationEvaluationFormResponse createApplicationEvaluation(HttpServletRequest request, List<MultipartFile> rejectedDocuments, ApplicationEvaluationFormRequestBean applicationEvaluationFormRequestBean, Long assignedApplicationId, Long evaluationFormId) {
AssignedApplicationsEntity assignedApplicationsEntity = assignedApplicationsService.validateAssignedApplication(assignedApplicationId); AssignedApplicationsEntity assignedApplicationsEntity = assignedApplicationsService.validateAssignedApplication(assignedApplicationId);
validator.validatePreInstructor(request, assignedApplicationsEntity.getUserId()); validator.validatePreInstructor(request, assignedApplicationsEntity.getUserId());
return applicationEvaluationDao.createApplicationEvaluation(request,applicationEvaluationFormRequestBean,evaluationFormId,assignedApplicationId); return applicationEvaluationDao.createApplicationEvaluation(request,rejectedDocuments,applicationEvaluationFormRequestBean,evaluationFormId,assignedApplicationId);
} }
@Override @Override

View File

@@ -5,7 +5,6 @@ import net.gepafin.tendermanagement.dao.ApplicationAmendmentRequestDao;
import net.gepafin.tendermanagement.dao.CommunicationDao; import net.gepafin.tendermanagement.dao.CommunicationDao;
import net.gepafin.tendermanagement.entities.ApplicationAmendmentRequestEntity; import net.gepafin.tendermanagement.entities.ApplicationAmendmentRequestEntity;
import net.gepafin.tendermanagement.model.request.CommunicationRequestBean; import net.gepafin.tendermanagement.model.request.CommunicationRequestBean;
import net.gepafin.tendermanagement.model.response.ApplicationAmendmentResponse;
import net.gepafin.tendermanagement.model.response.CommunicationResponseBean; import net.gepafin.tendermanagement.model.response.CommunicationResponseBean;
import net.gepafin.tendermanagement.service.CommunicationService; import net.gepafin.tendermanagement.service.CommunicationService;
import net.gepafin.tendermanagement.util.Validator; import net.gepafin.tendermanagement.util.Validator;
@@ -66,7 +65,7 @@ public class CommunicationServiceImpl implements CommunicationService {
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public ApplicationAmendmentResponse getAmendmentComments(HttpServletRequest request,Long id) { public List<CommunicationResponseBean> getAmendmentComments(HttpServletRequest request,Long id) {
ApplicationAmendmentRequestEntity applicationAmendmentRequestEntity = applicationAmendmentRequestDao.validateApplicationAmendmentRequest(id); ApplicationAmendmentRequestEntity applicationAmendmentRequestEntity = applicationAmendmentRequestDao.validateApplicationAmendmentRequest(id);
if (Boolean.FALSE.equals(validator.checkIsBeneficiary())) { if (Boolean.FALSE.equals(validator.checkIsBeneficiary())) {
validator.validatePreInstructor(request, applicationAmendmentRequestEntity.getApplicationEvaluationEntity().getUserId()); validator.validatePreInstructor(request, applicationAmendmentRequestEntity.getApplicationEvaluationEntity().getUserId());

View File

@@ -15,6 +15,7 @@ import net.gepafin.tendermanagement.web.rest.api.errors.ErrorConstants;
import org.springframework.http.MediaType; import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import java.util.List; import java.util.List;
@@ -28,11 +29,12 @@ public interface ApplicationEvaluationApi {
@ApiResponse(responseCode = "400", description = "Bad Request", content = @Content(mediaType = MediaType.APPLICATION_JSON_VALUE, examples = { @ApiResponse(responseCode = "400", description = "Bad Request", content = @Content(mediaType = MediaType.APPLICATION_JSON_VALUE, examples = {
@ExampleObject(value = ErrorConstants.BADREQUEST_ERROR_EXAMPLE) })) @ExampleObject(value = ErrorConstants.BADREQUEST_ERROR_EXAMPLE) }))
}) })
@PutMapping(value = "/{assignedApplicationsId}", produces = MediaType.APPLICATION_JSON_VALUE, consumes = MediaType.APPLICATION_JSON_VALUE) @PutMapping(value = "/{assignedApplicationsId}", produces = MediaType.APPLICATION_JSON_VALUE, consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
ResponseEntity<Response<ApplicationEvaluationResponse>> createOrUpdateApplicationEvaluation( ResponseEntity<Response<ApplicationEvaluationResponse>> createOrUpdateApplicationEvaluation(
HttpServletRequest request, HttpServletRequest request,
@Parameter(description = "Assigned Application ID", required = true) @PathVariable("assignedApplicationsId") Long assignedApplicationsId, @Parameter(description = "Assigned Application ID", required = true) @PathVariable("assignedApplicationsId") Long assignedApplicationsId, @Parameter(description = "List of files to upload", required = false)
@Parameter(description = "Application Evaluation Request Body", required = true) @Valid @RequestBody ApplicationEvaluationRequest evaluationRequest); @RequestPart(required = false) List<MultipartFile> rejectedDocuments,
@Parameter(description = "Application Evaluation Request Body", required = true) @RequestPart ApplicationEvaluationRequest evaluationRequest);
@Operation(summary = "API to get ApplicationEvaluation data for evaluation process", @Operation(summary = "API to get ApplicationEvaluation data for evaluation process",
responses = { responses = {
@@ -67,9 +69,10 @@ public interface ApplicationEvaluationApi {
@ApiResponse(responseCode = "400", description = "Bad Request", content = @Content(mediaType = MediaType.APPLICATION_JSON_VALUE, examples = { @ApiResponse(responseCode = "400", description = "Bad Request", content = @Content(mediaType = MediaType.APPLICATION_JSON_VALUE, examples = {
@ExampleObject(value = ErrorConstants.BADREQUEST_ERROR_EXAMPLE) })) }) @ExampleObject(value = ErrorConstants.BADREQUEST_ERROR_EXAMPLE) })) })
@PutMapping(value = "/v2/assignedApplication/{id}", @PutMapping(value = "/v2/assignedApplication/{id}",
produces = { "application/json" }) produces = { "application/json" },consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
ResponseEntity<Response<ApplicationEvaluationFormResponse>> createApplicationEvaluation(HttpServletRequest request, ResponseEntity<Response<ApplicationEvaluationFormResponse>> createApplicationEvaluation(HttpServletRequest request, @Parameter(description = "List of files to upload", required = false)
@Valid @RequestBody ApplicationEvaluationFormRequestBean applicationEvaluationFormRequestBean, @RequestPart(required = false) List<MultipartFile> rejectedDocuments,
@RequestPart ApplicationEvaluationFormRequestBean applicationEvaluationFormRequestBean,
@Parameter(description = "Assigned Application ID", required = true) @PathVariable(value = "id", required = true) Long assignedApplicationId, @Parameter(description = "Assigned Application ID", required = true) @PathVariable(value = "id", required = true) Long assignedApplicationId,
@Parameter(description = "The evaluation form ID", required = true) @RequestParam("evaluationFormId") Long evaluationFormId); @Parameter(description = "The evaluation form ID", required = true) @RequestParam("evaluationFormId") Long evaluationFormId);

View File

@@ -7,7 +7,6 @@ import io.swagger.v3.oas.annotations.media.ExampleObject;
import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.responses.ApiResponse;
import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletRequest;
import net.gepafin.tendermanagement.model.request.CommunicationRequestBean; import net.gepafin.tendermanagement.model.request.CommunicationRequestBean;
import net.gepafin.tendermanagement.model.response.ApplicationAmendmentResponse;
import net.gepafin.tendermanagement.model.response.CommunicationResponseBean; import net.gepafin.tendermanagement.model.response.CommunicationResponseBean;
import net.gepafin.tendermanagement.model.util.Response; import net.gepafin.tendermanagement.model.util.Response;
import net.gepafin.tendermanagement.web.rest.api.errors.ErrorConstants; import net.gepafin.tendermanagement.web.rest.api.errors.ErrorConstants;
@@ -44,7 +43,7 @@ public interface CommunicationApi {
@ApiResponse(responseCode = "400", description = "Bad Request", content = @Content(mediaType = MediaType.APPLICATION_JSON_VALUE, examples = @ExampleObject(value = @ApiResponse(responseCode = "400", description = "Bad Request", content = @Content(mediaType = MediaType.APPLICATION_JSON_VALUE, examples = @ExampleObject(value =
ErrorConstants.BADREQUEST_ERROR_EXAMPLE))) }) ErrorConstants.BADREQUEST_ERROR_EXAMPLE))) })
@GetMapping(value = "/{amendmentId}", produces = "application/json") @GetMapping(value = "/{amendmentId}", produces = "application/json")
public ResponseEntity<Response<ApplicationAmendmentResponse>> getAmendmentComments(HttpServletRequest request,@PathVariable(value = "amendmentId") Long amendmentId); public ResponseEntity<Response<List<CommunicationResponseBean>>> getAmendmentComments(HttpServletRequest request,@PathVariable(value = "amendmentId") Long amendmentId);
@Operation(summary = "Api to update communication comments", responses = { @ApiResponse(responseCode = "200", description = "OK"), @Operation(summary = "Api to update communication comments", responses = { @ApiResponse(responseCode = "200", description = "OK"),
@ApiResponse(responseCode = "404", description = "Not Found", content = @Content(mediaType = MediaType.APPLICATION_JSON_VALUE, examples = { @ApiResponse(responseCode = "404", description = "Not Found", content = @Content(mediaType = MediaType.APPLICATION_JSON_VALUE, examples = {

View File

@@ -18,6 +18,7 @@ import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import java.util.List; import java.util.List;
@@ -34,7 +35,7 @@ public class ApplicationEvaluationApiController implements ApplicationEvaluation
@Override @Override
public ResponseEntity<Response<ApplicationEvaluationResponse>> createOrUpdateApplicationEvaluation( public ResponseEntity<Response<ApplicationEvaluationResponse>> createOrUpdateApplicationEvaluation(
HttpServletRequest request, HttpServletRequest request,
Long assignedApplicationsId, Long assignedApplicationsId, List<MultipartFile> rejectedDocuments,
ApplicationEvaluationRequest evaluationRequest) { ApplicationEvaluationRequest evaluationRequest) {
/** This code is responsible for creating user action logs for the "Create or update Application Evaluation" operation. **/ /** This code is responsible for creating user action logs for the "Create or update Application Evaluation" operation. **/
@@ -43,7 +44,7 @@ public class ApplicationEvaluationApiController implements ApplicationEvaluation
ApplicationEvaluationResponse response = applicationEvaluationService.createOrUpdateApplicationEvaluation( ApplicationEvaluationResponse response = applicationEvaluationService.createOrUpdateApplicationEvaluation(
request, evaluationRequest, assignedApplicationsId); request, evaluationRequest, assignedApplicationsId,rejectedDocuments);
return ResponseEntity.status(HttpStatus.CREATED) return ResponseEntity.status(HttpStatus.CREATED)
.body(new Response<>(response, Status.SUCCESS, Translator.toLocale(GepafinConstant.USER_REQUEST_COMPLETED))); .body(new Response<>(response, Status.SUCCESS, Translator.toLocale(GepafinConstant.USER_REQUEST_COMPLETED)));
@@ -82,13 +83,13 @@ public class ApplicationEvaluationApiController implements ApplicationEvaluation
} }
@Override @Override
public ResponseEntity<Response<ApplicationEvaluationFormResponse>> createApplicationEvaluation(HttpServletRequest request, ApplicationEvaluationFormRequestBean applicationEvaluationFormRequestBean, Long assignedApplicationId, Long evaluationFormId) { public ResponseEntity<Response<ApplicationEvaluationFormResponse>> createApplicationEvaluation(HttpServletRequest request, List<MultipartFile> rejectedDocuments, ApplicationEvaluationFormRequestBean applicationEvaluationFormRequestBean, Long assignedApplicationId, Long evaluationFormId) {
/** This code is responsible for creating user action logs for the "Create or update application evaluation form" operation. **/ /** This code is responsible for creating user action logs for the "Create or update application evaluation form" operation. **/
loggingUtil.logUserAction( loggingUtil.logUserAction(
UserActionRequest.builder().request(request).actionType(UserActionLogsEnum.UPDATE).actionContext(UserActionContextEnum.CREATE_UPDATE_APPLICATION_EVALUATION_FORM).build()); UserActionRequest.builder().request(request).actionType(UserActionLogsEnum.UPDATE).actionContext(UserActionContextEnum.CREATE_UPDATE_APPLICATION_EVALUATION_FORM).build());
ApplicationEvaluationFormResponse applicationEvaluationResponseBean = applicationEvaluationService.createApplicationEvaluation(request, applicationEvaluationFormRequestBean, assignedApplicationId, evaluationFormId); ApplicationEvaluationFormResponse applicationEvaluationResponseBean = applicationEvaluationService.createApplicationEvaluation(request,rejectedDocuments, applicationEvaluationFormRequestBean, assignedApplicationId, evaluationFormId);
return ResponseEntity.status(HttpStatus.CREATED) return ResponseEntity.status(HttpStatus.CREATED)
.body(new Response<>(applicationEvaluationResponseBean, Status.SUCCESS, Translator.toLocale(GepafinConstant.EVALUATION_CREATED_SUCCESSFULLY))); .body(new Response<>(applicationEvaluationResponseBean, Status.SUCCESS, Translator.toLocale(GepafinConstant.EVALUATION_CREATED_SUCCESSFULLY)));

View File

@@ -7,7 +7,6 @@ import net.gepafin.tendermanagement.enums.UserActionContextEnum;
import net.gepafin.tendermanagement.enums.UserActionLogsEnum; import net.gepafin.tendermanagement.enums.UserActionLogsEnum;
import net.gepafin.tendermanagement.model.request.CommunicationRequestBean; import net.gepafin.tendermanagement.model.request.CommunicationRequestBean;
import net.gepafin.tendermanagement.model.request.UserActionRequest; import net.gepafin.tendermanagement.model.request.UserActionRequest;
import net.gepafin.tendermanagement.model.response.ApplicationAmendmentResponse;
import net.gepafin.tendermanagement.model.response.CommunicationResponseBean; import net.gepafin.tendermanagement.model.response.CommunicationResponseBean;
import net.gepafin.tendermanagement.model.util.Response; import net.gepafin.tendermanagement.model.util.Response;
import net.gepafin.tendermanagement.service.CommunicationService; import net.gepafin.tendermanagement.service.CommunicationService;
@@ -45,12 +44,12 @@ public class CommunicationController implements CommunicationApi {
.body(new Response<>(communicationResponseBean, Status.SUCCESS, Translator.toLocale(GepafinConstant.COMMUNICATION_ADDED_TO_AMENDMENT_REQUEST_SUCCESS))); .body(new Response<>(communicationResponseBean, Status.SUCCESS, Translator.toLocale(GepafinConstant.COMMUNICATION_ADDED_TO_AMENDMENT_REQUEST_SUCCESS)));
} }
@Override @Override
public ResponseEntity<Response<ApplicationAmendmentResponse>> getAmendmentComments(HttpServletRequest request,Long amendmentId) { public ResponseEntity<Response<List<CommunicationResponseBean>>> getAmendmentComments(HttpServletRequest request,Long amendmentId) {
/** This code is responsible for creating user action logs for the "getting comment of amendment" operation. **/ /** This code is responsible for creating user action logs for the "getting comment of amendment" operation. **/
loggingUtil.logUserAction(UserActionRequest.builder().request(request).actionType(UserActionLogsEnum.VIEW).actionContext(UserActionContextEnum.GET_AMENDMENT_COMMENT).build()); loggingUtil.logUserAction(UserActionRequest.builder().request(request).actionType(UserActionLogsEnum.VIEW).actionContext(UserActionContextEnum.GET_AMENDMENT_COMMENT).build());
ApplicationAmendmentResponse response = communicationService.getAmendmentComments(request,amendmentId); List<CommunicationResponseBean> response = communicationService.getAmendmentComments(request,amendmentId);
return ResponseEntity.ok(new Response<>(response, Status.SUCCESS, Translator.toLocale(GepafinConstant.AMENDMENT_FOUND_SUCCESS))); return ResponseEntity.ok(new Response<>(response, Status.SUCCESS, Translator.toLocale(GepafinConstant.AMENDMENT_FOUND_SUCCESS)));
} }
@Override @Override

View File

@@ -3074,4 +3074,17 @@
<column name="previous_status" type="VARCHAR(255)"></column> <column name="previous_status" type="VARCHAR(255)"></column>
</addColumn> </addColumn>
</changeSet> </changeSet>
<changeSet id="15-10-2025_RK_152435" author="Rajesh Khore">
<dropColumn tableName="application" columnName="email_json"/>
<addColumn tableName="application">
<column name="rejected_reason" type="VARCHAR(255)"/>
<column name="rejected_document" type="VARCHAR(255)"/>
</addColumn>
</changeSet>
<changeSet id="16-10-2025_RK_13352" author="Rajesh Khore">
<sqlFile dbms="postgresql" path="db/dump/update_system_email_template_of_application_rejected_16_10_2025.sql"/>
</changeSet>
</databaseChangeLog> </databaseChangeLog>

View File

@@ -0,0 +1,18 @@
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>Si comunica che, in riferimento alla domanda a valere sul bando “<strong>{{call_name}}</strong>” di cui al
<strong>Protocollo n. {{protocol_number}} del {{protocol_date}} alle {{protocol_time}}</strong>,
</p>
<p>
{{tipo_inammissibilita}}.</p>
<p>Le motivazioni sono le seguenti: <strong>{{form_text}}</strong></p>
<p>Vi ricordiamo che i Beneficiari che hanno presentato richieste valutate non ammissibili entro 10 giorni dalla data di ricevimento della presente potranno finoltrare richiesta di chiarimenti e/o osservazioni alla scrivente Società ai sensi e per gli effetti dellart.10 bis della L.241/1990 e s.m.i.</p>
<p>Distinti Saluti,</p>
<p><strong>{{email_signature}}</strong></p>
</div>
</body>
</html>'
WHERE "type" = 'INADMISSIBILITY_NOTIFICATION' and "email_scenario" = 'APPLICATION_REJECTED' and "system" = true;

View File

@@ -415,5 +415,6 @@ end.date.greater.than.now=End date must be greater than the current date and tim
pec.email.required=PEC email is required. pec.email.required=PEC email is required.
application.technical.evaluation.rejected.success=Application changes to status application technical evaluation rejected successfully. application.technical.evaluation.rejected.success=Application changes to status application technical evaluation rejected successfully.
invalid.email.json=Invalid email json. invalid.email.json=Invalid email json.
more.fields.required=Subject, reason, and motivation are required when rejecting the application.

View File

@@ -406,3 +406,4 @@ end.date.greater.than.now=La data di fine deve essere successiva alla data e all
pec.email.required=Obbligatorio l'indirizzo e-mail PEC. pec.email.required=Obbligatorio l'indirizzo e-mail PEC.
application.technical.evaluation.rejected.success=Lo stato dell'applicazione cambia: valutazione tecnica dell'applicazione rifiutata con successo. application.technical.evaluation.rejected.success=Lo stato dell'applicazione cambia: valutazione tecnica dell'applicazione rifiutata con successo.
invalid.email.json=Codice email json non valido. invalid.email.json=Codice email json non valido.
more.fields.required=Per rifiutare la domanda sono richiesti oggetto, motivo e motivazione.