From 13c46f877d0540f22b16f80facd7e60de74490fa Mon Sep 17 00:00:00 2001
From: Leonardo Vannucci <leonardo.vannucci@grupposistematica.it>
Date: Mon, 17 Sep 2018 16:10:40 +0200
Subject: [PATCH] Avvio istanze URP

---
 dg1cloud-core/src/main/java/it/digione/dg1cloud/controller/StartURPController.java |  131 ++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 122 insertions(+), 9 deletions(-)

diff --git a/dg1cloud-core/src/main/java/it/digione/dg1cloud/controller/StartURPController.java b/dg1cloud-core/src/main/java/it/digione/dg1cloud/controller/StartURPController.java
index 24fbddd..95a7b41 100644
--- a/dg1cloud-core/src/main/java/it/digione/dg1cloud/controller/StartURPController.java
+++ b/dg1cloud-core/src/main/java/it/digione/dg1cloud/controller/StartURPController.java
@@ -1,9 +1,18 @@
 package it.digione.dg1cloud.controller;
 
+import java.io.IOException;
+import java.text.SimpleDateFormat;
+
+import javax.activation.DataHandler;
+import javax.mail.internet.MimeMessage;
 import javax.validation.Valid;
 import javax.xml.bind.JAXBElement;
 
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.mail.javamail.JavaMailSender;
+import org.springframework.mail.javamail.MimeMessageHelper;
 import org.springframework.stereotype.Controller;
 import org.springframework.validation.BindingResult;
 import org.springframework.web.bind.annotation.ControllerAdvice;
@@ -13,18 +22,28 @@
 import org.springframework.web.servlet.ModelAndView;
 
 import it.digione.dg1cloud.form.StartURPForm;
-import it.digione.dg1cloud.ws.client.SOAPConnector;
-import it.digione.dg1cloud.ws.client.isd.IsdProperties;
 import it.digione.dg1cloud.ws.client.isd.IsdConfig;
+import it.digione.dg1cloud.ws.client.isd.IsdProperties;
+import it.digione.dg1cloud.ws.client.isd.IsdSOAPConnector;
 import it.isharedoc.schemas.instance.InstanceMessageCreateRequest;
