package com.ejie.ab79.control.nora;

import java.util.List;

import javax.servlet.http.HttpServletRequest;

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.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;

import com.ejie.ab79.model.nora.T17Localidad;
import com.ejie.ab79.model.nora.T17Municipio;
import com.ejie.ab79.model.nora.T17Pais;
import com.ejie.ab79.model.nora.T17Provincia;
import com.ejie.ab79.service.nora.T17LocalidadService;
import com.ejie.ab79.service.nora.T17MunicipioService;
import com.ejie.ab79.service.nora.T17PaisService;
import com.ejie.ab79.service.nora.T17ProvinciaService;


@Controller()
@RequestMapping(value = "/nora")
public class NoraController {

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

	@Autowired()
	private T17PaisService paisService;

	@Autowired()
	private T17ProvinciaService provinciaService;

	@Autowired()
	private T17MunicipioService municipioService;

	@Autowired()
	private T17LocalidadService localidadService;

	/********************************************************************************
	 * Paises
	 *******************************************************************************/
	/**
	 * Method 'getPaises'.
	 * 
	 * @return 'lista de paises' para el COMBO
	 */
	@RequestMapping(value = "/paises", method = RequestMethod.GET)
	public @ResponseBody() List<T17Pais> getPaises() {
		NoraController.logger.debug("Cargar paises");
		T17Pais pais = new T17Pais();
		return this.paisService.findAll(pais, null);

	}
	

	/********************************************************************************
	 * Provincias
	 *******************************************************************************/

	@RequestMapping(value = "/provincias", method = RequestMethod.GET)
	public @ResponseBody() List<T17Provincia> getProvincias() {

		NoraController.logger.debug("Cargar provincias");
		return this.provinciaService.findAll(null, null);
	}

	@RequestMapping(value = "/provinciasVascas", method = RequestMethod.GET)
	public @ResponseBody() List<T17Provincia> getProvinciasVascas() {

		NoraController.logger.debug("Cargar provincias");
		return this.provinciaService.findProvinciasVascas();
	}


	/********************************************************************************
	 * Municipios
	 *******************************************************************************/
	@RequestMapping(value = "/municipios", method = RequestMethod.GET)
	public @ResponseBody() List<T17Municipio> getMunicipios(HttpServletRequest request) {

		String provinciaId = "";
		if (!"".equalsIgnoreCase((String) request.getParameter("idProvincia"))
				&& null != (String) request.getParameter("idProvincia")) {
			provinciaId = request.getParameter("idProvincia");
		}
		if (!"".equalsIgnoreCase((String) request.getParameter("idProvinciaSolicitante"))
				&& null != (String) request.getParameter("idProvinciaSolicitante")) {
			provinciaId = request.getParameter("idProvinciaSolicitante");
		}
		if (!"".equalsIgnoreCase((String) request.getParameter("idProvinciaUbicacion"))
				&& null != (String) request.getParameter("idProvinciaUbicacion")) {
			provinciaId = request.getParameter("idProvinciaUbicacion");
		}
		if (!"".equalsIgnoreCase((String) request.getParameter("idProvinciaDireccionPostal"))
				&& null != (String) request.getParameter("idProvinciaDireccionPostal")) {
			provinciaId = request.getParameter("idProvinciaDireccionPostal");
		}
		if (!"".equalsIgnoreCase((String) request.getParameter("datosDirecciones.idProvincia"))
				&& null != (String) request.getParameter("datosDirecciones.idProvincia")) {
			provinciaId = request.getParameter("datosDirecciones.idProvincia");
		}
		if (!"".equalsIgnoreCase((String) request.getParameter("datosDireccion.idProvincia"))
				&& null != (String) request.getParameter("datosDireccion.idProvincia")) {
			provinciaId = request.getParameter("datosDireccion.idProvincia");
		}

		T17Municipio t17Municipio = new T17Municipio();
		t17Municipio.setProvinciaId(provinciaId);

		return this.municipioService.findAll(t17Municipio, null);
	}

