Browse Source

Email Controller and email service

Drowsito 1 month ago
parent
commit
5302285127

+ 40 - 0
src/main/java/es/uv/saic/dto/EmailDTO.java

@@ -0,0 +1,40 @@
+package es.uv.saic.dto;
+
+import es.uv.saic.domain.Usuari;
+
+public class EmailDTO {
+    private String to;
+    private String subject;
+    private String message;
+
+    public EmailDTO(String to, String subject, String message) {
+        this.to = to;
+        this.subject = subject;
+        this.message = message;
+    }
+
+    public String getTo() {
+        return to;
+    }
+
+    public void setTo(String to) {
+        this.to = to;
+    }
+
+    public String getSubject() {
+        return subject;
+    }
+
+    public void setSubject(String subject) {
+        this.subject = subject;
+    }
+
+    public String getMessage() {
+        return message;
+    }
+
+    public void setMessage(String message) {
+        this.message = message;
+    }
+
+}

+ 40 - 24
src/main/java/es/uv/saic/service/DataService.java

@@ -42,6 +42,7 @@ import com.fasterxml.jackson.databind.ObjectMapper;
 import es.uv.saic.domain.IndicadorEnquestaTmp;
 import es.uv.saic.domain.Organ;
 import es.uv.saic.domain.Usuari;
+import es.uv.saic.dto.EmailDTO;
 import es.uv.saic.dto.IndicadorEnquestaTmpDup;
 import es.uv.saic.domain.Datasource;
 
@@ -492,33 +493,27 @@ public class DataService {
 	}
 
 	private void sendNotificacion(Usuari usuari, String enquesta, String ambit, String estudi) {
-		try {
-			this.ems.sendMail("saic@uv.es", "[SYS] Datos pendientes de consolidar", "Estimado/a administrador: \n"
-					+ "\n"
-					+ "El usuario "+usuari.getUsuari()+" ha importado nuevos datos referentes a: \n"
-					+ "Origen: "+enquesta+"\n"
-					+ "Ámbito: "+ambit+"\n"
-					+ "Tipo titulación: "+estudi+"\n"
-					+ "\n"
-					+ "Acceda a https://saic.uv.es y realice las acciones pertinentes para consolidar los datos. ");
-		} catch (MessagingException e) {
-			e.printStackTrace();
-		}
+		sendMail("saic@uv.es", "[SYS] Datos pendientes de consolidar", "Estimado/a administrador: \n"
+				+ "\n"
+				+ "El usuario "+usuari.getUsuari()+" ha importado nuevos datos referentes a: \n"
+				+ "Origen: "+enquesta+"\n"
+				+ "Ámbito: "+ambit+"\n"
+				+ "Tipo titulación: "+estudi+"\n"
+				+ "\n"
+				+ "Acceda a https://saic.uv.es y realice las acciones pertinentes para consolidar los datos. ");
+
 	}
 
 	private void sendConfirmation(String to, String enquesta, String ambit, String estudi) {
-		try {
-			this.ems.sendMail(to, "[SYS] Nuevos datos importados", "Estimado/a usuario: \n"
-					+ "\n"
-					+ "Se han importado correctamente nuevos datos referentes a: \n"
-					+ "Origen: "+enquesta+"\n"
-					+ "Ámbito: "+ambit+"\n"
-					+ "Tipo titulación: "+estudi+"\n"
-					+ "\n"
-					+ "Los datos se quedarán en estado pendiente de consolidar hasta que un administrador inicie el proceso de consolidación.");
-		} catch (MessagingException e) {
-			e.printStackTrace();
-		}
+		sendMail(to, "[SYS] Nuevos datos importados", "Estimado/a usuario: \n"
+				+ "\n"
+				+ "Se han importado correctamente nuevos datos referentes a: \n"
+				+ "Origen: "+enquesta+"\n"
+				+ "Ámbito: "+ambit+"\n"
+				+ "Tipo titulación: "+estudi+"\n"
+				+ "\n"
+				+ "Los datos se quedarán en estado pendiente de consolidar hasta que un administrador inicie el proceso de consolidación.");
+
 	}
 	
 	/* Exepciones en el código de titulación que hay que traducir a código SAIC */
@@ -761,4 +756,25 @@ public class DataService {
 
 		return 0;
 	}
+
+		private void sendMail(String string, String string2, String string3) {
+		EmailDTO email = new EmailDTO(string, string2, string3);
+
+		URI uriObj = URI.create(uri + "/sendEmail");
+		ObjectMapper mapper = new ObjectMapper().configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
+
+		try {
+			String requestBody = mapper.writeValueAsString(email);
+			HttpClient httpClient = HttpClient.newHttpClient();
+			HttpRequest request = HttpRequest.newBuilder()
+					.uri(uriObj)
+					.header("Content-Type", "application/json")
+					.POST(HttpRequest.BodyPublishers.ofString(requestBody))
+					.build();
+
+			httpClient.send(request, HttpResponse.BodyHandlers.ofString());
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+	}
 }

+ 32 - 0
src/main/java/es/uv/saic/web/EmailController.java

@@ -0,0 +1,32 @@
+package es.uv.saic.web;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.RestController;
+
+import es.uv.saic.dto.EmailDTO;
+import es.uv.saic.service.EmailService;
+import jakarta.mail.MessagingException;
+
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+
+
+@RestController
+public class EmailController {
+    @Autowired
+    EmailService es;
+
+    @PostMapping("/sendEmail")
+    public ResponseEntity<?> sendEmail(@RequestBody EmailDTO email) {
+        try {
+            es.sendMail(email.getTo(), email.getSubject(), email.getMessage());
+            
+            return ResponseEntity.ok("ok");
+        } catch (MessagingException e) {
+            return ResponseEntity.badRequest().body(e.getMessage());
+        }
+
+    }
+    
+}

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

@@ -240,7 +240,7 @@ public class IndicadorController {
             iets.save(ie);
             return ResponseEntity.ok("Ok");
         } catch (Exception e) {
-            return ResponseEntity.badRequest().body("error");
+            return ResponseEntity.badRequest().body(e.getMessage());
         }
     }