+import it.isharedoc.schemas.instance.InstanceMessageCreateRequest.Attachments;
+import it.isharedoc.schemas.instance.InstanceMessageCreateRequest.Attachments.Attachment;
+import it.isharedoc.schemas.instance.InstanceMessageCreateRequest.Contacts;
+import it.isharedoc.schemas.instance.InstanceMessageCreateRequest.Contacts.Contact;
+import it.isharedoc.schemas.instance.InstanceMessageCreateRequest.Variables;
+import it.isharedoc.schemas.instance.InstanceMessageCreateRequest.Variables.Variable;
+import it.isharedoc.schemas.instance.InstanceMessageCreateResponse;
 import it.isharedoc.schemas.instance.ObjectFactory;
 
 @ControllerAdvice
 @Controller
 public class StartURPController {
 	
+	private static final Logger logger = LoggerFactory.getLogger(DownloadController.class);
+	
 	@Autowired IsdProperties isdProperties;
 	@Autowired IsdConfig isdConfig;
+	@Autowired JavaMailSender javaMailSender;
 	
 	@ModelAttribute("startURPForm")
 	public StartURPForm startURPForm() {
@@ -40,22 +59,55 @@
 									BindingResult result) {
 		
 		ModelAndView modelAndView;
-		if (result.hasErrors()){
+		//if (result.hasErrors()){
+		if (false) {
 			modelAndView = new ModelAndView("startURP");
 			modelAndView.addObject(result);
 			modelAndView.addObject("startURPForm", form);
-			modelAndView.addObject("message", "Impossibbile inviare la richiesta");
+			modelAndView.addObject("message", "Impossibile inviare la richiesta");
 			modelAndView.addObject("alertClass", "alert-danger");
 			return modelAndView;
 		} else {
 			modelAndView = new ModelAndView("startURP");
 			
 			InstanceMessageCreateRequest imcr = createInstanceMessageCreateRequest(form);
-			SOAPConnector soapConnector = isdConfig.soapConnector(isdConfig.marshaller(), isdConfig.wsSecurityInterceptor());
-			System.out.println(soapConnector.callWebService(soapConnector.getDefaultUri(), imcr));
+			IsdSOAPConnector soapConnector = isdConfig.soapConnector(isdConfig.marshaller(), isdConfig.wsSecurityInterceptor());
 			
-			modelAndView.addObject("message", "Richiesta inviata con successo");
-			modelAndView.addObject("alertClass", "alert-success");
+			String numeroProtocollo = null;
+			String dataProtocollo = null;
+			SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
+			try {
+				InstanceMessageCreateResponse response = soapConnector.callWebService(soapConnector.getDefaultUri(), imcr);
+				numeroProtocollo = response.getIdentifier().getValue();
+				dataProtocollo = sdf.format(response.getIdentifierDate().getValue().toGregorianCalendar().getTime());
+			} catch (Exception e) {
+				logger.error("Errore invocazione servizi URP: " + e.getMessage(), e);
+				modelAndView.addObject(result);
+				modelAndView.addObject("startURPForm", form);
+				modelAndView.addObject("message", "Problemi nell'invio della richiesta: " + e.getMessage());
+				modelAndView.addObject("alertClass", "alert-danger");
+				return modelAndView;
+			}
+			
+			try {
+				MimeMessage message = javaMailSender.createMimeMessage();
+				MimeMessageHelper helper;
+				helper = new MimeMessageHelper(message, true);
+				helper.setSubject("Richiesta inviata correttamente al servizio URP");
+				helper.setFrom(isdProperties.getNotificationFrom());
+				helper.setTo(form.getMittente());
+				helper.setText("Richiesta inviata correttamente: " + numeroProtocollo + " del " + dataProtocollo, true);
+				javaMailSender.send(message);
+				
+				modelAndView.addObject("message", "Richiesta inviata con successo");
+				modelAndView.addObject("alertClass", "alert-success");
+			} catch (Exception e) {
+				modelAndView.addObject("message", "Richiesta inviata con successo, ma non รจ stato possibile inviare la conferma tramite email");
+				modelAndView.addObject("alertClass", "alert-warning");
+			}
+			
+			modelAndView.addObject("appIdentifier", numeroProtocollo);
+			modelAndView.addObject("appIdentifierDate", dataProtocollo);
 			return modelAndView;
 		}
 		
@@ -72,7 +124,68 @@
 		request.setStoryboardCode(isdProperties.getUrp().getStoryboad());
 		
 		request.setMetaViewName(factory.createInstanceMessageCreateRequestMetaViewName(isdProperties.getUrp().getMetaviewname()));
+		request.setDirection(isdProperties.getUrp().getDirection());
 		
-		return null;
+		Contacts contacts = factory.createInstanceMessageCreateRequestContacts();
+		
+		Contact contact = new Contact();
+		contact.setDescription(factory.createInstanceMessageCreateRequestContactsContactDescription(startURPForm.getMittente()));
+		contact.setEmail(factory.createInstanceMessageCreateRequestContactsContactEmail( startURPForm.getMittente()));
+		contact.setType("F");
+		contact.setReferenceType("AB");
+		contact.setSearchType("EXTID");
+		contact.setSearchMode("NOTFOUNDDEF");
+		contact.setSearchValue(startURPForm.getMittente());
+		
+		contacts.getContact().add(contact);
+		
+		for ( it.digione.dg1cloud.ws.client.isd.IsdProperties.Urp.Contact urpContact : isdProperties.getUrp().getContacts() ) {
+			contact = new Contact();
+			contact.setType(urpContact.getType());
+			contact.setReferenceType(urpContact.getReferenceType());
+			contact.setSearchType("CODE");
+			contact.setSearchValue(urpContact.getCode());
+			contacts.getContact().add(contact);
+		}
+		
+		JAXBElement<Contacts> jaxbContacts = factory.createInstanceMessageCreateRequestContacts(contacts);
+		request.setContacts(jaxbContacts);
+		
+		JAXBElement<String> jaxbSubject = factory.createInstanceMessageCreateRequestSubject(startURPForm.getOggetto());
+		request.setSubject(jaxbSubject);
+		
+		JAXBElement<String> jaxbBody = factory.createInstanceMessageCreateRequestBody(startURPForm.getCorpo());
+		request.setBody(jaxbBody);
+		
+		Variable variable = new Variable();
+		variable.setKey("transition");
+		variable.setType("string");
+		variable.setValueString(factory.createInstanceMessageCreateRequestVariablesVariableValueString(isdProperties.getUrp().getTransition()));
+		
+		Variables variables = factory.createInstanceMessageCreateRequestVariables();
+		variables.getVariable().add(variable);
+		JAXBElement<Variables> jaxbVariables = factory.createInstanceMessageCreateRequestVariables(variables);
+		
+		request.setVariables(jaxbVariables);
+		
+		request.setStartWorkflow(factory.createInstanceMessageCreateRequestStartWorkflow(true));
+		
+		Attachments attachments = new Attachments();
+		
+		Attachment attachment = new Attachment();
+		attachment.setFilename( startURPForm.getAllegato().getOriginalFilename());
+		attachment.setContentType( factory.createInstanceMessageCreateRequestAttachmentsAttachmentContentType( startURPForm.getAllegato().getContentType()));
+		attachment.setFileset("isharedocMailAttach");
+		try {
+			attachment.setData(new DataHandler(startURPForm.getAllegato().getBytes(), startURPForm.getAllegato().getContentType()));
+		} catch (IOException e) {
+			throw new RuntimeException("Errore nella lettura dell'allegato da passare al servizio URP", e);
+		}
+		attachments.getAttachment().add(attachment);
+		
+		JAXBElement<Attachments> jaxbAttachments = factory.createInstanceMessageCreateRequestAttachments(attachments);
+		request.setAttachments(jaxbAttachments);
+		
+		return request;
 	}
 }

--
Gitblit v1.6.2