/**
 * 
 */
package com.ejie.ab39a.control;

import java.util.List;

import javax.servlet.http.HttpServletRequest;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

import com.ejie.ab39a.constantes.Constantes;
import com.ejie.ab39a.model.Entidades;
import com.ejie.ab39a.seguridad.UsuarioConectado;
import com.ejie.ab39a.seguridad.UtilSeguridad;
import com.ejie.ab39a.util.UtilidadesWar;

/**
 *  
 *
 */
@Controller
@RequestMapping(value = "/inicio")
public class InicioController {

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

	/**
	 * entrar aplicacion
	 * 
	 * @param request
	 *            HttpServletRequest request
	 * @return String destino
	 */
	@RequestMapping(value = "", method = RequestMethod.GET)
	public String entrarAplicacion(HttpServletRequest request) {

		String redireccion = "welcome";
		InicioController.logger.debug("InicioController - Entrando:");

		UsuarioConectado usuarioConectado = UtilSeguridad.getUsuarioConectado();
		String idiomaPortal = UtilidadesWar.recuperarPartePortalIdiona(request);
		if (idiomaPortal == null || idiomaPortal.trim().length() == 0) {
			idiomaPortal = Constantes.EU;
		}
		if (usuarioConectado.isTecnicoEntidad()) {
			if (usuarioConectado.isRellenarDatosIncompletos()) {
				List<Entidades> listaEntidadesUsuario = usuarioConectado.getTecnicosEntidad().getEntidadeses();
				if (!listaEntidadesUsuario.isEmpty() && listaEntidadesUsuario.size() == 1) {
					redireccion = "redirect:/entidades/maintDetalle/"
							+ usuarioConectado.getTecnicosEntidad().getCodtecnico();
					redireccion = redireccion.concat("?locale=").concat(idiomaPortal);
				} else if (!listaEntidadesUsuario.isEmpty() && listaEntidadesUsuario.size() > 1) {
					redireccion = "redirect:/entidades/maint";
					redireccion = redireccion.concat("?locale=").concat(idiomaPortal);
				} else {
					redireccion = "redirect:/inicio/entradaIdioma/welcome?locale=".concat(idiomaPortal);
				}

			} else if (usuarioConectado.getEntidadPrincipal() == null) {
				// Si el usuario conectado aún no tiene entidad principal, le
				// redirigimos a la pantalla para establecer la entidad
				// principal con la que desee trabajar
				redireccion = "redirect:/inicio/entradaIdioma/entidadPrincipal?locale=".concat(idiomaPortal);
			} else {
				redireccion = "redirect:/inicio/entradaIdioma/welcome?locale=".concat(idiomaPortal);
			}
		} else {
			redireccion = "redirect:/inicio/entradaIdioma/welcome?locale=".concat(idiomaPortal);
		}

		InicioController.logger
				.debug("InicioController - Saliendo:".concat((idiomaPortal == null) ? "" : idiomaPortal));

		return redireccion;

	}

	/**
	 * cambio idioma tiles
	 * 
	 * @param destino
	 *            String destino
	 * 
	 * @return String redireccion
	 */
	@RequestMapping(value = "/entradaIdioma/{destino}", method = RequestMethod.GET)
	public String cambioIdiomaTiles(@PathVariable String destino) {

		InicioController.logger.debug("cambioIdiomaTiles - Entrando:");

		String redireccion = destino;
		InicioController.logger.debug("cambioIdiomaTiles - Saliendo:".concat((destino == null) ? "" : destino));

		return redireccion;

	}

	/**
	 * entrar aplicacion welcome
	 * 
	 * @return String redireccion
	 */
	@RequestMapping(value = "/entrada", method = RequestMethod.GET)
	public String entrarAplicacionWelcome() {

		InicioController.logger.debug("InicioController - entrarAplicacionWelcome Entrando:");
		String redireccion = "welcome";
		InicioController.logger.debug("InicioController - entrarAplicacionWelcome Saliendo:");

		return redireccion;
	}
}