	/********************************************************************************
	 * Localidades
	 *******************************************************************************/
	@RequestMapping(value = "/localidades", method = RequestMethod.GET)
	public @ResponseBody() List<T17Localidad> getLocalidades(HttpServletRequest request) {

		String provinciaId = "";
		String municipioId = "";
		if (!"".equalsIgnoreCase((String) request.getParameter("idProvincia"))
				&& null != (String) request.getParameter("idProvincia")) {
			provinciaId = request.getParameter("idProvincia");
		}
		if (!"".equalsIgnoreCase((String) request.getParameter("idProvinciaSolicitante"))
				&& null != (String) request.getParameter("idProvinciaSolicitante")) {
			provinciaId = request.getParameter("idProvinciaSolicitante");
		}
		if (!"".equalsIgnoreCase((String) request.getParameter("idProvinciaUbicacion"))
				&& null != (String) request.getParameter("idProvinciaUbicacion")) {
			provinciaId = request.getParameter("idProvinciaUbicacion");
		}
		if (!"".equalsIgnoreCase((String) request.getParameter("idProvinciaDireccionPostal"))
				&& null != (String) request.getParameter("idProvinciaDireccionPostal")) {
			provinciaId = request.getParameter("idProvinciaDireccionPostal");
		}
		if (!"".equalsIgnoreCase((String) request.getParameter("idProvinciaDireccionPostal"))
				&& null != (String) request.getParameter("idProvinciaDireccionPostal")) {
			provinciaId = request.getParameter("idProvinciaDireccionPostal");
		}
		if (!"".equalsIgnoreCase((String) request.getParameter("datosDirecciones.idProvincia"))
				&& null != (String) request.getParameter("datosDirecciones.idProvincia")) {
			provinciaId = request.getParameter("datosDirecciones.idProvincia");
		}
		if (!"".equalsIgnoreCase((String) request.getParameter("datosDireccion.idProvincia"))
				&& null != (String) request.getParameter("datosDireccion.idProvincia")) {
			provinciaId = request.getParameter("datosDireccion.idProvincia");
		}

		if (!"".equalsIgnoreCase((String) request.getParameter("idMunicipio"))
				&& null != (String) request.getParameter("idMunicipio")) {
			municipioId = request.getParameter("idMunicipio");
		}
		if (!"".equalsIgnoreCase((String) request.getParameter("idMunicipioSolicitante"))
				&& null != (String) request.getParameter("idMunicipioSolicitante")) {
			municipioId = request.getParameter("idMunicipioSolicitante");
		}
		if (!"".equalsIgnoreCase((String) request.getParameter("idMunicipioUbicacion"))
				&& null != (String) request.getParameter("idMunicipioUbicacion")) {
			municipioId = request.getParameter("idMunicipioUbicacion");
		}
		if (!"".equalsIgnoreCase((String) request.getParameter("idMunicipioDireccionPostal"))
				&& null != (String) request.getParameter("idMunicipioDireccionPostal")) {
			municipioId = request.getParameter("idMunicipioDireccionPostal");
		}
		if (!"".equalsIgnoreCase((String) request.getParameter("idMunicipioDireccionPostal"))
				&& null != (String) request.getParameter("idMunicipioDireccionPostal")) {
			municipioId = request.getParameter("idMunicipioDireccionPostal");
		}
		if (!"".equalsIgnoreCase((String) request.getParameter("datosDirecciones.idMunicipio"))
				&& null != (String) request.getParameter("datosDirecciones.idMunicipio")) {
			municipioId = request.getParameter("datosDirecciones.idMunicipio");
		}
		if (!"".equalsIgnoreCase((String) request.getParameter("datosDireccion.idMunicipio"))
				&& null != (String) request.getParameter("datosDireccion.idMunicipio")) {
			municipioId = request.getParameter("datosDireccion.idMunicipio");
		}

		T17Localidad t17Localidad = new T17Localidad();
		t17Localidad.setProvinciaId(provinciaId);
		t17Localidad.setMunicipioId(municipioId);

		return this.localidadService.findAll(t17Localidad, null);
	}
}
