Selaa lähdekoodia

Changes in the way of sendig mail and system type 23

Drowsito 2 viikkoa sitten
vanhempi
commit
ae8cb9f433

+ 41 - 35
src/main/java/es/uv/saic/service/EmailService.java

@@ -1,5 +1,9 @@
 package es.uv.saic.service;
 
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
 import java.text.SimpleDateFormat;
 import java.util.LinkedList;
 import java.util.Queue;
@@ -21,9 +25,16 @@ import es.uv.saic.shared.domain.Usuari;
 public class EmailService {
 	private JavaMailSender mailSender;
 	private Queue<Email> pendingQueue  = new LinkedList<Email>();
+
 	@Value("${saic.mailer.from}")
 	private String fromEmail;
 
+	@Value("${saic.data.emailTemplates}")
+    private String emailTemplatesPath;
+
+	@Value("${saic.url.domain}")
+    private String saicUrl;
+
     public EmailService(JavaMailSender javaMailSender) {
         this.mailSender = javaMailSender;
     }
@@ -78,42 +89,37 @@ public class EmailService {
 
         mailSender.send(mailMessage);
     }
+
+	private String readTemplate(String filename) throws IOException {
+		Path filePath = Paths.get(emailTemplatesPath, filename);
+		return Files.readString(filePath);
+	}
     
     public void sendNewTaskMail(Usuari u, InstanciaTasca it) throws MessagingException{
-    	String subject = "Notificació de tasca a realitzar en SAIC";
-    	String msg = "Estimat/da usuari/a:\n" + 
-			    	"\n" + 
-			    	"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" + 
-			    	"\n" + 
-			    	"Tasca: "+it.getTasca().getTitolVal()+"\n" + 
-			    	"Procediment: "+it.getTasca().getProces().getTitolVal()+"\n" + 
-			    	"Centre/Titulació: "+it.getInstancia().getOrgan().getOrgan().getNomVal()+" / "+it.getInstancia().getOrgan().getNomVal()+"\n" + 
-			    	"Curs al qual s'aplica: "+Integer.toString(it.getInstancia().getProces().getCursAvaluat()-1) + "-" + Integer.toString(it.getInstancia().getProces().getCursAvaluat())+"\n" + 
-			    	"\n" + 
-			    	"Per a realitzar-la ha de connectar-se al SAIC i seguir els passos que allà es descriuen.\n" + 
-			    	"\n" + 
-			    	"Faça clic ací https://saic.uv.es per a accedir al Sistema d'Assegurament Intern de la Qualitat (SAIC).\n" + 
-			    	"\n" + 
-			    	"Per a consultes sobre procediments o la documentació que s'ha d'aportar, envie un correu a unitat.qualitat@uv.es\n" + 
-			    	"Per a qualsevol consulta tècnica, envie un correu a saic@uv.es\n" + 
-			    	"\n" + 
-			    	"----------" +
-			    	"\n" + 
-			    	"Estimado/a usuario/a:\n" + 
-			    	"\n" + 
-			    	"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" + 
-			    	"\n" + 
-			    	"Tarea: "+it.getTasca().getTitolCas()+"\n" + 
-			    	"Procedimiento: "+it.getTasca().getProces().getTitolCas()+"\n" + 
-			    	"Centro/Titulación: "+it.getInstancia().getOrgan().getOrgan().getNomCas()+" / "+it.getInstancia().getOrgan().getNomCas()+"\n" + 
-			    	"Curso al que se aplica: "+Integer.toString(it.getInstancia().getProces().getCursAvaluat())+"\n" + 
-			    	"\n" + 
-			    	"Para realizarla debe Vd. conectarse al SAIC y seguir los pasos allí descritos.\n" + 
-			    	"\n" + 
-			    	"Pinche aquí https://saic.uv.es para acceder al Sistema de Aseguramiento Interno de la Calidad (SAIC).\n" + 
-			    	"\n" + 
-			    	"Para consultas sobre los procedimientos o la documentación a aportar, envíe un correo a unitat.qualitat@uv.es \n" +
-    				"Para cualquier consulta técnica, envíe un correo a saic@uv.es\n";
+    	String subject = "Notificació de tasca a realitzar en SAIQ";
+		String msg = "";
+		
+		try {
+			msg = readTemplate("task_mail_template.txt");
+
+			String curso = (it.getInstancia().getProces().getCursAvaluat()-1) + "-" + it.getInstancia().getProces().getCursAvaluat();
+
+			msg = msg.replace("{tascaVal}", it.getTasca().getTitolVal() != null ? it.getTasca().getTitolVal() : "")
+                     .replace("{tascaCas}", it.getTasca().getTitolCas() != null ? it.getTasca().getTitolCas() : "")
+                     .replace("{titolVal}", it.getTasca().getProces().getTitolVal() != null ? it.getTasca().getProces().getTitolVal() : "")
+                     .replace("{titolCas}", it.getTasca().getProces().getTitolCas() != null ? it.getTasca().getProces().getTitolCas() : "")
+                     .replace("{centreVal}", it.getInstancia().getOrgan().getOrgan().getNomVal() != null ? it.getInstancia().getOrgan().getOrgan().getNomVal() : "")
+                     .replace("{centreCas}", it.getInstancia().getOrgan().getOrgan().getNomCas() != null ? it.getInstancia().getOrgan().getOrgan().getNomCas() : "")
+                     .replace("{titulacioVal}", it.getInstancia().getOrgan().getNomVal() != null ? it.getInstancia().getOrgan().getNomVal() : "")
+                     .replace("{titulacioCas}", it.getInstancia().getOrgan().getNomCas() != null ? it.getInstancia().getOrgan().getNomCas() : "")
+                     .replace("{curs}", curso)
+                     .replace("{url}", saicUrl);
+			
+		} catch (IOException e) {
+            e.printStackTrace();
+            throw new MessagingException("Error al leer la plantilla de correo de tareas", e);
+		}
+
     	this.sendMail(u.getEmail(), subject, msg);
     }
     
@@ -128,7 +134,7 @@ public class EmailService {
 			    	"Ámbito: "+c.getAmbit()+"\n" + 
 			    	"Planificado para el día "+new SimpleDateFormat("dd/MM/yyyy").format(c.getData())+"\n"+
 			    	"\n" + 
-			    	"Acceda a https://saic.uv.es y realice las acciones pertinentes. \n" + 
+			    	"Acceda" + saicUrl + " y realice las acciones pertinentes. \n" + 
 			    	"\n";
     	this.sendMail(u.getEmail(), subject, msg);
     }

+ 3 - 2
src/main/java/es/uv/saic/service/InstanciaTascaService.java

@@ -349,7 +349,8 @@ public class InstanciaTascaService {
 			JsonNode actions = root.get("accions");
 
 			List<String> selectedPaths = new ArrayList<>();
-			String outputFile = this.filePath + it.getIdInstanciaTasca().toString() + ".pdf";
+			String outputFile = it.getIdInstanciaTasca().toString() + ".pdf";
+			String outputPath = this.filePath + outputFile;
 			boolean success = false;
 
 			for (JsonNode action : actions) {
@@ -366,7 +367,7 @@ public class InstanciaTascaService {
 				}
 
 				else if (action.has("combine") && action.get("combine").asBoolean()) {
-					success = combineDocuments(selectedPaths, outputFile);
+					success = combineDocuments(selectedPaths, outputPath);
 				}
 			}
 

+ 1 - 1
src/main/java/es/uv/saic/service/ProcesService.java

@@ -39,7 +39,7 @@ public class ProcesService {
 	}
 	
 	public List<Proces> getAll(){
-		return this.procesRepository.findAll();
+		return this.procesRepository.findAllByOrderByVersioAsc();
 	} 
 	
 	public List<Integer> getSupervisableCursos(List<Integer> centres, List<Integer> titulacions){

+ 7 - 1
src/main/java/es/uv/saic/web/ProceduresController.java

@@ -554,7 +554,7 @@ public class ProceduresController {
 			itt.setDataFet(formatDate(it.getDataFet()));
 			itt.setEstatInstancia(it.getInstancia().getEstat());
 			itt.setOpcions(it.getTasca().getOpcions());
-			itt.setDataMod((it.getDataMod() != null) ? formatDate(it.getDataMod().toLocalDate()) : null);
+			itt.setDataMod((it.getDataMod() != null) ? formatDateTime(it.getDataMod()) : null);
 			
 			if(it.getTasca().getTipus().getTipus() == 11 || it.getTasca().getTipus().getTipus() == 15) {
 				Plantilla p = plc.findEvidencia(Integer.parseInt(it.getTasca().getCodiEvidencia()),
@@ -663,6 +663,12 @@ public class ProceduresController {
 		return date.format(formatter);
 	}
 
+	private String formatDateTime(LocalDateTime date) {
+		if (date == null) return "";
+		DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd-MM-yyyy HH:mm:ss");
+		return date.format(formatter); 
+	}
+
 	private String addDefaultFieldsToJson(String jsonOriginal, Boolean borrador) {
 		if (jsonOriginal == null || jsonOriginal.trim().isEmpty()) {
 			return jsonOriginal;

+ 1 - 0
src/main/resources/application-graal.properties

@@ -24,6 +24,7 @@ logging.file.name = saic-data/logs/saic.log
 # Dummy
 saic.data.filePath = saic-data/files/
 saic.data.templates.filePath = saic-data/templates/
+saic.data.emailTemplates = saic-data/mailTemplates
 saic.data.templates.logoPath = saic-data/templates/logos/
 saic.data.templates.fileNotFound = saic-data/utils/filenotfound.pdf
 

+ 1 - 0
src/main/resources/application-local.properties

@@ -29,6 +29,7 @@ saic.data.filePath=/home/dagarcos/DATA_SYNC/UV_APPS/SAIC/DATA/files/
 saic.data.tmpPath=/home/dagarcos/DATA_SYNC/UV_APPS/SAIC/DATA/saic-data/tmp/
 saic.data.docsPath=/home/dagarcos/DATA_SYNC/UV_APPS/SAIC/DATA/saic-data/documents/
 saic.data.templates.filePath=/home/dagarcos/DATA_SYNC/UV_APPS/SAIC/DATA/saic-data/templates/
+saic.data.emailTemplates = /home/dagarcos/DATA_SYNC/UV_APPS/SAIC/DATA/saic-data/mailTemplates/
 saic.data.templates.logoPath=/home/dagarcos/DATA_SYNC/UV_APPS/SAIC/DATA/saic-data/templates/logos/
 saic.data.templates.fileNotFound=/home/dagarcos/DATA_SYNC/UV_APPS/SAIC/DATA/saic-data/utils/filenotfound.pdf
 

+ 1 - 0
src/main/resources/application-pre.properties

@@ -24,6 +24,7 @@ logging.file.name = /DATA/saic-data/logs/saic-core-pre.log
 saic.data.filePath=/DATA/saic-data/files/
 saic.data.templates.filePath=/DATA/saic-data/templates/
 saic.data.templates.logoPath=/DATA/saic-data/templates/logos/
+saic.data.emailTemplates = /DATA/saic-data/mailTemplates/
 saic.data.templates.fileNotFound=/DATA/saic-data/utils/filenotfound.pdf
 
 # Scheduler

+ 1 - 0
src/main/resources/application-prod.properties

@@ -24,6 +24,7 @@ logging.file.name = /DATA/saic-data/logs/saic-core-prod.log
 saic.data.filePath=/DATA/saic-data/files/
 saic.data.templates.filePath=/DATA/saic-data/templates/
 saic.data.templates.logoPath=/DATA/saic-data/templates/logos/
+saic.data.emailTemplates = /DATA/saic-data/mailTemplates/
 saic.data.templates.fileNotFound=/DATA/saic-data/utils/filenotfound.pdf
 
 # Scheduler

+ 1 - 0
src/main/resources/application-uib-graal.properties

@@ -23,6 +23,7 @@ logging.file.name = saic-data/logs/saic.log
 # Dummy
 saic.data.filePath = saic-data/files/
 saic.data.templates.filePath = saic-data/templates/
+saic.data.emailTemplates = saic-data/mailTemplates
 saic.data.templates.logoPath = saic-data/templates/logos/
 saic.data.templates.fileNotFound = saic-data/utils/filenotfound.pdf
 

+ 4 - 3
src/main/resources/application-uib-local.properties

@@ -9,7 +9,7 @@ saic.actuator.validIp=10.81.80.0/20
 
 # Email config
 spring.mail.host=smtp.uib.es
-saic.mailer.queue.enabled = false
+saic.mailer.queue.enabled = true
 saic.mailer.reminder.enabled = false
 saic.mailer.calendar.enabled = false
 saic.mailer.maxMailsPerRound = 20
@@ -24,8 +24,9 @@ spring.datasource.password=jw4s0F2026
 logging.file.path=/home/mariomh/Documentos/SAIC/docs/logs
 logging.file.name=/home/mariomh/Documentos/SAIC/docs/logs/saic.log
 
-saic.data.filePath=/home/mariomh/Documentos/SAIC/docs/files/
-saic.data.templates.filePath = /home/mariomh/Documentos/SAIC/docs/templates/
+saic.data.filePath=C:\\SAIC\\files\\
+saic.data.templates.filePath = C:\\SAIC\\templates\\
+saic.data.emailTemplates = C:\\SAIC\\mailTemplates\\
 saic.data.templates.logoPath = /home/mariomh/Documentos/SAIC/docs/templates/logos/
 saic.data.templates.fileNotFound = /home/mariomh/Documentos/SAIC/docs/filenotfound.pdf
 

+ 2 - 1
src/main/resources/application-uib-pre.properties

@@ -1,5 +1,5 @@
 # Urls
-saic.url.domain = https://saiqpre.uib.cat:4443
+saic.url.domain = https://saiqpre.uib.cat
 saic.url.public = ${saic.url.domain}/public
 
 saic.actuator.validIp=10.81.80.0/20
@@ -23,6 +23,7 @@ logging.file.name = /DATA/saic-data/logs/saic-core-pre.log
 
 saic.data.filePath=/DATA/saic-data/files/
 saic.data.templates.filePath=/DATA/saic-data/templates/
+saic.data.emailTemplates = /DATA/saic-data/mailTemplates/
 saic.data.templates.logoPath=/DATA/saic-data/templates/logos/
 saic.data.templates.fileNotFound=/DATA/saic-data/utils/filenotfound.pdf
 

+ 1 - 0
src/main/resources/application-uib-prod.properties

@@ -20,6 +20,7 @@ spring.datasource.password=jw4s0F2026
 logging.file.path=/DATA/saic-data/logs
 logging.file.name = /DATA/saic-data/logs/saic-core-prod.log
 saic.data.filePath=/DATA/saic-data/files/
+saic.data.emailTemplates = /DATA/saic-data/mailTemplates/
 saic.data.templates.filePath=/DATA/saic-data/templates/
 saic.data.templates.logoPath=/DATA/saic-data/templates/logos/
 saic.data.templates.fileNotFound=/DATA/saic-data/utils/filenotfound.pdf