ScheduledTasks.java 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. package es.uv.saic.domain;
  2. import java.io.FileNotFoundException;
  3. import java.io.IOException;
  4. import java.sql.SQLException;
  5. import java.util.Date;
  6. import java.util.List;
  7. import jakarta.mail.MessagingException;
  8. import org.springframework.beans.factory.annotation.Autowired;
  9. import org.springframework.beans.factory.annotation.Value;
  10. import org.springframework.scheduling.annotation.Scheduled;
  11. import org.springframework.stereotype.Component;
  12. import es.uv.saic.service.CalendariService;
  13. import es.uv.saic.service.EmailService;
  14. import es.uv.saic.service.InstanciaService;
  15. import es.uv.saic.service.InstanciaTascaService;
  16. import es.uv.saic.service.ParserService;
  17. import es.uv.saic.service.SysStatusService;
  18. import es.uv.saic.service.UsuariService;
  19. @Component
  20. @SuppressWarnings("unused")
  21. public class ScheduledTasks {
  22. @Autowired
  23. private EmailService es;
  24. @Autowired
  25. private InstanciaService it;
  26. @Autowired
  27. private InstanciaTascaService its;
  28. @Autowired
  29. private UsuariService us;
  30. @Autowired
  31. private ParserService ps;
  32. @Autowired
  33. private CalendariService cs;
  34. @Autowired
  35. private SysStatusService sss;
  36. @Value("${saic.mailer.queue.enabled}")
  37. private String queueEnabled;
  38. @Value("${saic.mailer.reminder.enabled}")
  39. private String reminderEnabled;
  40. @Value("${saic.mailer.calendar.enabled}")
  41. private String calendarEnabled;
  42. @Value("${saic.mailer.maxMailsPerRound}")
  43. private Integer maxMailsPerRound;
  44. @Value("${saic.parser.surveys.enabled}")
  45. private String parserEnabled;
  46. @Value("${saic.scheduler.expired.enabled}")
  47. private String expiredEnabled;
  48. @Scheduled(fixedDelay = 300000)
  49. public void sendInstanceMails() {
  50. if(Boolean.parseBoolean(this.queueEnabled)) {
  51. Integer counter = 0;
  52. while(!es.pendingQueueIsEmpty() && counter < maxMailsPerRound) {
  53. es.sendActiveTaskNext();
  54. counter+=1;
  55. }
  56. }
  57. }
  58. @Scheduled(cron="0 0 1 * * *")
  59. public void sendReminderMails() {
  60. if(Boolean.parseBoolean(this.reminderEnabled)) {
  61. sss.log("Start sending mail reminders");
  62. for(InstanciaTasca instanciaTasca : its.getPastTasks()) {
  63. for(Usuari u : us.getInstanceAsignedUsers(instanciaTasca.getInstancia().getIdInstancia())) {
  64. Email email = new Email();
  65. email.setUsusari(u);
  66. email.setInstanciaTasca(instanciaTasca);
  67. es.addEmail(email);
  68. }
  69. }
  70. }
  71. }
  72. @Scheduled(cron="0 0 1 * * *")
  73. public void sendCalendarMails() throws MessagingException {
  74. if(Boolean.parseBoolean(this.calendarEnabled)) {
  75. Integer counter = 0;
  76. Usuari u = this.us.findByUsername("system");
  77. List<Calendari> events = this.cs.getNextEvents();
  78. for(Calendari e : events) {
  79. this.es.sendCalendarMail(u, e);
  80. counter+=1;
  81. }
  82. }
  83. }
  84. @Scheduled(cron="0 0 1 * * *")
  85. public void closeExpiredTasks() {
  86. if(Boolean.parseBoolean(this.expiredEnabled)) {
  87. // to do in future
  88. }
  89. }
  90. }