package com.ejie.m62fb.control;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Locale;

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

import com.ejie.m62fb.model.M62fbMunicipios;
import com.ejie.m62fb.service.M62fbMunicipiosService;
import com.ejie.x38.control.exception.ResourceNotFoundException;
import com.ejie.x38.dto.JQGridJSONModel;
import com.ejie.x38.dto.Pagination;

/**
 * M62fbMunicipiosController generated by UDA, 22-oct-2012 12:14:20.
 * 
XXXX
 */

@Controller
@RequestMapping(value = "/m62fbmunicipios")
public class M62fbMunicipiosController {

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

	@Autowired
	private M62fbMunicipiosService m62fbMunicipiosService;

	/**
	 * Method 'getMunicipios'.
	 * 
	 * @param provinciaId
	 *            String
	 * @param request
	 *            HttpServletRequest
	 * @return String
	 */
	@RequestMapping(value = "municipios/combo", method = RequestMethod.GET)
	public @ResponseBody
	List<HashMap<String, String>> getMunicipiosCombo(
			@RequestParam(value = "codProvinciaFiltro", required = false) String provinciaId,
			HttpServletRequest request, Locale locale) {
		try {
			/*
			 * if (provinciaId == null || provinciaId.equalsIgnoreCase("")) {
			 * return new ArrayList<M62fbMunicipios>(); }
			 */
			M62fbMunicipios filterMunicipio = new M62fbMunicipios(provinciaId,
					null, null);
			List<M62fbMunicipios> municipios = this.m62fbMunicipiosService
					.findAll(filterMunicipio, null);
			if (municipios == null) {
				throw new Exception("No data Found.");
			}
			ArrayList<HashMap<String, String>> returnData = new ArrayList<HashMap<String, String>>();
			HashMap<String, String> opc = new HashMap<String, String>();
			Iterator modelosIter = municipios.iterator();
			while (modelosIter.hasNext()) {
				M62fbMunicipios modelObject = (M62fbMunicipios) modelosIter
						.next();
				opc.put("value", modelObject.getCodMunicipio());
				opc.put("label",
						modelObject.getDesMunicCas().get(locale.getLanguage()));
				returnData.add(opc);
				opc = new HashMap<String, String>();
			}
			return returnData;
		} catch (Exception e) {
			throw new ResourceNotFoundException("No data Found.");
		}
	}

	/**
	 * Method 'getById'.
	 * 
	 * @param codProvincia
	 *            String
	 * @param codMunicipio
	 *            String
	 * @param desMunicCas
	 *            String
	 */
	@RequestMapping(value = "/{codProvincia}/{codMunicipio}/{desMunicCas}", method = RequestMethod.GET)
	public @ResponseBody
	M62fbMunicipios getById(@PathVariable String codProvincia,
			@PathVariable String codMunicipio, @PathVariable String desMunicCas) {
		M62fbMunicipios m62fbMunicipios = new M62fbMunicipios();
		m62fbMunicipios.setCodProvincia(codProvincia);
		m62fbMunicipios.setCodMunicipio(codMunicipio);
		// m62fbMunicipios.setDesMunicCas(desMunicCas);
		m62fbMunicipios = this.m62fbMunicipiosService.find(m62fbMunicipios);
		M62fbMunicipiosController.logger
				.info("[GET - findBy_PK] : Obtener M62fbMunicipios por PK");
		return m62fbMunicipios;
	}

	/**
	 * Method 'getAll'.
	 * 
	 * @param filterM62fbMunicipios
	 *            M62fbMunicipios
	 * @return List
	 */
	@RequestMapping(method = RequestMethod.GET)
	public @ResponseBody
	List<M62fbMunicipios> getAll(
			@ModelAttribute M62fbMunicipios filterM62fbMunicipios) {
		M62fbMunicipiosController.logger
				.info("[GET - find_ALL] : Obtener M62fbMunicipios por filtro");
		return this.m62fbMunicipiosService.findAll(filterM62fbMunicipios, null);
	}

	/**
	 * Method 'getAllJQGrid'.
	 * 
	 * @param filterM62fbMunicipios
	 *            M62fbMunicipios
	 * @param pagination
	 *            Pagination
	 * @return JQGridJSONModel
	 */
	@RequestMapping(method = RequestMethod.GET, headers = { "JQGridModel=true" })
	public @ResponseBody
	JQGridJSONModel getAllJQGrid(
			@ModelAttribute M62fbMunicipios filterM62fbMunicipios,
			@ModelAttribute Pagination pagination) {
		List<M62fbMunicipios> m62fbMunicipioss = this.m62fbMunicipiosService
				.findAll(filterM62fbMunicipios, pagination);
		Long recordNum = this.m62fbMunicipiosService
				.findAllCount(filterM62fbMunicipios);
		M62fbMunicipiosController.logger
				.info("[GET - jqGrid] : Obtener M62fbMunicipios");
		return new JQGridJSONModel(pagination, recordNum, m62fbMunicipioss);
	}

}
