Done ticket GEPAFINBE-90

This commit is contained in:
nisha
2024-11-24 23:52:51 +05:30
parent cac2fd209b
commit 36725d3d46
15 changed files with 186 additions and 23 deletions

View File

@@ -0,0 +1,29 @@
package net.gepafin.tendermanagement.scheduler;
import net.gepafin.tendermanagement.entities.ApplicationEvaluationEntity;
import net.gepafin.tendermanagement.enums.ApplicationEvaluationStatusTypeEnum;
import net.gepafin.tendermanagement.repositories.ApplicationEvaluationRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import java.time.LocalDateTime;
import java.util.List;
public class ApplicationEvaluationScheduler {
@Autowired
private ApplicationEvaluationRepository applicationEvaluationRepository;
@Scheduled(cron = "0 0 1 * * ?") // Runs daily at midnight
public void updateExpiredEvaluations() {
LocalDateTime currentDate = LocalDateTime.now();
List<ApplicationEvaluationEntity> evaluations = applicationEvaluationRepository.findAllByIsDeletedFalseAndEndDateBefore(currentDate);
for (ApplicationEvaluationEntity evaluation : evaluations) {
evaluation.setStatus(ApplicationEvaluationStatusTypeEnum.EXPIRED.getValue());
}
applicationEvaluationRepository.saveAll(evaluations);
}
}

View File

@@ -1,20 +1,26 @@
package net.gepafin.tendermanagement.scheduler;
import net.gepafin.tendermanagement.dao.ApplicationAmendmentRequestDao;
import net.gepafin.tendermanagement.dao.EmailNotificationDao;
import net.gepafin.tendermanagement.entities.ApplicationAmendmentRequestEntity;
import net.gepafin.tendermanagement.entities.ApplicationEntity;
import net.gepafin.tendermanagement.entities.ApplicationEvaluationEntity;
import net.gepafin.tendermanagement.entities.UserEntity;
import net.gepafin.tendermanagement.enums.ApplicationAmendmentRequestEnum;
import net.gepafin.tendermanagement.enums.ApplicationStatusTypeEnum;
import net.gepafin.tendermanagement.repositories.ApplicationAmendmentRequestRepository;
import net.gepafin.tendermanagement.repositories.ApplicationEvaluationRepository;
import net.gepafin.tendermanagement.repositories.ApplicationRepository;
import net.gepafin.tendermanagement.repositories.UserRepository;
import net.gepafin.tendermanagement.util.DateTimeUtil;
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.ArrayList;
import java.util.List;
import java.util.Optional;
@Component
public class NotificationScheduler {
@@ -31,6 +37,12 @@ public class NotificationScheduler {
@Autowired
EmailNotificationDao emailNotificationDao;
@Autowired
private ApplicationAmendmentRequestDao applicationAmendmentRequestDao;
@Autowired
private ApplicationEvaluationRepository applicationEvaluationRepository;
@Scheduled(cron = "0 0 1 * * ?")
void sendNotificationForRejectedApplicationToBeneficiary() {
@@ -40,17 +52,18 @@ public class NotificationScheduler {
LocalDateTime today = LocalDateTime.now();
for (ApplicationEntity application : applicationsList) {
ApplicationAmendmentRequestEntity amendmentRequest = getAmendmentRequestForApplication(application, amendmentRequestList);
if (amendmentRequest != null) {
LocalDateTime requestDate = amendmentRequest.getStartDate();
if (requestDate.plusDays(amendmentRequest.getResponseDays()).isBefore(today)) {
// Update the application status to REJECTED
List<ApplicationAmendmentRequestEntity> amendmentRequestEntities = applicationAmendmentRepository.findActiveAmendments(application.getId(), DateTimeUtil.DateServerToUTC(LocalDateTime.now()));
List<ApplicationAmendmentRequestEntity> applicationAmendmentRequestEntities = new ArrayList<>();
if (amendmentRequestEntities != null && Boolean.FALSE.equals(amendmentRequestEntities.isEmpty())) {
for (ApplicationAmendmentRequestEntity applicationAmendmentRequestEntity : amendmentRequestEntities) {
if (amendmentRequestEntities.size() == 1) {
applicationAmendmentRequestDao.calculateEndDateAndSuspensionDays(applicationAmendmentRequestEntity.getApplicationEvaluationEntity());
}
application.setStatus(ApplicationStatusTypeEnum.REJECTED.getValue());
applicationRepository.save(application);
amendmentRequest.setStatus(ApplicationAmendmentRequestEnum.CLOSE.getValue());
applicationAmendmentRepository.save(amendmentRequest);
emailNotificationDao.sendApplicationFailureNotificationEmail(amendmentRequest);
applicationAmendmentRequestEntity.setStatus(ApplicationAmendmentRequestEnum.CLOSE.getValue());
applicationAmendmentRepository.save(applicationAmendmentRequestEntity);
emailNotificationDao.sendApplicationFailureNotificationEmail(applicationAmendmentRequestEntity);
}
}
}