Resolved Conflicts
This commit is contained in:
@@ -259,7 +259,7 @@ public class GepafinConstant {
|
|||||||
public static final String EVALUATIONCRITERIA_INVALID = "evaluationCriteria.invalid";
|
public static final String EVALUATIONCRITERIA_INVALID = "evaluationCriteria.invalid";
|
||||||
public static final String APPLICATION_NOT_IN_DRAFT_STATUS="application.not.in.draft.status";
|
public static final String APPLICATION_NOT_IN_DRAFT_STATUS="application.not.in.draft.status";
|
||||||
public static final String GET_ERROR_S3 = "get.error.s3";
|
public static final String GET_ERROR_S3 = "get.error.s3";
|
||||||
|
public static final String BENEFICIARY_EMAIL_NOT_FOUND_MSG = "beneficiary.email.not.found.msg";
|
||||||
public static final String ADDED_S3_PATH_STRUCTURE ="added.s3.path.structure";
|
public static final String ADDED_S3_PATH_STRUCTURE ="added.s3.path.structure";
|
||||||
public static final String S3_PATH_STRUCTURE_BY_TYPE ="fetched.s3.path.structure.by.type.successfully";
|
public static final String S3_PATH_STRUCTURE_BY_TYPE ="fetched.s3.path.structure.by.type.successfully";
|
||||||
public static final String S3_PATH_STRUCTURE_NOT_FOUND_BY_TYPE_MSG ="s3.path.not.found.by.type";
|
public static final String S3_PATH_STRUCTURE_NOT_FOUND_BY_TYPE_MSG ="s3.path.not.found.by.type";
|
||||||
@@ -287,7 +287,7 @@ public class GepafinConstant {
|
|||||||
public static final String AMENDMENT_FOUND_SUCCESS = "amendment.found.success";
|
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 INVALID_AMENDMENT_FOR_COMMENT = "invalid.amendment.for.comment";
|
||||||
public static final String DD_MM_YYYY_HH_MM = "DD_MM_YYYY_HH_MM";
|
public static final String DD_MM_YYYY_HH_MM = "DD_MM_YYYY_HH_MM";
|
||||||
|
public static final String REMINDER_EMAIL_SENT_SUCCESS_MSG = "reminder.email.sent.success.msg";
|
||||||
public static final String ENCRYPT_INIT_VECTOR = "IG8*(*@&)*#biVVD";
|
public static final String ENCRYPT_INIT_VECTOR = "IG8*(*@&)*#biVVD";
|
||||||
public static final String ENCRYPT_KEY = "U2VjdXJlRW5jcnlwdEtleQ==";
|
public static final String ENCRYPT_KEY = "U2VjdXJlRW5jcnlwdEtleQ==";
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,10 +18,13 @@ import net.gepafin.tendermanagement.model.request.ApplicationFormFieldRequestBea
|
|||||||
import net.gepafin.tendermanagement.model.request.CloseAmendmentRequest;
|
import net.gepafin.tendermanagement.model.request.CloseAmendmentRequest;
|
||||||
import net.gepafin.tendermanagement.model.response.AmendmentFormFieldResponse;
|
import net.gepafin.tendermanagement.model.response.AmendmentFormFieldResponse;
|
||||||
import net.gepafin.tendermanagement.model.response.ApplicationAmendmentRequestResponse;
|
import net.gepafin.tendermanagement.model.response.ApplicationAmendmentRequestResponse;
|
||||||
|
import net.gepafin.tendermanagement.model.response.SystemEmailTemplateResponse;
|
||||||
import net.gepafin.tendermanagement.repositories.*;
|
import net.gepafin.tendermanagement.repositories.*;
|
||||||
import net.gepafin.tendermanagement.service.*;
|
import net.gepafin.tendermanagement.service.*;
|
||||||
import net.gepafin.tendermanagement.util.DateTimeUtil;
|
import net.gepafin.tendermanagement.util.DateTimeUtil;
|
||||||
import net.gepafin.tendermanagement.util.Validator;
|
import net.gepafin.tendermanagement.util.Validator;
|
||||||
|
import net.gepafin.tendermanagement.entities.SystemEmailTemplatesEntity.SystemEmailTemplatesEntityTypeEnum;
|
||||||
|
import net.gepafin.tendermanagement.util.Utils;
|
||||||
import net.gepafin.tendermanagement.web.rest.api.errors.CustomValidationException;
|
import net.gepafin.tendermanagement.web.rest.api.errors.CustomValidationException;
|
||||||
import net.gepafin.tendermanagement.web.rest.api.errors.ResourceNotFoundException;
|
import net.gepafin.tendermanagement.web.rest.api.errors.ResourceNotFoundException;
|
||||||
import net.gepafin.tendermanagement.web.rest.api.errors.Status;
|
import net.gepafin.tendermanagement.web.rest.api.errors.Status;
|
||||||
@@ -84,6 +87,13 @@ public class ApplicationAmendmentRequestDao {
|
|||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private AssignedApplicationsRepository assignedApplicationsRepository;
|
private AssignedApplicationsRepository assignedApplicationsRepository;
|
||||||
|
@Autowired
|
||||||
|
private SystemEmailTemplatesService systemEmailTemplatesService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private HubService hubService;
|
||||||
|
// @Autowired
|
||||||
|
// private MailUtil mailUtil;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private Validator validator;
|
private Validator validator;
|
||||||
@@ -517,4 +527,57 @@ public class ApplicationAmendmentRequestDao {
|
|||||||
log.info("Amendment status updated successfully: {}", response);
|
log.info("Amendment status updated successfully: {}", response);
|
||||||
return response;
|
return response;
|
||||||
}
|
}
|
||||||
|
public void sendReminderEmail(Long amendmentId) {
|
||||||
|
ApplicationAmendmentRequestEntity amendment = applicationAmendmentRequestRepository.findByIdAndIsDeletedFalse(amendmentId)
|
||||||
|
.orElseThrow(() -> new ResourceNotFoundException(Status.NOT_FOUND,
|
||||||
|
Translator.toLocale(GepafinConstant.APPLICATION_AMENDMENT_NOT_FOUND_MSG)));
|
||||||
|
|
||||||
|
Optional<ApplicationEvaluationEntity> entityOptional = applicationEvaluationRepository.findByIdAndIsDeletedFalse(amendment.getApplicationEvaluationEntity().getId());
|
||||||
|
if (entityOptional.isPresent()) {
|
||||||
|
ApplicationEntity applicationEntity = applicationService.validateApplication(entityOptional.get().getApplicationId());
|
||||||
|
UserEntity beneficiaryUser = userService.validateUser(applicationEntity.getUserId());
|
||||||
|
HubEntity hub = hubService.valdateHub(applicationEntity.getHubId());
|
||||||
|
SystemEmailTemplateResponse emailTemplate = systemEmailTemplatesService
|
||||||
|
.retrieveTemplateByTypeAndCall(SystemEmailTemplatesEntityTypeEnum.AMENDMENT_REMINDER, hub, null);
|
||||||
|
String subject = prepareSubject(emailTemplate, amendment, beneficiaryUser);
|
||||||
|
String body = prepareBody(emailTemplate, amendment, beneficiaryUser);
|
||||||
|
String email = beneficiaryUser.getEmail();
|
||||||
|
if (Boolean.TRUE.equals(amendment.getIsEmail())&&email != null && !email.isEmpty()) {
|
||||||
|
emailNotificationDao.sendMail(hub.getId(), subject, body, List.of(email));
|
||||||
|
// mailUtil.sendByMailGun(subject,body,List.of(email),null);
|
||||||
|
} else {
|
||||||
|
throw new CustomValidationException(Status.BAD_REQUEST, Translator.toLocale(GepafinConstant.BENEFICIARY_EMAIL_NOT_FOUND_MSG));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private String prepareSubject(SystemEmailTemplateResponse template, ApplicationAmendmentRequestEntity amendment, UserEntity beneficiary) {
|
||||||
|
Map<String, String> subjectPlaceholders = new HashMap<>();
|
||||||
|
String firstName = beneficiary.getFirstName() != null ? beneficiary.getFirstName() : "";
|
||||||
|
String lastName = beneficiary.getLastName() != null ? beneficiary.getLastName() : "";
|
||||||
|
String beneficiaryName = String.join(" ", firstName, lastName).trim();
|
||||||
|
|
||||||
|
subjectPlaceholders.put("{{amendment_id}}", amendment.getId().toString());
|
||||||
|
subjectPlaceholders.put("{{beneficiary_name}}", beneficiaryName);
|
||||||
|
|
||||||
|
return Utils.replacePlaceholders(template.getSubject(), subjectPlaceholders);
|
||||||
|
}
|
||||||
|
|
||||||
|
private String prepareBody(SystemEmailTemplateResponse template, ApplicationAmendmentRequestEntity amendment, UserEntity beneficiary) {
|
||||||
|
Map<String, String> bodyPlaceholders = new HashMap<>();
|
||||||
|
bodyPlaceholders.put("{{amendment_id}}", amendment.getId().toString());
|
||||||
|
|
||||||
|
if (amendment.getStartDate() != null && amendment.getResponseDays() != null) {
|
||||||
|
|
||||||
|
LocalDateTime dueDate = amendment.getStartDate().plusDays(amendment.getResponseDays());
|
||||||
|
bodyPlaceholders.put("{{amendment_due_date}}", DateTimeUtil.formatLocalDateTime(dueDate, GepafinConstant.DD_MM_YYYY));
|
||||||
|
} else {
|
||||||
|
|
||||||
|
bodyPlaceholders.put("{{amendment_due_date}}", "Not available");
|
||||||
|
}
|
||||||
|
|
||||||
|
return Utils.replacePlaceholders(template.getHtmlContent(), bodyPlaceholders);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -97,6 +97,7 @@ public class DocumentDao {
|
|||||||
private Long resolveSourceId(Long sourceId, DocumentSourceTypeEnum sourceType) {
|
private Long resolveSourceId(Long sourceId, DocumentSourceTypeEnum sourceType) {
|
||||||
if (sourceType == DocumentSourceTypeEnum.CALL) {
|
if (sourceType == DocumentSourceTypeEnum.CALL) {
|
||||||
CallEntity callEntity = callService.validateCall(sourceId);
|
CallEntity callEntity = callService.validateCall(sourceId);
|
||||||
|
callDao.validateUpdate(callEntity);
|
||||||
return callEntity.getId();
|
return callEntity.getId();
|
||||||
}
|
}
|
||||||
// else if (sourceType == SourceTypeEnum.APPLICATION) {
|
// else if (sourceType == SourceTypeEnum.APPLICATION) {
|
||||||
|
|||||||
@@ -43,6 +43,7 @@ public class SystemEmailTemplatesEntity extends BaseEntity {
|
|||||||
DOCUMENTATION_INTEGRATION_REQUEST("DOCUMENTATION_INTEGRATION_REQUEST"),
|
DOCUMENTATION_INTEGRATION_REQUEST("DOCUMENTATION_INTEGRATION_REQUEST"),
|
||||||
INADMISSIBILITY_NOTIFICATION_DUE_TO_FAILURE("INADMISSIBILITY_NOTIFICATION_DUE_TO_FAILURE"),
|
INADMISSIBILITY_NOTIFICATION_DUE_TO_FAILURE("INADMISSIBILITY_NOTIFICATION_DUE_TO_FAILURE"),
|
||||||
ADMISSIBILITY_NOTIFICATION("ADMISSIBILITY_NOTIFICATION"),
|
ADMISSIBILITY_NOTIFICATION("ADMISSIBILITY_NOTIFICATION"),
|
||||||
|
AMENDMENT_REMINDER("AMENDMENT_REMINDER"),
|
||||||
INADMISSIBILITY_TEMPLATE("INADMISSIBILITY_NOTIFICATION");
|
INADMISSIBILITY_TEMPLATE("INADMISSIBILITY_NOTIFICATION");
|
||||||
|
|
||||||
private String value;
|
private String value;
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ public class NotificationScheduler {
|
|||||||
@Autowired
|
@Autowired
|
||||||
EmailNotificationDao emailNotificationDao;
|
EmailNotificationDao emailNotificationDao;
|
||||||
|
|
||||||
// @Scheduled(cron = "0 0/1 * * * ?")
|
@Scheduled(cron = "0 0 1 * * ?")
|
||||||
void sendNotificationForRejectedApplicationToBeneficiary() {
|
void sendNotificationForRejectedApplicationToBeneficiary() {
|
||||||
|
|
||||||
List<ApplicationEntity> applicationsList = applicationRepository.findByIsDeletedFalse();
|
List<ApplicationEntity> applicationsList = applicationRepository.findByIsDeletedFalse();
|
||||||
@@ -42,16 +42,12 @@ public class NotificationScheduler {
|
|||||||
|
|
||||||
if (amendmentRequest != null) {
|
if (amendmentRequest != null) {
|
||||||
LocalDateTime requestDate = amendmentRequest.getCreatedDate();
|
LocalDateTime requestDate = amendmentRequest.getCreatedDate();
|
||||||
|
|
||||||
// Eg :- Check if requestDate + 7 days is less than or equal to today
|
|
||||||
if (requestDate.plusDays(amendmentRequest.getResponseDays()).isAfter(today)) {
|
if (requestDate.plusDays(amendmentRequest.getResponseDays()).isAfter(today)) {
|
||||||
// Update the application status to REJECTED
|
// Update the application status to REJECTED
|
||||||
application.setStatus("REJECTED");
|
application.setStatus("REJECTED");
|
||||||
applicationRepository.save(application); // Save updated application
|
applicationRepository.save(application);
|
||||||
|
amendmentRequest.setStatus("CLOSE");
|
||||||
// Update the amendment request status to CLOSED
|
applicationAmendmentRepository.save(amendmentRequest);
|
||||||
// amendmentRequest.setStatus("CLOSE");
|
|
||||||
// applicationAmendmentRepository.save(amendmentRequest); // Save updated amendment request
|
|
||||||
emailNotificationDao.sendApplicationFailureNotificationEmail(amendmentRequest);
|
emailNotificationDao.sendApplicationFailureNotificationEmail(amendmentRequest);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -25,5 +25,5 @@ public interface ApplicationAmendmentRequestService {
|
|||||||
public ApplicationAmendmentRequestResponse getAmendmentByApplicationId(HttpServletRequest request,Long applicationId);
|
public ApplicationAmendmentRequestResponse getAmendmentByApplicationId(HttpServletRequest request,Long applicationId);
|
||||||
public ApplicationAmendmentRequestResponse updateApplicationStatus(HttpServletRequest request, Long applicationId, ApplicationAmendmentRequestEnum status);
|
public ApplicationAmendmentRequestResponse updateApplicationStatus(HttpServletRequest request, Long applicationId, ApplicationAmendmentRequestEnum status);
|
||||||
|
|
||||||
|
void sendReminderEmail(HttpServletRequest request,Long amendmentId);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,20 +1,28 @@
|
|||||||
package net.gepafin.tendermanagement.service.impl;
|
package net.gepafin.tendermanagement.service.impl;
|
||||||
|
|
||||||
import jakarta.servlet.http.HttpServletRequest;
|
import jakarta.servlet.http.HttpServletRequest;
|
||||||
|
import net.gepafin.tendermanagement.config.Translator;
|
||||||
|
import net.gepafin.tendermanagement.constants.GepafinConstant;
|
||||||
import net.gepafin.tendermanagement.dao.ApplicationAmendmentRequestDao;
|
import net.gepafin.tendermanagement.dao.ApplicationAmendmentRequestDao;
|
||||||
import net.gepafin.tendermanagement.entities.ApplicationAmendmentRequestEntity;
|
import net.gepafin.tendermanagement.entities.ApplicationAmendmentRequestEntity;
|
||||||
|
import net.gepafin.tendermanagement.entities.ApplicationEvaluationEntity;
|
||||||
import net.gepafin.tendermanagement.entities.UserEntity;
|
import net.gepafin.tendermanagement.entities.UserEntity;
|
||||||
import net.gepafin.tendermanagement.enums.ApplicationAmendmentRequestEnum;
|
import net.gepafin.tendermanagement.enums.ApplicationAmendmentRequestEnum;
|
||||||
import net.gepafin.tendermanagement.model.request.ApplicationAmendmentRequest;
|
import net.gepafin.tendermanagement.model.request.ApplicationAmendmentRequest;
|
||||||
import net.gepafin.tendermanagement.model.request.ApplicationAmendmentRequestBean;
|
import net.gepafin.tendermanagement.model.request.ApplicationAmendmentRequestBean;
|
||||||
import net.gepafin.tendermanagement.model.request.CloseAmendmentRequest;
|
import net.gepafin.tendermanagement.model.request.CloseAmendmentRequest;
|
||||||
import net.gepafin.tendermanagement.model.response.ApplicationAmendmentRequestResponse;
|
import net.gepafin.tendermanagement.model.response.ApplicationAmendmentRequestResponse;
|
||||||
|
import net.gepafin.tendermanagement.repositories.ApplicationAmendmentRequestRepository;
|
||||||
|
import net.gepafin.tendermanagement.repositories.ApplicationEvaluationRepository;
|
||||||
import net.gepafin.tendermanagement.service.ApplicationAmendmentRequestService;
|
import net.gepafin.tendermanagement.service.ApplicationAmendmentRequestService;
|
||||||
import net.gepafin.tendermanagement.util.Validator;
|
import net.gepafin.tendermanagement.util.Validator;
|
||||||
|
import net.gepafin.tendermanagement.web.rest.api.errors.ResourceNotFoundException;
|
||||||
|
import net.gepafin.tendermanagement.web.rest.api.errors.Status;
|
||||||
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.List;
|
import java.util.List;
|
||||||
|
import java.util.Optional;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
public class ApplicationAmendmentRequestServiceImpl implements ApplicationAmendmentRequestService {
|
public class ApplicationAmendmentRequestServiceImpl implements ApplicationAmendmentRequestService {
|
||||||
@@ -24,6 +32,10 @@ public class ApplicationAmendmentRequestServiceImpl implements ApplicationAmendm
|
|||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private ApplicationAmendmentRequestDao applicationAmendmentRequestDao;
|
private ApplicationAmendmentRequestDao applicationAmendmentRequestDao;
|
||||||
|
@Autowired
|
||||||
|
private ApplicationAmendmentRequestRepository applicationAmendmentRequestRepository;
|
||||||
|
@Autowired
|
||||||
|
private ApplicationEvaluationRepository applicationEvaluationRepository;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ApplicationAmendmentRequestResponse getApplicationDataForAmendment(HttpServletRequest request, Long applicationEvaluationId) {
|
public ApplicationAmendmentRequestResponse getApplicationDataForAmendment(HttpServletRequest request, Long applicationEvaluationId) {
|
||||||
@@ -87,5 +99,17 @@ public class ApplicationAmendmentRequestServiceImpl implements ApplicationAmendm
|
|||||||
return applicationAmendmentRequestDao.updateApplicationAmendmentStatus(applicationId, status);
|
return applicationAmendmentRequestDao.updateApplicationAmendmentStatus(applicationId, status);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@Override
|
||||||
|
public void sendReminderEmail(HttpServletRequest request,Long amendmentId) {
|
||||||
|
ApplicationAmendmentRequestEntity amendment = applicationAmendmentRequestRepository.findByIdAndIsDeletedFalse(amendmentId)
|
||||||
|
.orElseThrow(() -> new ResourceNotFoundException(Status.NOT_FOUND,
|
||||||
|
Translator.toLocale(GepafinConstant.APPLICATION_AMENDMENT_NOT_FOUND_MSG)));
|
||||||
|
|
||||||
|
Optional<ApplicationEvaluationEntity> entityOptional = applicationEvaluationRepository.findByIdAndIsDeletedFalse(amendment.getApplicationEvaluationEntity().getId());
|
||||||
|
if (entityOptional.isPresent()) {
|
||||||
|
UserEntity user = validator.validatePreInstructor(request, entityOptional.get().getUserId());
|
||||||
|
|
||||||
|
applicationAmendmentRequestDao.sendReminderEmail(amendmentId);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -171,4 +171,19 @@ public interface ApplicationAmendmentRequestApi {
|
|||||||
@Parameter(description = "The application amendment id", required = true) @PathVariable("applicationAmendmentId") Long applicationAmendmentId,
|
@Parameter(description = "The application amendment id", required = true) @PathVariable("applicationAmendmentId") Long applicationAmendmentId,
|
||||||
@Parameter(description = "status", required = true)@RequestParam(value = "status", required = true) ApplicationAmendmentRequestEnum status);
|
@Parameter(description = "status", required = true)@RequestParam(value = "status", required = true) ApplicationAmendmentRequestEnum status);
|
||||||
|
|
||||||
|
@Operation(summary = "Send reminder email for the specified amendment",
|
||||||
|
responses = {
|
||||||
|
@ApiResponse(responseCode = "200", description = "Email sent successfully"),
|
||||||
|
@ApiResponse(responseCode = "404", description = "Amendment not found", content = @Content(mediaType = MediaType.APPLICATION_JSON_VALUE, examples = {
|
||||||
|
@ExampleObject(value = ErrorConstants.NOTFOUND_ERROR_EXAMPLE) })),
|
||||||
|
@ApiResponse(responseCode = "400", description = "Bad Request", content = @Content(mediaType = MediaType.APPLICATION_JSON_VALUE, examples = {
|
||||||
|
@ExampleObject(value = ErrorConstants.BADREQUEST_ERROR_EXAMPLE) })),
|
||||||
|
@ApiResponse(responseCode = "401", description = "Unauthorized", content = @Content(mediaType = MediaType.APPLICATION_JSON_VALUE, examples = {
|
||||||
|
@ExampleObject(value = ErrorConstants.UNAUTHORIZED_ERROR_EXAMPLE) }))
|
||||||
|
})
|
||||||
|
@PostMapping(value = "sendReminderEmail/{amendmentId}", produces = MediaType.APPLICATION_JSON_VALUE)
|
||||||
|
ResponseEntity<Response<Void>> sendReminderEmail(HttpServletRequest request,
|
||||||
|
@Parameter( required = true)
|
||||||
|
@PathVariable(value = "amendmentId") Long amendmentId);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -117,4 +117,16 @@ public class ApplicationAmendmentRequestController implements ApplicationAmendme
|
|||||||
return ResponseEntity.status(HttpStatus.OK)
|
return ResponseEntity.status(HttpStatus.OK)
|
||||||
.body(new Response<>(applicationResponse, Status.SUCCESS, Translator.toLocale(GepafinConstant.APPLICATION_STATUS_UPDATED_SUCCESSFULLY)));
|
.body(new Response<>(applicationResponse, Status.SUCCESS, Translator.toLocale(GepafinConstant.APPLICATION_STATUS_UPDATED_SUCCESSFULLY)));
|
||||||
}
|
}
|
||||||
|
@Override
|
||||||
|
public ResponseEntity<Response<Void>> sendReminderEmail(
|
||||||
|
HttpServletRequest request,
|
||||||
|
Long amendmentId) {
|
||||||
|
|
||||||
|
log.info("Sending reminder email for Amendment ID: {}", amendmentId);
|
||||||
|
applicationAmendmentRequestService.sendReminderEmail(request,amendmentId);
|
||||||
|
|
||||||
|
return ResponseEntity.status(HttpStatus.OK)
|
||||||
|
.body(new Response<>(null, Status.SUCCESS, Translator.toLocale(GepafinConstant.REMINDER_EMAIL_SENT_SUCCESS_MSG)));
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1647,20 +1647,40 @@
|
|||||||
<column name="internal_note" type="TEXT"></column>
|
<column name="internal_note" type="TEXT"></column>
|
||||||
</addColumn>
|
</addColumn>
|
||||||
</changeSet>
|
</changeSet>
|
||||||
|
|
||||||
|
<changeSet id="29-10-2024_2" author="Piyush">
|
||||||
|
<addColumn tableName="hub">
|
||||||
|
<column name="EMAIL_SERVICE_TYPE" type="TEXT"/>
|
||||||
|
<column name="EMAIL_SERVICE_CONFIG" type="TEXT"/>
|
||||||
|
</addColumn>
|
||||||
|
</changeSet>
|
||||||
|
|
||||||
|
<changeSet id="29-10-2024_3" author="Piyush">
|
||||||
|
<sqlFile dbms="postgresql"
|
||||||
|
path="db/dump/insert_system_email_template_for_notification_mail_31_10_2024.sql"/>
|
||||||
|
</changeSet>
|
||||||
|
|
||||||
<changeSet id="30-10-2024_1" author="Nisha Kashyap">
|
<changeSet id="30-10-2024_1" author="Nisha Kashyap">
|
||||||
<addColumn tableName="hub">
|
<addColumn tableName="hub">
|
||||||
<column name="pdf_banner" type="TEXT"></column>
|
<column name="pdf_banner" type="TEXT"></column>
|
||||||
</addColumn>
|
</addColumn>
|
||||||
<update tableName="hub">
|
<update tableName="hub">
|
||||||
<column name="pdf_banner" value='https://mementoresources.s3.amazonaws.com/gepafin/staging/template/gepafin-logo.jpg'/>
|
<column name="pdf_banner"
|
||||||
|
value='https://mementoresources.s3.amazonaws.com/gepafin/staging/template/gepafin-logo.jpg'/>
|
||||||
<where>UNIQUE_UUID = 'p4lk3bcx1RStqTaIVVbXs'</where>
|
<where>UNIQUE_UUID = 'p4lk3bcx1RStqTaIVVbXs'</where>
|
||||||
</update>
|
</update>
|
||||||
<update tableName="hub">
|
<update tableName="hub">
|
||||||
<column name="pdf_banner" value='https://mementoresources.s3.amazonaws.com/gepafin/staging/template/sviluppumbria_logo.jpg'/>
|
<column name="pdf_banner"
|
||||||
|
value='https://mementoresources.s3.amazonaws.com/gepafin/staging/template/sviluppumbria_logo.jpg'/>
|
||||||
<where>UNIQUE_UUID = 't7jh5wfg9QXylNaTZkPoE'</where>
|
<where>UNIQUE_UUID = 't7jh5wfg9QXylNaTZkPoE'</where>
|
||||||
</update>
|
</update>
|
||||||
</changeSet>
|
</changeSet>
|
||||||
|
|
||||||
|
<changeSet id="30-10-2024_2" author="Piyush">
|
||||||
|
<sqlFile dbms="postgresql"
|
||||||
|
path="db/dump/update_hub_data_for_email_service_config_31_10_2024_1.sql"/>
|
||||||
|
</changeSet>
|
||||||
|
|
||||||
<changeSet id="31-10-2024_1" author="Rajesh Khore">
|
<changeSet id="31-10-2024_1" author="Rajesh Khore">
|
||||||
<addColumn tableName="hub">
|
<addColumn tableName="hub">
|
||||||
<column name="EMAIL_SIGNATURE" type="TEXT"/>
|
<column name="EMAIL_SIGNATURE" type="TEXT"/>
|
||||||
@@ -1682,18 +1702,13 @@
|
|||||||
<where>UNIQUE_UUID = 't7jh5wfg9QXylNaTZkPoE'</where>
|
<where>UNIQUE_UUID = 't7jh5wfg9QXylNaTZkPoE'</where>
|
||||||
</update>
|
</update>
|
||||||
</changeSet>
|
</changeSet>
|
||||||
|
<changeSet id="30-10-2024_4" author="Harish Bagora">
|
||||||
|
<sql dbms="postgresql">select
|
||||||
<changeSet id="29-10-2024_2" author="Piyush">
|
setval('gepafin_schema.system_email_template_id_seq', (select
|
||||||
<addColumn tableName="hub">
|
max(id)+1
|
||||||
<column name="EMAIL_SERVICE_TYPE" type="TEXT"/>
|
from gepafin_schema.system_email_template), false)
|
||||||
<column name="EMAIL_SERVICE_CONFIG" type="TEXT"/>
|
</sql>
|
||||||
</addColumn>
|
|
||||||
</changeSet>
|
|
||||||
|
|
||||||
<changeSet id="29-10-2024_3" author="Piyush">
|
|
||||||
<sqlFile dbms="postgresql"
|
<sqlFile dbms="postgresql"
|
||||||
path="db/dump/insert_system_email_template_for_notification_mail_31_10_2024.sql"/>
|
path="db/dump/insert_system_email_template_for_sollecito_30_10_2024.sql"/>
|
||||||
</changeSet>
|
</changeSet>
|
||||||
|
|
||||||
</databaseChangeLog>
|
</databaseChangeLog>
|
||||||
|
|||||||
@@ -0,0 +1,29 @@
|
|||||||
|
-- SQL Dump to insert system email template for amendment reminder email with calculated due date
|
||||||
|
INSERT INTO gepafin_schema.system_email_template
|
||||||
|
(template_name, "type", html_content, subject, "json", "system", is_deleted, created_date, updated_date)
|
||||||
|
VALUES
|
||||||
|
(
|
||||||
|
'Amendment Reminder Email',
|
||||||
|
'AMENDMENT_REMINDER',
|
||||||
|
'<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>PROMEMORIA PER LA PRESENTAZIONE DELL''EMENDAMENTO</strong></p>
|
||||||
|
<p>Buongiorno,</p>
|
||||||
|
<p>Questo è un promemoria per completare la presentazione dell''emendamento entro il termine specificato. Di seguito i dettagli:</p>
|
||||||
|
<ul>
|
||||||
|
<li><strong>Amendment ID:</strong> {{amendment_id}}</li>
|
||||||
|
<li><strong>Data di Scadenza:</strong> {{amendment_due_date}}</li>
|
||||||
|
</ul>
|
||||||
|
<p>Si prega di assicurarsi che l''emendamento venga presentato entro la data di scadenza per evitare ritardi. Inviare l''emendamento tramite la piattaforma online <a href="{{platform_link}}">{{platform_link}}</a> </p>
|
||||||
|
<p>Distinti saluti,</p>
|
||||||
|
<p><strong>{{email_signature}}</strong></p>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>',
|
||||||
|
'Reminder: Pending Amendment Submission - ID {{amendment_id}}',
|
||||||
|
NULL,
|
||||||
|
true,
|
||||||
|
false,
|
||||||
|
CURRENT_TIMESTAMP,
|
||||||
|
CURRENT_TIMESTAMP);
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
UPDATE hub
|
||||||
|
SET email_service_type = 'PEC_SERVICE',
|
||||||
|
email_service_config = 'JkFbBfuVvq7VWwp5LcWIi+hAa1RJ1ekI0jq3w7gLTXETZiTaN8zC4OBWD53x8FtbfFTh3L/5805CIYTH1BQGa3X9q16q9SDzMy7DKHdmJzOnLKhn74C5akoXKaeXUCGnzp0cSk2c01FV6lwefC29IshijFSumCHtVlgWNeZigBx51GL2Coh8nF1Mu7/KIcny'
|
||||||
|
WHERE UNIQUE_UUID = 'p4lk3bcx1RStqTaIVVbXs';
|
||||||
|
|
||||||
|
UPDATE hub
|
||||||
|
SET email_service_type = 'MAILGUN_SERVICE',
|
||||||
|
email_service_config = 'mhyP0kKQCrsbhGv3PGx4yob4dPSNBOd2xFnAPkikJE7VHkydklfUSVWAdYjhXwOz8rglH2YYEC/xGZdrEgSnkS9Ed56/qzmaU1667GGf+kc5mciOiECW5/sVmhtbVClEnu1FGZMzlsJSqYKlTmqfCYD0lTAlak1Lu2n030tj6nhMDvUxP9CbeTwkzALMtmgt'
|
||||||
|
WHERE UNIQUE_UUID = 't7jh5wfg9QXylNaTZkPoE';
|
||||||
@@ -101,6 +101,7 @@ success.password.changed=Password changed successfully.
|
|||||||
logout.successful.msg=Logout successful. You have been logged out successfully.
|
logout.successful.msg=Logout successful. You have been logged out successfully.
|
||||||
#Update user Active or Deactive status
|
#Update user Active or Deactive status
|
||||||
update.user.status.success=User status has been successfully updated.
|
update.user.status.success=User status has been successfully updated.
|
||||||
|
beneficiary.email.not.found.msg=The email address for the beneficiary could not be found. Please ensure that the beneficiary has a valid email address.
|
||||||
|
|
||||||
|
|
||||||
#Form-field-related messages
|
#Form-field-related messages
|
||||||
@@ -295,6 +296,7 @@ application.amendment.get.success = Application Amendment details fetched succes
|
|||||||
application.amendment.update.successfully = Application Amendment Updated Successfully.
|
application.amendment.update.successfully = Application Amendment Updated Successfully.
|
||||||
application.amendment.closed.successfully = Application Amendment Closed Successfully.
|
application.amendment.closed.successfully = Application Amendment Closed Successfully.
|
||||||
response.days.extended.success=Response days extended successfully.
|
response.days.extended.success=Response days extended successfully.
|
||||||
|
reminder.email.sent.success.msg=Reminder email sent successfully!
|
||||||
|
|
||||||
added.comment.to.amendment.request.success = Application Amendment Comment Added Successfully.
|
added.comment.to.amendment.request.success = Application Amendment Comment Added Successfully.
|
||||||
comment.not.found = Comment Not Found.
|
comment.not.found = Comment Not Found.
|
||||||
|
|||||||
@@ -299,3 +299,5 @@ amendment.found.success = Richiesta di emendamento trovata con successo.
|
|||||||
invalid.amendment.for.comment = Richiesta di emendamento non valida per il commento fornito.
|
invalid.amendment.for.comment = Richiesta di emendamento non valida per il commento fornito.
|
||||||
DD_MM_YYYY_HH_MM = dd_MM_yyyy HH:mm
|
DD_MM_YYYY_HH_MM = dd_MM_yyyy HH:mm
|
||||||
create.application.data.amendment.msg =Emendamento alla domanda inviato con successo
|
create.application.data.amendment.msg =Emendamento alla domanda inviato con successo
|
||||||
|
beneficiary.email.not.found.msg=L'indirizzo email per il beneficiario non è stato trovato. Si prega di assicurarsi che il beneficiario abbia un indirizzo email valido.
|
||||||
|
reminder.email.sent.success.msg=Email di promemoria inviata con successo!
|
||||||
|
|||||||
Reference in New Issue
Block a user