package com.ejie.ab61.control.simulacionEventos;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.servlet.ModelAndView;

import com.ejie.ab61.exceptions.Ab61Exception;
import com.ejie.ab61.model.inicio.InitForm;
import com.ejie.ab61.service.jms.TratamientoJMSService;

/**
 * SimulacionController  
 * 
 *  
 */

@Controller
@RequestMapping(value = "/simulacionEventos")

public class SimulacionEventos {

	private static final Logger logger = LoggerFactory.getLogger(SimulacionEventos.class);

	@Autowired()
	private TratamientoJMSService tratamientoJMSService;

	/**
	 * Method 'initSimulacion' metodo de simulacion llegada de mensaje de evento
	 * 
	 * @param model
	 *            Model
	 * @param request
	 *            request
	 * 
	 * @return ModelAndView
	 */
	@RequestMapping(method = RequestMethod.GET)
	public ModelAndView initSimulacion(@ModelAttribute(value = "initForm") InitForm initForm) {

		return new ModelAndView("simularEventos");
	}

	/**
	 * Method 'initSimulacion' metodo de simulacion llegada de mensaje de evento
	 * 
	 * @param model
	 *            Model
	 * @param request
	 *            request
	 * 
	 * @return ModelAndView
	 */
	@RequestMapping(value = "/enviarMensaje", method = RequestMethod.POST)
	public ModelAndView enviarMensaje(@RequestParam("mensaje") String mensaje) throws Ab61Exception {

		tratamientoJMSService.tratarMensaje(mensaje);

		return new ModelAndView("simulacionEventos");
	}

	/**
	 * Method 'initSimulacion' metodo de simulacion llegada de mensaje de evento
	 * 
	 * @param model
	 *            Model
	 * @param request
	 *            request
	 * 
	 * @return ModelAndView
	 * @throws IllegalAccessException
	 * @throws InstantiationException
	 * @throws Ab61Exception
	 */
	@RequestMapping(value = "/inicioOficio", method = RequestMethod.POST)
	public ModelAndView inicioOficio() throws InstantiationException, IllegalAccessException {

		// InicioOficioWS inicioOficioWS = InicioOficioWS.class.newInstance();
		// AExtensionPoint ep = AExtensionPoint.class.newInstance();
		// inicioOficioWS.setTipoInicio(TipoInicioOficio.INICIATIVA_ADMINISTRATIVA);
		// inicioOficioWS.setTituloExpediente("PRUEBA-SUSANA-008/2019");
		// // inicioOficioWS.setIdProcedimiento("0012807");
		// EmisorInicioOficio emisorInicioOficio =
		// EmisorInicioOficio.class.newInstance();
		// emisorInicioOficio.setIdEmsisor("AB61U001");
		// emisorInicioOficio.setNombreEmisor("AB61U001,AB61U001");
		// emisorInicioOficio.setTipoDocumentoIdentidad(TipoDocumentoIdentidad.CIF);
		// inicioOficioWS.setEmisorInicioficio(emisorInicioOficio);
		// Participaciones participaciones =
		// Participaciones.class.newInstance();
		// Participacion participacion = Participacion.class.newInstance();
		// participacion.setTipoParticipacion(TipoParticipacion.AFECTADO);
		// participaciones.getParticipacion().add(participacion);
		// Interesados interesados = Interesados.class.newInstance();
		// Interesado interesado = Interesado.class.newInstance();
		// interesado.setInteresadoEfectosLey(true);
		// interesado.setLenguajeComunicacionAdm("es");
		// Persona personas = Persona.class.newInstance();
		// personas.setIdentificativo("44975828H");
		// personas.setNombrePersona("Susana");
		// personas.setPrimerApellido("Gomez");
		// personas.setTipoDocumento(TipoDocumentoIdentidad.NIF);
		// interesado.setPersona(personas);
		// interesados.getInteresado().add(interesado);
		// participacion.setListaInteresados(interesados);
		// inicioOficioWS.setListaParticipaciones(participaciones);
		//
		// try {
		// this.ab61WebServicesAdaptadorService.inicioOficio(inicioOficioWS,
		// ep);
		// } catch (Exception e) {
		// e.printStackTrace();
		// }
		return new ModelAndView("simulacionEventos");
	}

}
