64 lines
2.8 KiB
Java
64 lines
2.8 KiB
Java
package net.gepafin.tendermanagement.scheduler;
|
|
|
|
import net.gepafin.tendermanagement.dao.EmailNotificationDao;
|
|
import net.gepafin.tendermanagement.entities.ApplicationAmendmentRequestEntity;
|
|
import net.gepafin.tendermanagement.entities.ApplicationEntity;
|
|
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.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
|
|
ApplicationAmendmentRequestRepository applicationAmendmentRepository;
|
|
|
|
@Autowired
|
|
EmailNotificationDao emailNotificationDao;
|
|
|
|
// @Scheduled(cron = "0 0 1 * * ?")
|
|
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.getStartDate();
|
|
if (requestDate.plusDays(amendmentRequest.getResponseDays()).isBefore(today)) {
|
|
// Update the application status to REJECTED
|
|
application.setStatus(ApplicationStatusTypeEnum.REJECTED.getValue());
|
|
applicationRepository.save(application);
|
|
amendmentRequest.setStatus(ApplicationAmendmentRequestEnum.CLOSE.getValue());
|
|
applicationAmendmentRepository.save(amendmentRequest);
|
|
emailNotificationDao.sendApplicationFailureNotificationEmail(amendmentRequest);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
private ApplicationAmendmentRequestEntity getAmendmentRequestForApplication(ApplicationEntity application, List<ApplicationAmendmentRequestEntity> amendmentRequestList) {
|
|
|
|
return amendmentRequestList.stream().filter(request -> request.getApplicationId().equals(application.getId())).findFirst().orElse(null);
|
|
}
|
|
}
|