package com.ejie.ab79.control.expedientes;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.SessionAttributes;
import org.springframework.web.servlet.ModelAndView;

import com.ejie.ab79.clientesWS.ab61WebService.Usuario;
import com.ejie.ab79.comun.Constantes;
import com.ejie.ab79.model.expedientes.RelExpTer;
import com.ejie.ab79.service.expedientes.DatosTercerosService;

/**
 *  
 */

@Controller
@RequestMapping(value = "/solicitantes")
@SessionAttributes("usuario")
public class SolicitantesController {

	private static final Logger logger = LoggerFactory.getLogger(SolicitantesController.class);
	@Autowired
	private DatosTercerosService datosTercerosService;

	/**
	 * Method 'initTerceros'
	 * 
	 * @param model
	 *            Model
	 * @param request
	 *            request
	 * 
	 * @return ModelAndView
	 */
	@RequestMapping(value = "/add/{tipo}/{idExpediente}", method = RequestMethod.GET)
	public ModelAndView initTerceros(@PathVariable String tipo, @PathVariable String idExpediente, Model model) {
		SolicitantesController.logger.info("[GET - addSolicitante] : ver pagina anyadir solicitantes");
		String view = "";
		model.addAttribute("idExpediente", idExpediente);
		Long idTipoTercero = null;
		if ("REPRESENTANTELEGAL".equalsIgnoreCase(tipo)) {
			idTipoTercero = Constantes.TiposTercero.REPRESENTANTE_LEGAL;
			view = "addRepresentanteLegal";
		} else if ("PERSONASCONTACTO".equalsIgnoreCase(tipo)) {
			idTipoTercero = Constantes.TiposTercero.PERSONA_CONTACTO;
			view = "addPersonaContacto";
		}
		model.addAttribute("idTipoTercero", idTipoTercero);
		return new ModelAndView(view);
	}

	/**
	 * Operacion CRUD Create. Creacion de un nuevo registro a partir del bean
	 * indicado.
	 *
	 * @param participantes
	 *            Participantes Bean que contiene la informacion con la que se
	 *            va a crear el nuevo registro.
	 * @return Participantes Bean resultante del proceso de creacion.
	 */
	@RequestMapping(method = RequestMethod.POST)
	public @ResponseBody void add(@RequestBody RelExpTer relExpTer, Usuario usuario) {

		relExpTer.setUsuarioRegistro(usuario.getUsuario());

		SolicitantesController.logger
				.info("[POST] : tercero antes de add  " + relExpTer.getDatosTerceros().getDocumento());
		this.datosTercerosService.addTerceroConRelacion(relExpTer);

		SolicitantesController.logger.info("[POST] : Participantes insertado correctamente");

	}
}
