EmailService.java 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. package es.uv.saic.service;
  2. import java.text.SimpleDateFormat;
  3. import java.util.LinkedList;
  4. import java.util.Queue;
  5. import jakarta.mail.MessagingException;
  6. import org.springframework.mail.MailSendException;
  7. import org.springframework.mail.SimpleMailMessage;
  8. import org.springframework.mail.javamail.JavaMailSender;
  9. import org.springframework.stereotype.Service;
  10. import es.uv.saic.domain.Calendari;
  11. import es.uv.saic.domain.Email;
  12. import es.uv.saic.domain.InstanciaTasca;
  13. import es.uv.saic.domain.Usuari;
  14. @Service
  15. public class EmailService {
  16. private JavaMailSender mailSender;
  17. private Queue<Email> pendingQueue = new LinkedList<Email>();
  18. public EmailService(JavaMailSender javaMailSender) {
  19. this.mailSender = javaMailSender;
  20. }
  21. public boolean sendActiveTaskNext() {
  22. if(!this.pendingQueue.isEmpty()) {
  23. Email e = this.getNextEmail();
  24. try {
  25. if(e.getInstanciaTasca() != null) {
  26. this.sendNewTaskMail(e.getUsusari(), e.getInstanciaTasca());
  27. }
  28. else {
  29. this.sendMail(e.getUsusari().getEmail(), e.getSubject(), e.getBody());
  30. }
  31. }
  32. catch (MessagingException err) {
  33. err.printStackTrace();
  34. }
  35. catch (MailSendException err) {
  36. err.printStackTrace();
  37. }
  38. return true;
  39. }
  40. else {
  41. return false;
  42. }
  43. }
  44. public void addEmail(Email email) {
  45. pendingQueue.add(email);
  46. }
  47. private Email getNextEmail() {
  48. return this.pendingQueue.poll();
  49. }
  50. public Queue<Email> getPendingQueue() {
  51. return this.pendingQueue;
  52. }
  53. public boolean pendingQueueIsEmpty() {
  54. return this.pendingQueue.isEmpty();
  55. }
  56. public void sendMail(String to, String subject, String msg) throws MessagingException{
  57. SimpleMailMessage mailMessage = new SimpleMailMessage();
  58. mailMessage.setTo(to);
  59. mailMessage.setSubject(subject);
  60. mailMessage.setText(msg);
  61. mailMessage.setFrom("saic@uv.es");
  62. mailSender.send(mailMessage);
  63. }
  64. public void sendNewTaskMail(Usuari u, InstanciaTasca it) throws MessagingException{
  65. String subject = "Notificació de tasca a realitzar en SAIC";
  66. String msg = "Estimat/da usuari/a:\n" +
  67. "\n" +
  68. "El Sistema d'Assegurament Intern de la Qualitat (SAIC) de la Universitat de València li informa que té vosté una tasca per realitzar\n" +
  69. "\n" +
  70. "Tasca: "+it.getTasca().getTitolVal()+"\n" +
  71. "Procediment: "+it.getTasca().getProces().getTitolVal()+"\n" +
  72. "Centre/Titulació: "+it.getInstancia().getOrgan().getOrgan().getNomVal()+" / "+it.getInstancia().getOrgan().getNomVal()+"\n" +
  73. "Curs al qual s'aplica: "+Integer.toString(it.getInstancia().getProces().getCursAvaluat()-1) + "-" + Integer.toString(it.getInstancia().getProces().getCursAvaluat())+"\n" +
  74. "\n" +
  75. "Per a realitzar-la ha de connectar-se al SAIC i seguir els passos que allà es descriuen.\n" +
  76. "\n" +
  77. "Faça clic ací https://saic.uv.es per a accedir al Sistema d'Assegurament Intern de la Qualitat (SAIC).\n" +
  78. "\n" +
  79. "Per a consultes sobre procediments o la documentació que s'ha d'aportar, envie un correu a unitat.qualitat@uv.es\n" +
  80. "Per a qualsevol consulta tècnica, envie un correu a saic@uv.es\n" +
  81. "\n" +
  82. "----------" +
  83. "\n" +
  84. "Estimado/a usuario/a:\n" +
  85. "\n" +
  86. "El Sistema de Aseguramiento Interno de la Calidad (SAIC) de la Universitat de València le informa que tiene Vd. una tarea por realizar:\n" +
  87. "\n" +
  88. "Tarea: "+it.getTasca().getTitolCas()+"\n" +
  89. "Procedimiento: "+it.getTasca().getProces().getTitolCas()+"\n" +
  90. "Centro/Titulación: "+it.getInstancia().getOrgan().getOrgan().getNomCas()+" / "+it.getInstancia().getOrgan().getNomCas()+"\n" +
  91. "Curso al que se aplica: "+Integer.toString(it.getInstancia().getProces().getCursAvaluat())+"\n" +
  92. "\n" +
  93. "Para realizarla debe Vd. conectarse al SAIC y seguir los pasos allí descritos.\n" +
  94. "\n" +
  95. "Pinche aquí https://saic.uv.es para acceder al Sistema de Aseguramiento Interno de la Calidad (SAIC).\n" +
  96. "\n" +
  97. "Para consultas sobre los procedimientos o la documentación a aportar, envíe un correo a unitat.qualitat@uv.es \n" +
  98. "Para cualquier consulta técnica, envíe un correo a saic@uv.es\n";
  99. this.sendMail(u.getEmail(), subject, msg);
  100. }
  101. public void sendCalendarMail(Usuari u, Calendari c) throws MessagingException{
  102. String subject = "[SYS] Notificación de evento planificado en SAIC";
  103. String msg = "Estimado/a administrador:\n" +
  104. "\n" +
  105. "El siguiente evento está planificado para hoy.\n" +
  106. "\n" +
  107. "Nombre: "+c.getTitolCas()+"\n" +
  108. "ID Proceso: "+c.getIdProces().toString()+"\n" +
  109. "Ámbito: "+c.getAmbit()+"\n" +
  110. "Planificado para el día "+new SimpleDateFormat("dd/MM/yyyy").format(c.getData())+"\n"+
  111. "\n" +
  112. "Acceda a https://saic.uv.es y realice las acciones pertinentes. \n" +
  113. "\n";
  114. this.sendMail(u.getEmail(), subject, msg);
  115. }
  116. }