Updated Code
This commit is contained in:
@@ -267,5 +267,9 @@ public class GepafinConstant {
|
|||||||
public static final String COMMENT_UPDATED_SUCCESS_MSG = "comment.updated.successfully";
|
public static final String COMMENT_UPDATED_SUCCESS_MSG = "comment.updated.successfully";
|
||||||
public static final String COMMENT_DELETED_SUCCESS_MSG = "comment.deleted.successfully";
|
public static final String COMMENT_DELETED_SUCCESS_MSG = "comment.deleted.successfully";
|
||||||
public static final String COMMENT_NOT_ASSOCIATE_WITH_AMENDMENT_ID_ERROR_MSG = "comment.not.associate.with.amendment";
|
public static final String COMMENT_NOT_ASSOCIATE_WITH_AMENDMENT_ID_ERROR_MSG = "comment.not.associate.with.amendment";
|
||||||
|
public static final String AMENDMENT_FOUND_SUCCESS = "amendment.found.success";
|
||||||
|
public static final String INVALID_AMENDMENT_FOR_COMMENT = "invalid.amendment.for.comment";
|
||||||
|
|
||||||
|
public static final String DD_MM_YYYY_HH_MM = "DD_MM_YYYY_HH_MM";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -2,12 +2,22 @@ package net.gepafin.tendermanagement.dao;
|
|||||||
|
|
||||||
import net.gepafin.tendermanagement.config.Translator;
|
import net.gepafin.tendermanagement.config.Translator;
|
||||||
import net.gepafin.tendermanagement.constants.GepafinConstant;
|
import net.gepafin.tendermanagement.constants.GepafinConstant;
|
||||||
import net.gepafin.tendermanagement.entities.ApplicationAmendmentRequestEntity;
|
import net.gepafin.tendermanagement.entities.ApplicationEntity;
|
||||||
import net.gepafin.tendermanagement.entities.CommunicationAmendmentEntity;
|
import net.gepafin.tendermanagement.entities.CallEntity;
|
||||||
|
import net.gepafin.tendermanagement.entities.CommunicationEntity;
|
||||||
|
import net.gepafin.tendermanagement.entities.CompanyEntity;
|
||||||
|
import net.gepafin.tendermanagement.entities.ProtocolEntity;
|
||||||
|
import net.gepafin.tendermanagement.entities.SystemEmailTemplatesEntity;
|
||||||
|
import net.gepafin.tendermanagement.entities.UserEntity;
|
||||||
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.repositories.CommunicationAmendmentRepository;
|
import net.gepafin.tendermanagement.model.response.SystemEmailTemplateResponse;
|
||||||
import net.gepafin.tendermanagement.web.rest.api.ApplicationAmendmentRepository;
|
import net.gepafin.tendermanagement.repositories.CommunicationRepository;
|
||||||
|
import net.gepafin.tendermanagement.service.SystemEmailTemplatesService;
|
||||||
|
import net.gepafin.tendermanagement.util.DateTimeUtil;
|
||||||
|
import net.gepafin.tendermanagement.util.MailUtil;
|
||||||
|
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.Status;
|
import net.gepafin.tendermanagement.web.rest.api.errors.Status;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
@@ -15,112 +25,223 @@ import org.slf4j.LoggerFactory;
|
|||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
import java.time.Instant;
|
import java.time.LocalDateTime;
|
||||||
import java.util.Optional;
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
@Component
|
@Component
|
||||||
public class CommunicationAmendmentDao {
|
public class CommunicationAmendmentDao {
|
||||||
private static final Logger log = LoggerFactory.getLogger(CommunicationAmendmentDao.class);
|
private static final Logger log = LoggerFactory.getLogger(CommunicationAmendmentDao.class);
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
CommunicationAmendmentRepository communicationAmendmentRepository;
|
CommunicationRepository communicationRepository;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
ApplicationAmendmentRepository applicationAmendmentRepository;
|
ApplicationAmendmentRepository applicationAmendmentRepository;
|
||||||
|
|
||||||
// @Autowired
|
@Autowired
|
||||||
// ApplicationAmendmentRequestRepository applicationAmendmentRequestRepository;
|
private MailUtil mailUtil;
|
||||||
|
|
||||||
public CommunicationResponseBean addCommentToAmendmentRequest(CommunicationRequestBean communicationReq) {
|
@Autowired
|
||||||
|
private SystemEmailTemplatesService systemEmailTemplatesService;
|
||||||
|
|
||||||
|
public CommunicationResponseBean addCommentToAmendmentRequest(CommunicationRequestBean communicationReq, Long amendmentId) {
|
||||||
|
|
||||||
log.info("Adding communication request...");
|
log.info("Adding communication request...");
|
||||||
|
CommunicationEntity communicationEntity = convertToCommunicationCommentEntity(communicationReq, amendmentId);
|
||||||
// Fetch amendment request by ID to set the relationship
|
communicationEntity = communicationRepository.save(communicationEntity);
|
||||||
ApplicationAmendmentRequestEntity amendmentRequest = applicationAmendmentRepository
|
log.info("Added comment: {}", communicationEntity);
|
||||||
.findAmendmentById(communicationReq.getAmendmentId());
|
return convertToCommunicationResponseBean(communicationEntity);
|
||||||
// Create and populate CommunicationAmendmentEntity
|
|
||||||
CommunicationAmendmentEntity communicationAmendmentEntity = new CommunicationAmendmentEntity();
|
|
||||||
communicationAmendmentEntity.setAmendmentRequest(amendmentRequest);
|
|
||||||
communicationAmendmentEntity.setCommunicationTitle(communicationReq.getTitle());
|
|
||||||
communicationAmendmentEntity.setCommunicationComment(communicationReq.getComment());
|
|
||||||
communicationAmendmentEntity.setIsDeleted(false);
|
|
||||||
|
|
||||||
// Save the communication amendment entity
|
|
||||||
communicationAmendmentEntity = communicationAmendmentRepository.save(communicationAmendmentEntity);
|
|
||||||
log.info("Added comment: {}", communicationAmendmentEntity);
|
|
||||||
|
|
||||||
// Convert and return the response bean
|
|
||||||
return convertToCommunicationResponseBean(communicationAmendmentEntity);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public String deleteCommunicationAmendmentComment(Long amendmentId, Long commentId) {
|
public String deleteCommunicationAmendmentComment(Long amendmentId, Long commentId) {
|
||||||
// Optional<ApplicationAmendmentRequestEntity> amendmentData = communicationAmendmentRepository.findById(amendmentId);
|
|
||||||
// if(amendmentData.isEmpty()) {
|
CommunicationEntity data = communicationRepository.findById(commentId)
|
||||||
// throw new CustomValidationException(Status.NOT_FOUND, Translator.toLocale(GepafinConstant.COMMENT_NOT_ASSOCIATE_WITH_AMENDMENT_ID_ERROR_MSG));
|
.orElseThrow(() -> new CustomValidationException(Status.NOT_FOUND, Translator.toLocale(GepafinConstant.COMMENT_NOT_FOUND)));
|
||||||
// }
|
if (!data.getAmendmentRequest().getId().equals(amendmentId)) {
|
||||||
Optional<CommunicationAmendmentEntity> data = communicationAmendmentRepository.findById(commentId);
|
throw new CustomValidationException(Status.BAD_REQUEST, Translator.toLocale(GepafinConstant.INVALID_AMENDMENT_FOR_COMMENT));
|
||||||
if (data.isEmpty()) {
|
|
||||||
throw new CustomValidationException(Status.NOT_FOUND, Translator.toLocale(GepafinConstant.COMMENT_NOT_FOUND));
|
|
||||||
}
|
}
|
||||||
communicationAmendmentRepository.deleteById(commentId);
|
communicationRepository.deleteById(commentId);
|
||||||
return "Deleted Comment Successfully.";
|
return "Deleted Comment Successfully.";
|
||||||
}
|
}
|
||||||
public CommunicationResponseBean updateCommunicationAmendment(CommunicationRequestBean communicationRequestBean) {
|
|
||||||
|
public ApplicationAmendmentResponse getAmendmentComments(Long amendmentId) {
|
||||||
|
|
||||||
|
ApplicationAmendmentRequestEntity amendmentData = applicationAmendmentRepository.findAmendmentById(amendmentId);
|
||||||
|
|
||||||
|
if (amendmentData == null) {
|
||||||
|
throw new CustomValidationException(Status.NOT_FOUND, Translator.toLocale(GepafinConstant.AMENDMENT_NOT_FOUND));
|
||||||
|
}
|
||||||
|
List<CommunicationResponseBean> commentsList = communicationRepository.findCommentDetailsByAmendmentId(amendmentId);
|
||||||
|
if (commentsList == null) {
|
||||||
|
throw new CustomValidationException(Status.NOT_FOUND, Translator.toLocale(GepafinConstant.COMMENT_NOT_FOUND));
|
||||||
|
}
|
||||||
|
return new ApplicationAmendmentResponse(amendmentData, commentsList);
|
||||||
|
}
|
||||||
|
|
||||||
|
public CommunicationResponseBean updateCommunicationAmendment(CommunicationRequestBean communicationRequestBean, Long amendmentId, Long commentId) {
|
||||||
|
|
||||||
log.info("Updating communication comment...");
|
log.info("Updating communication comment...");
|
||||||
CommunicationAmendmentEntity communicationAmendmentEntity = convertToCommunicationAmendmentEntity(communicationRequestBean);
|
CommunicationEntity existingComment = communicationRepository.findById(commentId)
|
||||||
communicationAmendmentEntity = communicationAmendmentRepository.save(communicationAmendmentEntity);
|
.orElseThrow(() -> new CustomValidationException(Status.NOT_FOUND, Translator.toLocale(GepafinConstant.COMMENT_NOT_FOUND)));
|
||||||
log.info("Updated Comment {}", communicationAmendmentEntity);
|
|
||||||
return convertToCommunicationResponseBean(communicationAmendmentEntity);
|
|
||||||
|
|
||||||
|
if (!existingComment.getAmendmentRequest().getId().equals(amendmentId)) {
|
||||||
|
throw new CustomValidationException(Status.BAD_REQUEST, Translator.toLocale(GepafinConstant.COMMENT_NOT_ASSOCIATE_WITH_AMENDMENT_ID_ERROR_MSG));
|
||||||
|
}
|
||||||
|
existingComment.setCommunicationTitle(communicationRequestBean.getTitle());
|
||||||
|
existingComment.setCommunicationComment(communicationRequestBean.getComment());
|
||||||
|
existingComment.setCommentedDate(LocalDateTime.now());
|
||||||
|
existingComment = communicationRepository.save(existingComment);
|
||||||
|
log.info("Updated Comment: {}", existingComment);
|
||||||
|
return convertToCommunicationResponseBean(existingComment);
|
||||||
}
|
}
|
||||||
public CommunicationResponseBean getAmendmentComments(Long amendmentId, Long commentId) {
|
|
||||||
// Optional<ApplicationAmendmentRequestEntity> amendmentData = communicationAmendmentRepository.findById(amendmentId);
|
|
||||||
// if(amendmentData.isEmpty()) {
|
|
||||||
// throw new CustomValidationException(Status.NOT_FOUND, Translator.toLocale(GepafinConstant.AMENDMENT_NOT_FOUND));
|
|
||||||
// }
|
|
||||||
CommunicationAmendmentEntity commentData = communicationAmendmentRepository.findCommentsById(commentId);
|
|
||||||
CommunicationResponseBean data = convertToCommunicationResponseBean1(commentData);
|
|
||||||
return data;
|
|
||||||
|
|
||||||
}
|
private CommunicationResponseBean convertToCommunicationResponseBean(CommunicationEntity entity) {
|
||||||
private CommunicationResponseBean convertToCommunicationResponseBean(CommunicationAmendmentEntity entity) {
|
|
||||||
|
|
||||||
CommunicationResponseBean response = new CommunicationResponseBean();
|
CommunicationResponseBean response = new CommunicationResponseBean();
|
||||||
response.setComment(entity.getCommunicationComment());
|
response.setComment(entity.getCommunicationComment());
|
||||||
response.setCommunicationAddedDate(Instant.now());
|
response.setCommentedDate(entity.setCommentedDate(););
|
||||||
return response;
|
response.setAmendmentId(entity.getAmendmentRequest().getId());
|
||||||
}
|
response.setCreatedDate(entity.getCreatedDate());
|
||||||
private CommunicationResponseBean convertToCommunicationResponseBean1(CommunicationAmendmentEntity entity) {
|
response.setUpdatedDate(entity.getUpdatedDate());
|
||||||
|
|
||||||
CommunicationResponseBean response = new CommunicationResponseBean();
|
|
||||||
response.setComment(entity.getCommunicationComment());
|
|
||||||
response.setCommunicationAddedDate(Instant.now());
|
|
||||||
return response;
|
return response;
|
||||||
}
|
}
|
||||||
|
|
||||||
private CommunicationAmendmentEntity convertToCommunicationAmendmentEntity(CommunicationRequestBean communicationReq) {
|
private CommunicationEntity convertToCommunicationCommentEntity(CommunicationRequestBean communicationReq, Long amendmentId) {
|
||||||
|
|
||||||
CommunicationAmendmentEntity communicationAmendmentEntity = new CommunicationAmendmentEntity();
|
ApplicationAmendmentRequestEntity amendmentRequest = applicationAmendmentRepository.findAmendmentById(amendmentId);
|
||||||
ApplicationAmendmentRequestEntity entity = applicationAmendmentRepository.findAmendmentById(communicationReq.getAmendmentId());
|
CommunicationEntity communicationEntity = new CommunicationEntity();
|
||||||
if (entity == null) {
|
communicationEntity.setAmendmentRequest(amendmentRequest);
|
||||||
throw new CustomValidationException(Status.NOT_FOUND, "Amendment Request not found for id: " + communicationReq.getAmendmentId());
|
communicationEntity.setCommunicationTitle(communicationReq.getTitle());
|
||||||
}
|
communicationEntity.setCommunicationComment(communicationReq.getComment());
|
||||||
communicationAmendmentEntity.setAmendmentRequest(entity);
|
communicationEntity.setIsDeleted(false);
|
||||||
communicationAmendmentEntity.setCommunicationTitle(communicationReq.getComment());
|
communicationEntity.setCommentedDate(LocalDateTime.now());
|
||||||
communicationAmendmentEntity.setCommunicationComment(communicationReq.getComment());
|
return communicationEntity;
|
||||||
return communicationAmendmentEntity;
|
|
||||||
}
|
}
|
||||||
public ApplicationAmendmentRequestEntity getAmendmentRequestById(Long id) {
|
|
||||||
|
|
||||||
if(id==null){
|
private void sendMailToNotifyBeneficiaryRegardingNewAmendment(UserEntity userEntity, ApplicationEntity applicationEntity) {
|
||||||
throw new CustomValidationException(Status.BAD_REQUEST, "Please provide amendmentId" + null);
|
CallEntity call = applicationEntity.getCall();
|
||||||
|
CompanyEntity company = applicationEntity.getCompany();
|
||||||
|
ProtocolEntity protocol = applicationEntity.getProtocol();
|
||||||
|
SystemEmailTemplateResponse systemEmailTemplateResponse = systemEmailTemplatesService
|
||||||
|
.retrieveTemplateByTypeAndCall(SystemEmailTemplatesEntity.SystemEmailTemplatesEntityTypeEnum.DOCUMENTATION_INTEGRATION_REQUEST,
|
||||||
|
call, null);
|
||||||
|
|
||||||
|
// Create the map for subject placeholders
|
||||||
|
Map<String, String> subjectPlaceholders = new HashMap<>();
|
||||||
|
subjectPlaceholders.put("{{call_name}}", call.getName());
|
||||||
|
subjectPlaceholders.put("{{company_name}}", company.getCompanyName());
|
||||||
|
|
||||||
|
// Create the map for body placeholders
|
||||||
|
Map<String, String> bodyPlaceholders = new HashMap<>();
|
||||||
|
bodyPlaceholders.put("{{call_name}}", call.getName());
|
||||||
|
bodyPlaceholders.put("{{protocol_number}}", protocol.getProtocolNumber().toString());
|
||||||
|
bodyPlaceholders.put("{{protocol_date}}", DateTimeUtil.formatCreatedDate(protocol.getCreatedDate()));
|
||||||
|
bodyPlaceholders.put("{{protocol_time}}", DateTimeUtil.parseLocalTimeToString(protocol.getTime(), GepafinConstant.HH_MM_SS));
|
||||||
|
bodyPlaceholders.put("{{form_dataInput}}", "YOUR_FORM_DATA_HERE");
|
||||||
|
|
||||||
|
// Replace placeholders in the subject and body
|
||||||
|
String subject = Utils.replacePlaceholders(systemEmailTemplateResponse.getSubject(), subjectPlaceholders);
|
||||||
|
String body = Utils.replacePlaceholders(systemEmailTemplateResponse.getHtmlContent(), bodyPlaceholders);
|
||||||
|
|
||||||
|
String email = userEntity.getEmail();
|
||||||
|
if (userEntity.getBeneficiary() != null) {
|
||||||
|
email = userEntity.getBeneficiary().getEmail();
|
||||||
}
|
}
|
||||||
ApplicationAmendmentRequestEntity applicationAmendmentData = applicationAmendmentRepository.findAmendmentById(id);
|
mailUtil.sendByMailGun(subject, body, List.of(email), null);
|
||||||
if(Boolean.FALSE.equals(applicationAmendmentData)){
|
mailUtil.sendByMailGun(subject, body, List.of(applicationEntity.getCompany().getEmail()), null);
|
||||||
throw new CustomValidationException(Status.NOT_FOUND, "Amendment Request not found for id: " + applicationAmendmentData.getId());
|
}
|
||||||
|
|
||||||
|
public void sendApplicationFailureNotificationEmail(String userEmail, ApplicationEntity applicationEntity) {
|
||||||
|
CallEntity call = applicationEntity.getCall();
|
||||||
|
CompanyEntity company = applicationEntity.getCompany();
|
||||||
|
ProtocolEntity protocol = applicationEntity.getProtocol();
|
||||||
|
SystemEmailTemplateResponse systemEmailTemplateResponse = systemEmailTemplatesService
|
||||||
|
.retrieveTemplateByTypeAndCall(SystemEmailTemplatesEntity.SystemEmailTemplatesEntityTypeEnum.INADMISSIBILITY_NOTIFICATION_DUE_TO_FAILURE,
|
||||||
|
call, null);
|
||||||
|
|
||||||
|
// Create the map for subject placeholders
|
||||||
|
Map<String, String> subjectPlaceholders = new HashMap<>();
|
||||||
|
subjectPlaceholders.put("{{call_name}}", call.getName());
|
||||||
|
subjectPlaceholders.put("{{company_name}}", company.getCompanyName());
|
||||||
|
|
||||||
|
// Create the map for body placeholders
|
||||||
|
Map<String, String> bodyPlaceholders = new HashMap<>();
|
||||||
|
bodyPlaceholders.put("{{call_name}}", call.getName());
|
||||||
|
bodyPlaceholders.put("{{date_time_emailSend}}", DateTimeUtil.formatLocalDateTime(protocol.getCreatedDate(), GepafinConstant.DD_MM_YYYY_HH_MM));
|
||||||
|
|
||||||
|
// Replace placeholders in the subject and body
|
||||||
|
String subject = Utils.replacePlaceholders(systemEmailTemplateResponse.getSubject(), subjectPlaceholders);
|
||||||
|
String body = Utils.replacePlaceholders(systemEmailTemplateResponse.getHtmlContent(), bodyPlaceholders);
|
||||||
|
|
||||||
|
mailUtil.sendByMailGun(subject, body, List.of(userEmail), null);
|
||||||
|
mailUtil.sendByMailGun(subject, body, List.of(applicationEntity.getCompany().getEmail()), null);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void sendAdmissibilityNotificationEmail(UserEntity userEntity, ApplicationEntity applicationEntity) {
|
||||||
|
CallEntity call = applicationEntity.getCall();
|
||||||
|
CompanyEntity company = applicationEntity.getCompany();
|
||||||
|
ProtocolEntity protocol = applicationEntity.getProtocol();
|
||||||
|
SystemEmailTemplateResponse systemEmailTemplateResponse = systemEmailTemplatesService
|
||||||
|
.retrieveTemplateByTypeAndCall(SystemEmailTemplatesEntity.SystemEmailTemplatesEntityTypeEnum.ADMISSIBILITY_NOTIFICATION,
|
||||||
|
call, null);
|
||||||
|
|
||||||
|
// Create the map for subject placeholders
|
||||||
|
Map<String, String> subjectPlaceholders = new HashMap<>();
|
||||||
|
subjectPlaceholders.put("{{call_name}}", call.getName());
|
||||||
|
subjectPlaceholders.put("{{company_name}}", company.getCompanyName());
|
||||||
|
|
||||||
|
// Create the map for body placeholders
|
||||||
|
Map<String, String> bodyPlaceholders = new HashMap<>();
|
||||||
|
bodyPlaceholders.put("{{call_name}}", call.getName());
|
||||||
|
bodyPlaceholders.put("{{protocol_number}}", protocol.getProtocolNumber().toString());
|
||||||
|
bodyPlaceholders.put("{{protocol_date}}", DateTimeUtil.formatCreatedDate(protocol.getCreatedDate()));
|
||||||
|
bodyPlaceholders.put("{{protocol_time}}", DateTimeUtil.parseLocalTimeToString(protocol.getTime(), GepafinConstant.HH_MM_SS));
|
||||||
|
|
||||||
|
// Replace placeholders in the subject and body
|
||||||
|
String subject = Utils.replacePlaceholders(systemEmailTemplateResponse.getSubject(), subjectPlaceholders);
|
||||||
|
String body = Utils.replacePlaceholders(systemEmailTemplateResponse.getHtmlContent(), bodyPlaceholders);
|
||||||
|
|
||||||
|
String email = userEntity.getEmail();
|
||||||
|
if (userEntity.getBeneficiary() != null) {
|
||||||
|
email = userEntity.getBeneficiary().getEmail();
|
||||||
}
|
}
|
||||||
return applicationAmendmentData;
|
mailUtil.sendByMailGun(subject, body, List.of(email), null);
|
||||||
|
mailUtil.sendByMailGun(subject, body, List.of(applicationEntity.getCompany().getEmail()), null);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void sendInadmissibilityTemplateEmail(UserEntity userEntity, ApplicationEntity applicationEntity) {
|
||||||
|
CallEntity call = applicationEntity.getCall();
|
||||||
|
CompanyEntity company = applicationEntity.getCompany();
|
||||||
|
ProtocolEntity protocol = applicationEntity.getProtocol();
|
||||||
|
SystemEmailTemplateResponse systemEmailTemplateResponse = systemEmailTemplatesService
|
||||||
|
.retrieveTemplateByTypeAndCall(SystemEmailTemplatesEntity.SystemEmailTemplatesEntityTypeEnum.INADMISSIBILITY_TEMPLATE,
|
||||||
|
call, null);
|
||||||
|
|
||||||
|
// Create the map for subject placeholders
|
||||||
|
Map<String, String> subjectPlaceholders = new HashMap<>();
|
||||||
|
subjectPlaceholders.put("{{call_name}}", call.getName());
|
||||||
|
subjectPlaceholders.put("{{company_name}}", company.getCompanyName());
|
||||||
|
|
||||||
|
// Create the map for body placeholders
|
||||||
|
Map<String, String> bodyPlaceholders = new HashMap<>();
|
||||||
|
bodyPlaceholders.put("{{call_name}}", call.getName());
|
||||||
|
bodyPlaceholders.put("{{protocol_number}}", protocol.getProtocolNumber().toString());
|
||||||
|
bodyPlaceholders.put("{{protocol_date}}", DateTimeUtil.formatCreatedDate(protocol.getCreatedDate()));
|
||||||
|
bodyPlaceholders.put("{{protocol_time}}", DateTimeUtil.parseLocalTimeToString(protocol.getTime(), GepafinConstant.HH_MM_SS));
|
||||||
|
bodyPlaceholders.put("{{form_text}}", "YOUR_FORM_TEXT_HERE"); // Replace with actual data input if available
|
||||||
|
|
||||||
|
// Replace placeholders in the subject and body
|
||||||
|
String subject = Utils.replacePlaceholders(systemEmailTemplateResponse.getSubject(), subjectPlaceholders);
|
||||||
|
String body = Utils.replacePlaceholders(systemEmailTemplateResponse.getHtmlContent(), bodyPlaceholders);
|
||||||
|
|
||||||
|
String email = userEntity.getEmail();
|
||||||
|
if (userEntity.getBeneficiary() != null) {
|
||||||
|
email = userEntity.getBeneficiary().getEmail();
|
||||||
|
}
|
||||||
|
mailUtil.sendByMailGun(subject, body, List.of(email), null);
|
||||||
|
mailUtil.sendByMailGun(subject, body, List.of(applicationEntity.getCompany().getEmail()), null);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,37 +0,0 @@
|
|||||||
package net.gepafin.tendermanagement.entities;
|
|
||||||
|
|
||||||
import jakarta.persistence.CascadeType;
|
|
||||||
import jakarta.persistence.Column;
|
|
||||||
import jakarta.persistence.ElementCollection;
|
|
||||||
import jakarta.persistence.Entity;
|
|
||||||
import jakarta.persistence.OneToMany;
|
|
||||||
import jakarta.persistence.Table;
|
|
||||||
import lombok.Data;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
@Entity
|
|
||||||
@Table(name = "application_amendment_request")
|
|
||||||
@Data
|
|
||||||
public class ApplicationAmendmentRequestEntity extends BaseEntity {
|
|
||||||
|
|
||||||
@Column(name = "NOTE")
|
|
||||||
private String note;
|
|
||||||
|
|
||||||
@Column(name = "RESPONSE_DAYS")
|
|
||||||
private Long responseDays;
|
|
||||||
|
|
||||||
@Column(name = "IS_NOTIFICATION")
|
|
||||||
private Boolean isNotification;
|
|
||||||
|
|
||||||
@Column(name = "IS_EMAIL")
|
|
||||||
private Boolean isEmail;
|
|
||||||
|
|
||||||
@ElementCollection
|
|
||||||
@Column(name = "FIELD_ID")
|
|
||||||
private List<String> fieldId;
|
|
||||||
|
|
||||||
@OneToMany(mappedBy = "amendmentRequest", cascade = CascadeType.ALL)
|
|
||||||
private List<CommunicationAmendmentEntity> communicationAmendmentEntities;
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -1,18 +1,20 @@
|
|||||||
package net.gepafin.tendermanagement.entities;
|
package net.gepafin.tendermanagement.entities;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.annotation.JsonIgnore;
|
||||||
import jakarta.persistence.Column;
|
import jakarta.persistence.Column;
|
||||||
import jakarta.persistence.Entity;
|
import jakarta.persistence.Entity;
|
||||||
|
import jakarta.persistence.FetchType;
|
||||||
import jakarta.persistence.JoinColumn;
|
import jakarta.persistence.JoinColumn;
|
||||||
import jakarta.persistence.ManyToOne;
|
import jakarta.persistence.ManyToOne;
|
||||||
import jakarta.persistence.Table;
|
import jakarta.persistence.Table;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
import java.util.Optional;
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
@Entity
|
@Entity
|
||||||
@Table(name = "communication_amendment")
|
@Table(name = "communication_amendment")
|
||||||
@Data
|
@Data
|
||||||
public class CommunicationAmendmentEntity extends BaseEntity {
|
public class CommunicationEntity extends BaseEntity {
|
||||||
|
|
||||||
@Column(name = "COMMUNICATION_TITLE")
|
@Column(name = "COMMUNICATION_TITLE")
|
||||||
private String communicationTitle;
|
private String communicationTitle;
|
||||||
@@ -23,9 +25,7 @@ public class CommunicationAmendmentEntity extends BaseEntity {
|
|||||||
@Column(name = "IS_DELETED")
|
@Column(name = "IS_DELETED")
|
||||||
private Boolean isDeleted;
|
private Boolean isDeleted;
|
||||||
|
|
||||||
@ManyToOne
|
@Column(name = "COMMENTED_DATE")
|
||||||
@JoinColumn(name = "AMENDMENT_ID", referencedColumnName = "id", nullable = false)
|
private LocalDateTime commentedDate;
|
||||||
private ApplicationAmendmentRequestEntity amendmentRequest;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
}
|
||||||
@@ -39,7 +39,11 @@ public class SystemEmailTemplatesEntity extends BaseEntity {
|
|||||||
public enum SystemEmailTemplatesEntityTypeEnum {
|
public enum SystemEmailTemplatesEntityTypeEnum {
|
||||||
|
|
||||||
APPLICATION_SUBMISSION_TO_USER_AND_COMPANY("APPLICATION_SUBMISSION_TO_USER_AND_COMPANY"),
|
APPLICATION_SUBMISSION_TO_USER_AND_COMPANY("APPLICATION_SUBMISSION_TO_USER_AND_COMPANY"),
|
||||||
APPLICATION_SUBMISSION_TO_GEPAFIN("APPLICATION_SUBMISSION_TO_GEPAFIN");
|
APPLICATION_SUBMISSION_TO_GEPAFIN("APPLICATION_SUBMISSION_TO_GEPAFIN"),
|
||||||
|
DOCUMENTATION_INTEGRATION_REQUEST("DOCUMENTATION_INTEGRATION_REQUEST"),
|
||||||
|
INADMISSIBILITY_NOTIFICATION_DUE_TO_FAILURE("INADMISSIBILITY_NOTIFICATION_DUE_TO_FAILURE"),
|
||||||
|
ADMISSIBILITY_NOTIFICATION("ADMISSIBILITY_NOTIFICATION"),
|
||||||
|
INADMISSIBILITY_TEMPLATE("INADMISSIBILITY_NOTIFICATION_2");
|
||||||
|
|
||||||
private String value;
|
private String value;
|
||||||
|
|
||||||
|
|||||||
@@ -6,6 +6,5 @@ import lombok.Data;
|
|||||||
public class CommunicationRequestBean {
|
public class CommunicationRequestBean {
|
||||||
private String title;
|
private String title;
|
||||||
private String comment;
|
private String comment;
|
||||||
private Long amendmentId;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,15 @@
|
|||||||
|
package net.gepafin.tendermanagement.model.response;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class ApplicationAmendmentResponse {
|
||||||
|
private ApplicationAmendmentRequestEntity amendment;
|
||||||
|
private List<CommunicationResponseBean> commentsList;
|
||||||
|
public ApplicationAmendmentResponse(ApplicationAmendmentRequestEntity amendment, List<CommunicationResponseBean> comments) {
|
||||||
|
this.amendment = amendment;
|
||||||
|
this.commentsList = comments;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -2,10 +2,32 @@ package net.gepafin.tendermanagement.model.response;
|
|||||||
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
import java.time.Instant;
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
public class CommunicationResponseBean {
|
public class CommunicationResponseBean {
|
||||||
private Instant communicationAddedDate;
|
private LocalDateTime commentedDate;
|
||||||
|
|
||||||
private String comment;
|
private String comment;
|
||||||
|
|
||||||
|
private String title;
|
||||||
|
|
||||||
|
private LocalDateTime createdDate;
|
||||||
|
|
||||||
|
private LocalDateTime updatedDate;
|
||||||
|
|
||||||
|
private Long amendmentId;
|
||||||
|
public CommunicationResponseBean(LocalDateTime commentedDate, String comment, String title, LocalDateTime createdDate, LocalDateTime updatedDate, Long amendmentId) {
|
||||||
|
|
||||||
|
this.commentedDate = commentedDate;
|
||||||
|
this.comment = comment;
|
||||||
|
this.title = title;
|
||||||
|
this.createdDate = createdDate;
|
||||||
|
this.updatedDate = updatedDate;
|
||||||
|
this.amendmentId = amendmentId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public CommunicationResponseBean() {
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,14 +0,0 @@
|
|||||||
package net.gepafin.tendermanagement.repositories;
|
|
||||||
|
|
||||||
import net.gepafin.tendermanagement.entities.CommunicationAmendmentEntity;
|
|
||||||
import org.springframework.data.jpa.repository.JpaRepository;
|
|
||||||
import org.springframework.data.jpa.repository.Query;
|
|
||||||
import org.springframework.data.repository.query.Param;
|
|
||||||
|
|
||||||
import java.util.Optional;
|
|
||||||
|
|
||||||
public interface CommunicationAmendmentRepository extends JpaRepository<CommunicationAmendmentEntity, Long> {
|
|
||||||
|
|
||||||
@Query("Select c from CommunicationAmendmentEntity c Where c.id = :id")
|
|
||||||
CommunicationAmendmentEntity findCommentsById(@Param("id") Long id);
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
package net.gepafin.tendermanagement.repositories;
|
||||||
|
|
||||||
|
import net.gepafin.tendermanagement.entities.CommunicationEntity;
|
||||||
|
import net.gepafin.tendermanagement.model.response.CommunicationResponseBean;
|
||||||
|
import org.springframework.data.jpa.repository.JpaRepository;
|
||||||
|
import org.springframework.data.jpa.repository.Query;
|
||||||
|
import org.springframework.data.repository.query.Param;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public interface CommunicationRepository extends JpaRepository<CommunicationEntity, Long> {
|
||||||
|
|
||||||
|
@Query("Select c from CommunicationEntity c Where c.id = :id")
|
||||||
|
CommunicationEntity findCommentsById(@Param("id") Long id);
|
||||||
|
|
||||||
|
@Query("SELECT new net.gepafin.tendermanagement.model.response.CommunicationResponseBean( " + "c.addedDate, c.communicationComment, c.communicationTitle, c.createdDate, c" +
|
||||||
|
".updatedDate, c.amendmentRequest.id) " + "FROM CommunicationEntity c " + "WHERE c.amendmentRequest.id = :amendmentId AND c.isDeleted = false")
|
||||||
|
List<CommunicationResponseBean> findCommentDetailsByAmendmentId(@Param("amendmentId") Long amendmentId);
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,72 @@
|
|||||||
|
//package net.gepafin.tendermanagement.scheduler;
|
||||||
|
//
|
||||||
|
//import net.gepafin.tendermanagement.dao.CommunicationAmendmentDao;
|
||||||
|
//import net.gepafin.tendermanagement.entities.ApplicationAmendmentRequestEntity;
|
||||||
|
//import net.gepafin.tendermanagement.entities.ApplicationEntity;
|
||||||
|
//import net.gepafin.tendermanagement.entities.UserEntity;
|
||||||
|
//import net.gepafin.tendermanagement.repositories.ApplicationAmendmentRepository;
|
||||||
|
//import net.gepafin.tendermanagement.repositories.ApplicationRepository;
|
||||||
|
//import net.gepafin.tendermanagement.repositories.UserRepository;
|
||||||
|
//import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
//import org.springframework.scheduling.annotation.Scheduled;
|
||||||
|
//import org.springframework.stereotype.Component;
|
||||||
|
//
|
||||||
|
//import java.time.LocalDateTime;
|
||||||
|
//import java.util.List;
|
||||||
|
//
|
||||||
|
//@Component
|
||||||
|
//public class NotificationScheduler {
|
||||||
|
//
|
||||||
|
// @Autowired
|
||||||
|
// UserRepository userRepository;
|
||||||
|
//
|
||||||
|
// @Autowired
|
||||||
|
// ApplicationRepository applicationRepository;
|
||||||
|
//
|
||||||
|
// @Autowired
|
||||||
|
// ApplicationAmendmentRepository applicationAmendmentRepository;
|
||||||
|
//
|
||||||
|
// @Autowired
|
||||||
|
// CommunicationAmendmentDao communicationAmendmentDao;
|
||||||
|
//
|
||||||
|
// @Scheduled(cron = "0 0/10 * * * ?", zone = "Asia/Kolkata")
|
||||||
|
// void sendNotificationForRejectedApplicationToBeneficiary() {
|
||||||
|
//
|
||||||
|
// List<ApplicationEntity> applicationsList = applicationRepository.findByIsDeletedFalse();
|
||||||
|
// List<ApplicationAmendmentRequestEntity> amendmentRequestList = applicationAmendmentRepository.findByIsDeletedFalse();
|
||||||
|
//
|
||||||
|
// LocalDateTime today = LocalDateTime.now();
|
||||||
|
//
|
||||||
|
// for (ApplicationEntity application : applicationsList) {
|
||||||
|
// ApplicationAmendmentRequestEntity amendmentRequest = getAmendmentRequestForApplication(application, amendmentRequestList);
|
||||||
|
//
|
||||||
|
// if (amendmentRequest != null) {
|
||||||
|
// LocalDateTime requestDate = amendmentRequest.getStartedDate();
|
||||||
|
//
|
||||||
|
// // Check if requestDate + 7 days is less than or equal to today
|
||||||
|
// if (requestDate.plusDays(7).isAfter(today)) {
|
||||||
|
// // Update the application status to REJECTED
|
||||||
|
// application.setStatus("REJECTED");
|
||||||
|
// applicationRepository.save(application); // Save updated application
|
||||||
|
//
|
||||||
|
// // Update the amendment request status to CLOSED
|
||||||
|
// amendmentRequest.setStatus("CLOSED");
|
||||||
|
// applicationAmendmentRepository.save(amendmentRequest); // Save updated amendment request
|
||||||
|
//
|
||||||
|
// // Get the user associated with the application
|
||||||
|
// UserEntity user = userRepository.findById(application.getUserId()).orElse(null); // Adjust according to your UserRepository's method
|
||||||
|
//
|
||||||
|
// // Send email notification if user is found
|
||||||
|
// if (user != null && user.getEmail() != null) {
|
||||||
|
// communicationAmendmentDao.sendApplicationFailureNotificationEmail(user.getEmail(), application);
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// private ApplicationAmendmentRequestEntity getAmendmentRequestForApplication(ApplicationEntity application, List<ApplicationAmendmentRequestEntity> amendmentRequestList) {
|
||||||
|
//
|
||||||
|
// return amendmentRequestList.stream().filter(request -> request.getId().equals(application.getId())).findFirst().orElse(null);
|
||||||
|
// }
|
||||||
|
//}
|
||||||
@@ -1,17 +1,15 @@
|
|||||||
package net.gepafin.tendermanagement.service;
|
package net.gepafin.tendermanagement.service;
|
||||||
|
|
||||||
import net.gepafin.tendermanagement.entities.CommunicationAmendmentEntity;
|
|
||||||
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 java.util.Optional;
|
|
||||||
|
|
||||||
public interface CommunicationAmendmentService {
|
public interface CommunicationAmendmentService {
|
||||||
CommunicationResponseBean addCommentToAmendmentRequest(CommunicationRequestBean communicationRequestBean);
|
CommunicationResponseBean addCommentToAmendmentRequest(CommunicationRequestBean communicationRequestBean, Long amendmentId);
|
||||||
|
|
||||||
String deleteCommunicationAmendmentComment(Long amendmentId, Long commentId);
|
String deleteCommunicationAmendmentComment(Long amendmentId, Long commentId);
|
||||||
|
|
||||||
CommunicationResponseBean updateCommunicationAmendment(CommunicationRequestBean communicationRequestBean);
|
CommunicationResponseBean updateCommunicationAmendment(CommunicationRequestBean communicationRequestBean, Long amendmentId, Long commentId);
|
||||||
|
|
||||||
CommunicationResponseBean getAmendmentComments(Long id, Long commentId);
|
ApplicationAmendmentResponse getAmendmentComments(Long id);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,15 +1,13 @@
|
|||||||
package net.gepafin.tendermanagement.service.impl;
|
package net.gepafin.tendermanagement.service.impl;
|
||||||
|
|
||||||
import net.gepafin.tendermanagement.dao.CommunicationAmendmentDao;
|
import net.gepafin.tendermanagement.dao.CommunicationAmendmentDao;
|
||||||
import net.gepafin.tendermanagement.entities.CommunicationAmendmentEntity;
|
|
||||||
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.CommunicationAmendmentService;
|
import net.gepafin.tendermanagement.service.CommunicationAmendmentService;
|
||||||
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 java.util.Optional;
|
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
public class CommunicationAmendmentServiceImpl implements CommunicationAmendmentService {
|
public class CommunicationAmendmentServiceImpl implements CommunicationAmendmentService {
|
||||||
|
|
||||||
@@ -17,8 +15,8 @@ public class CommunicationAmendmentServiceImpl implements CommunicationAmendment
|
|||||||
CommunicationAmendmentDao communicationAmendmentDao;
|
CommunicationAmendmentDao communicationAmendmentDao;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public CommunicationResponseBean addCommentToAmendmentRequest(CommunicationRequestBean communicationRequestBean) {
|
public CommunicationResponseBean addCommentToAmendmentRequest(CommunicationRequestBean communicationRequestBean, Long amendmentId) {
|
||||||
return communicationAmendmentDao.addCommentToAmendmentRequest(communicationRequestBean);
|
return communicationAmendmentDao.addCommentToAmendmentRequest(communicationRequestBean,amendmentId);
|
||||||
}
|
}
|
||||||
@Override
|
@Override
|
||||||
public String deleteCommunicationAmendmentComment(Long amendmentId, Long commentId) {
|
public String deleteCommunicationAmendmentComment(Long amendmentId, Long commentId) {
|
||||||
@@ -26,13 +24,13 @@ public class CommunicationAmendmentServiceImpl implements CommunicationAmendment
|
|||||||
return communicationAmendmentDao.deleteCommunicationAmendmentComment(amendmentId, commentId);
|
return communicationAmendmentDao.deleteCommunicationAmendmentComment(amendmentId, commentId);
|
||||||
}
|
}
|
||||||
@Override
|
@Override
|
||||||
public CommunicationResponseBean updateCommunicationAmendment(CommunicationRequestBean communicationRequestBean) {
|
public CommunicationResponseBean updateCommunicationAmendment(CommunicationRequestBean communicationRequestBean, Long amendmentId, Long commentId) {
|
||||||
|
|
||||||
return communicationAmendmentDao.updateCommunicationAmendment(communicationRequestBean);
|
return communicationAmendmentDao.updateCommunicationAmendment(communicationRequestBean, amendmentId, commentId);
|
||||||
}
|
}
|
||||||
@Override
|
@Override
|
||||||
public CommunicationResponseBean getAmendmentComments(Long id, Long commentId) {
|
public ApplicationAmendmentResponse getAmendmentComments(Long id) {
|
||||||
|
|
||||||
return communicationAmendmentDao.getAmendmentComments(id, commentId);
|
return communicationAmendmentDao.getAmendmentComments(id);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -108,4 +108,12 @@ public class DateTimeUtil {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
public static String formatCreatedDate(LocalDateTime createdDate) {
|
||||||
|
|
||||||
|
if (createdDate == null) {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd/MM/yyyy");
|
||||||
|
return createdDate.format(formatter);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,15 +0,0 @@
|
|||||||
package net.gepafin.tendermanagement.web.rest.api;
|
|
||||||
|
|
||||||
import feign.Param;
|
|
||||||
import net.gepafin.tendermanagement.entities.ApplicationAmendmentRequestEntity;
|
|
||||||
import org.springframework.data.jpa.repository.JpaRepository;
|
|
||||||
import org.springframework.data.jpa.repository.Query;
|
|
||||||
|
|
||||||
import java.util.Optional;
|
|
||||||
|
|
||||||
public interface ApplicationAmendmentRepository extends JpaRepository<ApplicationAmendmentRequestEntity, Long> {
|
|
||||||
|
|
||||||
@Query("SELECT app FROM ApplicationAmendmentRequestEntity app WHERE app.id = :id")
|
|
||||||
ApplicationAmendmentRequestEntity findAmendmentById(@Param("id") Long id);
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -6,8 +6,8 @@ import io.swagger.v3.oas.annotations.media.Content;
|
|||||||
import io.swagger.v3.oas.annotations.media.ExampleObject;
|
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.entities.CommunicationAmendmentEntity;
|
|
||||||
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;
|
||||||
@@ -17,10 +17,10 @@ import org.springframework.http.ResponseEntity;
|
|||||||
import org.springframework.validation.annotation.Validated;
|
import org.springframework.validation.annotation.Validated;
|
||||||
import org.springframework.web.bind.annotation.DeleteMapping;
|
import org.springframework.web.bind.annotation.DeleteMapping;
|
||||||
import org.springframework.web.bind.annotation.GetMapping;
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
|
import org.springframework.web.bind.annotation.PathVariable;
|
||||||
import org.springframework.web.bind.annotation.PostMapping;
|
import org.springframework.web.bind.annotation.PostMapping;
|
||||||
import org.springframework.web.bind.annotation.PutMapping;
|
import org.springframework.web.bind.annotation.PutMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestBody;
|
||||||
import java.util.Optional;
|
|
||||||
|
|
||||||
@Validated
|
@Validated
|
||||||
public interface CommunicationAmendmentApi {
|
public interface CommunicationAmendmentApi {
|
||||||
@@ -31,19 +31,19 @@ public interface CommunicationAmendmentApi {
|
|||||||
@ExampleObject(value = ErrorConstants.UNAUTHORIZED_ERROR_EXAMPLE) })),
|
@ExampleObject(value = ErrorConstants.UNAUTHORIZED_ERROR_EXAMPLE) })),
|
||||||
@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) })) })
|
||||||
@PostMapping(value = "", produces = { "application/json" })
|
@PostMapping(value = "/{amendmentId}", produces = { "application/json" })
|
||||||
ResponseEntity<Response<CommunicationResponseBean>> addCommentToAmendmentRequest(HttpServletRequest request, @Parameter CommunicationRequestBean communicationResponseBean);
|
ResponseEntity<Response<CommunicationResponseBean>> addCommentToAmendmentRequest(HttpServletRequest request, @RequestBody @Parameter CommunicationRequestBean communicationResponseBean,
|
||||||
|
@Param(value = "amendmentId") Long amendmentId);
|
||||||
|
|
||||||
@Operation(summary = "Api to Get Amendment request comment", responses = { @ApiResponse(responseCode = "200", description = "OK"),
|
@Operation(summary = "API to Get Amendment Request Comment", 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 = @ExampleObject(value =
|
||||||
@ExampleObject(value = ErrorConstants.NOTFOUND_ERROR_EXAMPLE) })),
|
ErrorConstants.NOTFOUND_ERROR_EXAMPLE))),
|
||||||
@ApiResponse(responseCode = "401", description = "Unauthorized", content = @Content(mediaType = MediaType.APPLICATION_JSON_VALUE, examples = {
|
@ApiResponse(responseCode = "401", description = "Unauthorized", content = @Content(mediaType = MediaType.APPLICATION_JSON_VALUE, examples = @ExampleObject(value =
|
||||||
@ExampleObject(value = ErrorConstants.UNAUTHORIZED_ERROR_EXAMPLE) })),
|
ErrorConstants.UNAUTHORIZED_ERROR_EXAMPLE))),
|
||||||
@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 =
|
||||||
@ExampleObject(value = ErrorConstants.BADREQUEST_ERROR_EXAMPLE) })) })
|
ErrorConstants.BADREQUEST_ERROR_EXAMPLE))) })
|
||||||
@GetMapping(value = "/{amendmentId}/{commentId}", produces = { "application/json" })
|
@GetMapping(value = "/{amendmentId}", produces = "application/json")
|
||||||
ResponseEntity<Response<CommunicationResponseBean>> getAmendmentComments(HttpServletRequest request, @Param(value = "amendmentId") Long id,
|
public ResponseEntity<Response<ApplicationAmendmentResponse>> getAmendmentComments(@PathVariable Long amendmentId);
|
||||||
@Param(value = "commentId") Long commentId);
|
|
||||||
|
|
||||||
@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 = {
|
||||||
@@ -52,8 +52,9 @@ public interface CommunicationAmendmentApi {
|
|||||||
@ExampleObject(value = ErrorConstants.UNAUTHORIZED_ERROR_EXAMPLE) })),
|
@ExampleObject(value = ErrorConstants.UNAUTHORIZED_ERROR_EXAMPLE) })),
|
||||||
@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 = "", produces = { "application/json" })
|
@PutMapping(value = "/{amendmentId}/{commentId}", produces = { "application/json" })
|
||||||
ResponseEntity<Response<CommunicationResponseBean>> updateCommunicationAmendment(HttpServletRequest request, @Parameter CommunicationRequestBean communicationResponseBean);
|
ResponseEntity<Response<CommunicationResponseBean>> updateCommunicationAmendment(HttpServletRequest request, @RequestBody @Parameter CommunicationRequestBean communicationResponseBean,
|
||||||
|
@PathVariable Long amendmentId, @PathVariable Long commentId);
|
||||||
|
|
||||||
@Operation(summary = "Api to delete communication comments", responses = { @ApiResponse(responseCode = "200", description = "OK"),
|
@Operation(summary = "Api to delete 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 = {
|
||||||
|
|||||||
@@ -3,8 +3,8 @@ package net.gepafin.tendermanagement.web.rest.api.impl;
|
|||||||
import jakarta.servlet.http.HttpServletRequest;
|
import jakarta.servlet.http.HttpServletRequest;
|
||||||
import net.gepafin.tendermanagement.config.Translator;
|
import net.gepafin.tendermanagement.config.Translator;
|
||||||
import net.gepafin.tendermanagement.constants.GepafinConstant;
|
import net.gepafin.tendermanagement.constants.GepafinConstant;
|
||||||
import net.gepafin.tendermanagement.entities.CommunicationAmendmentEntity;
|
|
||||||
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.service.CommunicationAmendmentService;
|
import net.gepafin.tendermanagement.service.CommunicationAmendmentService;
|
||||||
@@ -16,8 +16,6 @@ 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 java.util.Optional;
|
|
||||||
|
|
||||||
@RestController
|
@RestController
|
||||||
@RequestMapping("${openapi.gepafin.base-path:/v1/communication-amendment}")
|
@RequestMapping("${openapi.gepafin.base-path:/v1/communication-amendment}")
|
||||||
public class CommunicationAmendmentController implements CommunicationAmendmentApi {
|
public class CommunicationAmendmentController implements CommunicationAmendmentApi {
|
||||||
@@ -26,32 +24,33 @@ public class CommunicationAmendmentController implements CommunicationAmendmentA
|
|||||||
CommunicationAmendmentService communicationAmendmentService;
|
CommunicationAmendmentService communicationAmendmentService;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ResponseEntity<Response<CommunicationResponseBean>> addCommentToAmendmentRequest(HttpServletRequest request, CommunicationRequestBean communicationRequestBean) {
|
public ResponseEntity<Response<CommunicationResponseBean>> addCommentToAmendmentRequest(HttpServletRequest request, CommunicationRequestBean communicationRequestBean,
|
||||||
|
Long amendmentId) {
|
||||||
|
|
||||||
CommunicationResponseBean communicationResponseBean = communicationAmendmentService.addCommentToAmendmentRequest(communicationRequestBean);
|
CommunicationResponseBean communicationResponseBean = communicationAmendmentService.addCommentToAmendmentRequest(communicationRequestBean, amendmentId);
|
||||||
return ResponseEntity.status(HttpStatus.CREATED)
|
return ResponseEntity.status(HttpStatus.CREATED)
|
||||||
.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<CommunicationResponseBean>> getAmendmentComments(HttpServletRequest request, Long id, Long commentId) {
|
public ResponseEntity<Response<ApplicationAmendmentResponse>> getAmendmentComments(Long amendmentId) {
|
||||||
|
|
||||||
CommunicationResponseBean communicationResponseBean = communicationAmendmentService.getAmendmentComments(id, commentId);
|
ApplicationAmendmentResponse response = communicationAmendmentService.getAmendmentComments(amendmentId);
|
||||||
return ResponseEntity.status(HttpStatus.CREATED)
|
return ResponseEntity.ok(new Response<>(response, Status.SUCCESS, Translator.toLocale(GepafinConstant.AMENDMENT_FOUND_SUCCESS)));
|
||||||
.body(new Response<>(communicationResponseBean, Status.SUCCESS, Translator.toLocale(GepafinConstant.COMMUNICATION_ADDED_TO_AMENDMENT_REQUEST_SUCCESS)));
|
|
||||||
}
|
}
|
||||||
@Override
|
@Override
|
||||||
public ResponseEntity<Response<CommunicationResponseBean>> updateCommunicationAmendment(HttpServletRequest request, CommunicationRequestBean communicationRequestBean) {
|
public ResponseEntity<Response<CommunicationResponseBean>> updateCommunicationAmendment(HttpServletRequest request, CommunicationRequestBean communicationRequestBean,
|
||||||
|
Long amendmentId, Long commentId) {
|
||||||
|
|
||||||
CommunicationResponseBean communicationResponseBean = communicationAmendmentService.updateCommunicationAmendment(communicationRequestBean);
|
CommunicationResponseBean communicationResponseBean = communicationAmendmentService.updateCommunicationAmendment(communicationRequestBean, amendmentId, commentId);
|
||||||
return ResponseEntity.status(HttpStatus.CREATED)
|
return ResponseEntity.status(HttpStatus.OK)
|
||||||
.body(new Response<>(communicationResponseBean, Status.SUCCESS, Translator.toLocale(GepafinConstant.COMMUNICATION_ADDED_TO_AMENDMENT_REQUEST_SUCCESS)));
|
.body(new Response<>(communicationResponseBean, Status.SUCCESS, Translator.toLocale(GepafinConstant.COMMENT_UPDATED_SUCCESS_MSG)));
|
||||||
}
|
}
|
||||||
@Override
|
@Override
|
||||||
public ResponseEntity<Response<String>> deleteApplicationAmendmentComment(HttpServletRequest request, Long applicationAmendId, Long commentId) {
|
public ResponseEntity<Response<String>> deleteApplicationAmendmentComment(HttpServletRequest request, Long applicationAmendId, Long commentId) {
|
||||||
|
|
||||||
String communicationResponseBean = communicationAmendmentService.deleteCommunicationAmendmentComment(applicationAmendId, commentId);
|
String communicationResponseBean = communicationAmendmentService.deleteCommunicationAmendmentComment(applicationAmendId, commentId);
|
||||||
return ResponseEntity.status(HttpStatus.CREATED)
|
return ResponseEntity.status(HttpStatus.OK)
|
||||||
.body(new Response<>(communicationResponseBean, Status.SUCCESS, Translator.toLocale(GepafinConstant.COMMUNICATION_ADDED_TO_AMENDMENT_REQUEST_SUCCESS)));
|
.body(new Response<>(communicationResponseBean, Status.SUCCESS, Translator.toLocale(GepafinConstant.COMMENT_DELETED_SUCCESS_MSG)));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1336,20 +1336,20 @@
|
|||||||
</changeSet>
|
</changeSet>
|
||||||
|
|
||||||
<changeSet id="19-10-2024_2" author="Harish Bagora">
|
<changeSet id="19-10-2024_2" author="Harish Bagora">
|
||||||
<modifyDataType tableName="protocol" columnName="HUB_ID" newDataType="INTEGER"/>
|
<modifyDataType tableName="protocol" columnName="HUB_ID" newDataType="INTEGER"/>
|
||||||
|
|
||||||
<addForeignKeyConstraint baseTableName="protocol"
|
<addForeignKeyConstraint baseTableName="protocol"
|
||||||
baseColumnNames="HUB_ID"
|
baseColumnNames="HUB_ID"
|
||||||
constraintName="fk_protocol_hub"
|
constraintName="fk_protocol_hub"
|
||||||
referencedTableName="hub"
|
referencedTableName="hub"
|
||||||
referencedColumnNames="id"/>
|
referencedColumnNames="id"/>
|
||||||
</changeSet>
|
</changeSet>
|
||||||
|
|
||||||
|
|
||||||
<changeSet id="24-10-2024_1" author="Rajesh Khore">
|
<changeSet id="24-10-2024_1" author="Rajesh Khore">
|
||||||
<dropUniqueConstraint
|
<dropUniqueConstraint
|
||||||
constraintName="company_vat_number_key"
|
constraintName="company_vat_number_key"
|
||||||
tableName="company"/>
|
tableName="company"/>
|
||||||
|
|
||||||
<addColumn tableName="company">
|
<addColumn tableName="company">
|
||||||
<column name="hub_id" type="INTEGER" defaultValue="1">
|
<column name="hub_id" type="INTEGER" defaultValue="1">
|
||||||
@@ -1357,24 +1357,24 @@
|
|||||||
</column>
|
</column>
|
||||||
</addColumn>
|
</addColumn>
|
||||||
|
|
||||||
<addUniqueConstraint
|
<addUniqueConstraint
|
||||||
columnNames="VAT_NUMBER, hub_id"
|
columnNames="VAT_NUMBER, hub_id"
|
||||||
tableName="company"
|
tableName="company"
|
||||||
constraintName="uk_vat_hub" />
|
constraintName="uk_vat_hub"/>
|
||||||
|
|
||||||
<addForeignKeyConstraint
|
<addForeignKeyConstraint
|
||||||
baseTableName="company"
|
baseTableName="company"
|
||||||
baseColumnNames="hub_id"
|
baseColumnNames="hub_id"
|
||||||
referencedTableName="hub"
|
referencedTableName="hub"
|
||||||
referencedColumnNames="id"
|
referencedColumnNames="id"
|
||||||
constraintName="fk_company_hub" />
|
constraintName="fk_company_hub"/>
|
||||||
|
|
||||||
</changeSet>
|
</changeSet>
|
||||||
|
|
||||||
<changeSet id="24-10-2024_2" author="Rajesh Khore">
|
<changeSet id="24-10-2024_2" author="Rajesh Khore">
|
||||||
<dropUniqueConstraint
|
<dropUniqueConstraint
|
||||||
constraintName="beneficiary_codice_fiscale_key"
|
constraintName="beneficiary_codice_fiscale_key"
|
||||||
tableName="beneficiary"/>
|
tableName="beneficiary"/>
|
||||||
|
|
||||||
<addColumn tableName="beneficiary">
|
<addColumn tableName="beneficiary">
|
||||||
<column name="hub_id" type="INTEGER" defaultValue="1">
|
<column name="hub_id" type="INTEGER" defaultValue="1">
|
||||||
@@ -1382,17 +1382,17 @@
|
|||||||
</column>
|
</column>
|
||||||
</addColumn>
|
</addColumn>
|
||||||
|
|
||||||
<addUniqueConstraint
|
<addUniqueConstraint
|
||||||
columnNames="CODICE_FISCALE, hub_id"
|
columnNames="CODICE_FISCALE, hub_id"
|
||||||
tableName="beneficiary"
|
tableName="beneficiary"
|
||||||
constraintName="uk_codice_hub" />
|
constraintName="uk_codice_hub"/>
|
||||||
|
|
||||||
<addForeignKeyConstraint
|
<addForeignKeyConstraint
|
||||||
baseTableName="beneficiary"
|
baseTableName="beneficiary"
|
||||||
baseColumnNames="hub_id"
|
baseColumnNames="hub_id"
|
||||||
referencedTableName="hub"
|
referencedTableName="hub"
|
||||||
referencedColumnNames="id"
|
referencedColumnNames="id"
|
||||||
constraintName="fk_beneficiary_hub" />
|
constraintName="fk_beneficiary_hub"/>
|
||||||
</changeSet>
|
</changeSet>
|
||||||
|
|
||||||
<changeSet id="24-10-2024_3" author="Rajesh Khore">
|
<changeSet id="24-10-2024_3" author="Rajesh Khore">
|
||||||
@@ -1402,12 +1402,12 @@
|
|||||||
</column>
|
</column>
|
||||||
</addColumn>
|
</addColumn>
|
||||||
|
|
||||||
<addForeignKeyConstraint
|
<addForeignKeyConstraint
|
||||||
baseTableName="application"
|
baseTableName="application"
|
||||||
baseColumnNames="hub_id"
|
baseColumnNames="hub_id"
|
||||||
referencedTableName="hub"
|
referencedTableName="hub"
|
||||||
referencedColumnNames="id"
|
referencedColumnNames="id"
|
||||||
constraintName="fk_application_hub" />
|
constraintName="fk_application_hub"/>
|
||||||
</changeSet>
|
</changeSet>
|
||||||
|
|
||||||
<changeSet id="25-10-2024_1" author="Piyush">
|
<changeSet id="25-10-2024_1" author="Piyush">
|
||||||
@@ -1483,62 +1483,4 @@
|
|||||||
</insert>
|
</insert>
|
||||||
</changeSet>
|
</changeSet>
|
||||||
|
|
||||||
<changeSet id="25-10-2024_4" author="Piyush">
|
|
||||||
<createTable tableName="application_amendment_request">
|
|
||||||
<column name="id" type="INTEGER" autoIncrement="true">
|
|
||||||
<constraints nullable="false" primaryKey="true" primaryKeyName="application_amendment_request_pkey"/>
|
|
||||||
</column>
|
|
||||||
<column name="note" type="TEXT">
|
|
||||||
<constraints nullable="true"/>
|
|
||||||
</column>
|
|
||||||
<column name="response_days" type="INTEGER">
|
|
||||||
<constraints nullable="true"/>
|
|
||||||
</column>
|
|
||||||
<column name="is_notification" type="BOOLEAN">
|
|
||||||
<constraints nullable="true"/>
|
|
||||||
</column>
|
|
||||||
<column name="is_email" type="BOOLEAN">
|
|
||||||
<constraints nullable="true"/>
|
|
||||||
</column>
|
|
||||||
<column name="field_id" type="TEXT">
|
|
||||||
<constraints nullable="true"/>
|
|
||||||
</column>
|
|
||||||
<column name="created_date" type="TIMESTAMP WITHOUT TIME ZONE">
|
|
||||||
<constraints nullable="true"/>
|
|
||||||
</column>
|
|
||||||
<column name="updated_date" type="TIMESTAMP WITHOUT TIME ZONE">
|
|
||||||
<constraints nullable="true"/>
|
|
||||||
</column>
|
|
||||||
<column name="is_deleted" type="BOOLEAN" defaultValueBoolean="false">
|
|
||||||
<constraints nullable="false"/>
|
|
||||||
</column>
|
|
||||||
</createTable>
|
|
||||||
</changeSet>
|
|
||||||
|
|
||||||
<changeSet id="25-10-2024_3" author="Piyush">
|
|
||||||
<createTable tableName="communication_amendment">
|
|
||||||
<column name="id" type="INTEGER" autoIncrement="true">
|
|
||||||
<constraints nullable="false" primaryKey="true" primaryKeyName="communication_amendment_pkey"/>
|
|
||||||
</column>
|
|
||||||
<column name="communication_title" type="VARCHAR(255)">
|
|
||||||
<constraints nullable="true"/>
|
|
||||||
</column>
|
|
||||||
<column name="communication_comment" type="TEXT">
|
|
||||||
<constraints nullable="true"/>
|
|
||||||
</column>
|
|
||||||
<column name="created_date" type="TIMESTAMP WITHOUT TIME ZONE">
|
|
||||||
<constraints nullable="true"/>
|
|
||||||
</column>
|
|
||||||
<column name="updated_date" type="TIMESTAMP WITHOUT TIME ZONE">
|
|
||||||
<constraints nullable="true"/>
|
|
||||||
</column>
|
|
||||||
<column name="is_deleted" type="BOOLEAN" defaultValueBoolean="false">
|
|
||||||
<constraints nullable="false"/>
|
|
||||||
</column>
|
|
||||||
<column name="amendment_id" type="INTEGER">
|
|
||||||
<constraints nullable="false" foreignKeyName="fk_amendment_id" references="application_amendment_request(id)"/>
|
|
||||||
</column>
|
|
||||||
</createTable>
|
|
||||||
</changeSet>
|
|
||||||
|
|
||||||
</databaseChangeLog>
|
</databaseChangeLog>
|
||||||
|
|||||||
@@ -0,0 +1,135 @@
|
|||||||
|
INSERT INTO gepafin_schema.system_email_template
|
||||||
|
(
|
||||||
|
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;">
|
||||||
|
<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 Protocollo n. <strong>{{protocol_number}}</strong> del
|
||||||
|
<strong>{{protocol_date}}</strong> e <strong>{{protocol_time}}</strong>, alla luce dell’attività istruttoria svolta,
|
||||||
|
segnaliamo quanto segue:</p>
|
||||||
|
<ul>
|
||||||
|
<li>{{form_dataInput}}</li>
|
||||||
|
</ul>
|
||||||
|
<p>Vi invitiamo a fornire quanto sopra richiesto integrando la documentazione sia caricandola all’interno dello sportello
|
||||||
|
online <a href="https://bandi.gepafin.it/">https://bandi.gepafin.it/</a> che inviandola a mezzo PEC all’indirizzo
|
||||||
|
bandi.gepafin@legalmail.it 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>Gepafin S.p.a.</strong></p>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>',
|
||||||
|
'BANDO {{call_name}} - Domanda di concessione di finanziamento agevolato {{company_name}}',
|
||||||
|
NULL,
|
||||||
|
true,
|
||||||
|
false,
|
||||||
|
'2024-10-26 20:00:00',
|
||||||
|
'2024-10-26 20:00:00'
|
||||||
|
);
|
||||||
|
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',
|
||||||
|
'<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="https://bandi.gepafin.it/">https://bandi.gepafin.it/</a> entro <strong>10 giorni</strong> dalla ricezione di questa comunicazione.</p>
|
||||||
|
<p>Distinti Saluti,</p>
|
||||||
|
<p><strong>Gepafin S.p.a.</strong></p>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>',
|
||||||
|
'BANDO {{call_name}} - Domanda di finanziamento agevolato non ammessa {{company_name}}',
|
||||||
|
NULL,
|
||||||
|
true,
|
||||||
|
false,
|
||||||
|
'2024-10-26 20:00:00',
|
||||||
|
'2024-10-26 20:00:00'
|
||||||
|
);
|
||||||
|
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;">
|
||||||
|
<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>Gepafin S.p.a.</strong></p>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>',
|
||||||
|
'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'
|
||||||
|
);
|
||||||
|
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;">
|
||||||
|
<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="https://bandi.gepafin.it/">https://bandi.gepafin.it/</a> entro <strong>10 giorni</strong> dalla ricezione di questa comunicazione.</p>
|
||||||
|
<p>Distinti Saluti,</p>
|
||||||
|
<p><strong>Gepafin S.p.a.</strong></p>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>',
|
||||||
|
'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'
|
||||||
|
);
|
||||||
|
|
||||||
Reference in New Issue
Block a user