package com.ejie.m62fb.control;

import com.ejie.m62fb.service.M62fbDisponibilidadVivsService;
import com.ejie.m62fb.service.M62fbr46s0s00Service;
import com.ejie.x38.control.exception.ResourceNotFoundException;
import com.ejie.x38.control.exception.ServiceUnavailableException;
import com.ejie.x38.dto.JQGridJSONModel;
import com.ejie.x38.dto.Pagination;
import com.ejie.x38.util.ObjectConversionManager;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.sql.Date;
import java.util.Iterator;
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.http.HttpStatus;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ModelAttribute;
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.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.ResponseStatus;
import com.ejie.m62fb.model.M62fbDisponibilidadVivs;
import com.ejie.m62fb.model.M62fbr46s0s00;

/**
 * M62fbDisponibilidadVivsController generated by UDA, 17-oct-2012 15:45:51.
 * 
XXXX
 */

@Controller
@RequestMapping(value = "/m62fbdisponibilidadvivs")
public class M62fbDisponibilidadVivsController {

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

	@Autowired
	private M62fbDisponibilidadVivsService m62fbDisponibilidadVivsService;
	@Autowired
	private M62fbr46s0s00Service m62fbr46s0s00Service;

	/**
	 * Method 'getCreateForm'.
	 * 
	 * @param model
	 *            Model
	 * @return String
	 */
	@RequestMapping(value = "maint", method = RequestMethod.GET)
	public String getCreateForm(Model model) {
		M62fbDisponibilidadVivsController.logger
				.info("[GET - View] : m62fbdisponibilidadvivs");
		return "m62fbdisponibilidadvivs";
	}

	/**
	 * Method 'getPorFiltroPersonalizadoVivEnOfer'.
	 * 
	 * @param idM62r45t0
	 *            Long
	 * @return List
	 */

	@RequestMapping(method = RequestMethod.GET, headers = { "JQGridModel=true" })
	public @ResponseBody
	Object getAllJQGrid(
			@RequestParam(value = "m62fbr45s0s00IdM62r45t0", required = false) BigDecimal idR45,
			HttpServletRequest request) {
		try {
			Pagination pagination = null;

			if (request.getHeader("JQGridModel") != null
					&& request.getHeader("JQGridModel").equals("true")) {
				pagination = new Pagination();
				pagination.setPage(Long.valueOf(request.getParameter("page")));
				pagination.setRows(Long.valueOf(request.getParameter("rows")));
				pagination.setSort(request.getParameter("sidx"));
				pagination.setAscDsc(request.getParameter("sord"));
				List<M62fbDisponibilidadVivs> catalogo = this.m62fbDisponibilidadVivsService
						.findAllPersonalizadoVivEnOfer(idR45, pagination);

				if (catalogo == null) {
					throw new Exception("No data Found.");
				}

				Long total = getPorFiltroPersonalizadoVivEnOferCount(idR45,
						request);

				JQGridJSONModel data = new JQGridJSONModel();
				data.setPage(request.getParameter("page"));
				data.setRecords(total.intValue());
				data.setTotal(total, pagination.getRows());
				data.setRows(catalogo);
				return data;
			} else {
				List<M62fbDisponibilidadVivs> catalogo = this.m62fbDisponibilidadVivsService
						.findAllPersonalizadoVivEnOfer(idR45, pagination);
				if (catalogo == null) {
					throw new Exception("No data Found.");
				}
				return catalogo;
			}
		} catch (Exception e) {
			throw new ResourceNotFoundException("No data Found.");
		}
	}

	/**
	 * Method 'getPorFiltroPersonalizadoVivEnOferCount'.
	 * 
	 * @param idM62r45t0
	 *            Long
	 * @param request
	 *            HttpServletRequest
	 * @return Long
	 */
	@RequestMapping(value = "/filtrarCatalogoVivEnOferCount", method = RequestMethod.GET)
	public @ResponseBody
	Long getPorFiltroPersonalizadoVivEnOferCount(
			@RequestParam(value = "idM62r45t0", required = false) BigDecimal idR45,
			HttpServletRequest request) {
		try {
			return m62fbDisponibilidadVivsService
					.findAllPersonalizadoVivEnOferCount(idR45);

		} catch (Exception e) {
			throw new ServiceUnavailableException(
					"Count Service is not responding.");
		}
	}

	/**
	 * Method 'getPorFiltroPersonalizado'.
	 * 
	 * @param numVivienda_search
	 *            Long
	 * @param numExpediente_search
	 *            String
	 * @param fecIncorporacionCatDesde_search
	 *            Date
	 * @param fecIncorporacionCatHasta_search
	 *            Date
	 * @param codProvincia_search
	 *            String
	 * @param codMunicipio_search
	 *            String
	 * @param fecIniSituacionDesde_search
	 *            Date
	 * @param fecIniSituacionHasta_search
	 *            Date
	 * @param fecFinSituacionDesde_search
	 *            Date
	 * @param fecFinSituacionHasta_search
	 *            Date
	 * @param codSituacion_search
	 *            String
	 * @return List
	 */

	@RequestMapping(value = "/filtrarCatalogo", method = RequestMethod.GET)
	public @ResponseBody
	Object getPorFiltroPersonalizado(
			@RequestParam(value = "numVivienda_search", required = false) BigDecimal numVivienda,
			@RequestParam(value = "numExpediente_search", required = false) String numExpediente,
			@RequestParam(value = "fecIncorporacionCatDesde_search", required = false) Date fecIncorporacionCatDesde,
			@RequestParam(value = "fecIncorporacionCatHasta_search", required = false) Date fecIncorporacionCatHasta,
			@RequestParam(value = "codProvincia_search", required = false) String codProvincia,
			@RequestParam(value = "codMunicipio_search", required = false) String codMunicipio,
			@RequestParam(value = "fecIniSituacionDesde_search", required = false) Date fecIniSituacionDesde,
			@RequestParam(value = "fecIniSituacionHasta_search", required = false) Date fecIniSituacionHasta,
			@RequestParam(value = "codSituacion_search", required = false) String codSituacion,
			@RequestParam(value = "fecFinSituacionDesde_search", required = false) Date fecFinSituacionDesde,
			@RequestParam(value = "fecFinSituacionHasta_search", required = false) Date fecFinSituacionHasta,
			HttpServletRequest request) {
		try {
			Pagination pagination = null;

			if (request.getHeader("JQGridModel") != null
					&& request.getHeader("JQGridModel").equals("true")) {
				pagination = new Pagination();
				pagination.setPage(Long.valueOf(request.getParameter("page")));
				pagination.setRows(Long.valueOf(request.getParameter("rows")));
				pagination.setSort(request.getParameter("sidx"));
				pagination.setAscDsc(request.getParameter("sord"));
				// Sustituir * por %
				if (numExpediente != null) {
					numExpediente = numExpediente.replaceAll("\\x2a", "%");
				}
				List<M62fbDisponibilidadVivs> catalogo = this.m62fbDisponibilidadVivsService
						.findAllPersonalizado(numVivienda, numExpediente,
								fecIncorporacionCatDesde,
								fecIncorporacionCatHasta, codProvincia,
								codMunicipio, fecIniSituacionDesde,
								fecIniSituacionHasta, codSituacion,
								fecFinSituacionDesde, fecFinSituacionHasta,
								pagination);

				if (catalogo == null) {
					throw new Exception("No data Found.");
				}

				Long total = getPorFiltroPersonalizadoCount(numVivienda,
						numExpediente, fecIncorporacionCatDesde,
						fecIncorporacionCatHasta, codProvincia, codMunicipio,
						fecIniSituacionDesde, fecIniSituacionHasta,
						codSituacion, fecFinSituacionDesde,
						fecFinSituacionHasta, request);

				JQGridJSONModel data = new JQGridJSONModel();
				data.setPage(request.getParameter("page"));
				data.setRecords(total.intValue());
				data.setTotal(total, pagination.getRows());
				data.setRows(catalogo);
				return data;
			} else {
				// Sustituir * por %
				if (numExpediente != null) {
					numExpediente = numExpediente.replaceAll("\\x2a", "%");
				}

				List<M62fbDisponibilidadVivs> catalogo = this.m62fbDisponibilidadVivsService
						.findAllPersonalizado(numVivienda, numExpediente,
								fecIncorporacionCatDesde,
								fecIncorporacionCatHasta, codProvincia,
								codMunicipio, fecIniSituacionDesde,
								fecIniSituacionHasta, codSituacion,
								fecFinSituacionDesde, fecFinSituacionHasta,
								pagination);
				if (catalogo == null) {
					throw new Exception("No data Found.");
				}
				return catalogo;
			}
		} catch (Exception e) {
			throw new ResourceNotFoundException("No data Found.");
		}
	}

	/**
	 * Method 'getPorFiltroPersonalizadoCount'.
	 * 
	 * @param numVivienda_search
	 *            Long
	 * @param numExpediente_search
	 *            String
	 * @param fecIncorporacionCatDesde_search
	 *            Date
	 * @param fecIncorporacionCatHasta_search
	 *            Date
	 * @param codProvincia_search
	 *            String
	 * @param codMunicipio_search
	 *            String
	 * @param fecIniSituacionDesde_search
	 *            Date
	 * @param fecIniSituacionHasta_search
	 *            Date
	 * @param fecFinSituacionDesde_search
	 *            Date
	 * @param fecFinSituacionHasta_search
	 *            Date
	 * @param codSituacion_search
	 *            String
	 * @param request
	 *            HttpServletRequest
	 * @return Long
	 */
	@RequestMapping(value = "/filtrarCatalogoCount", method = RequestMethod.GET)
	public @ResponseBody
	Long getPorFiltroPersonalizadoCount(
			@RequestParam(value = "numVivienda_search", required = false) BigDecimal numVivienda,
			@RequestParam(value = "numExpediente_search", required = false) String numExpediente,
			@RequestParam(value = "fecIncorporacionCatDesde_search", required = false) Date fecIncorporacionCatDesde,
			@RequestParam(value = "fecIncorporacionCatHasta_search", required = false) Date fecIncorporacionCatHasta,
			@RequestParam(value = "codProvincia_search", required = false) String codProvincia,
			@RequestParam(value = "codMunicipio_search", required = false) String codMunicipio,
			@RequestParam(value = "fecIniSituacionDesde_search", required = false) Date fecIniSituacionDesde,
			@RequestParam(value = "fecIniSituacionHasta_search", required = false) Date fecIniSituacionHasta,
			@RequestParam(value = "codSituacion_search", required = false) String codSituacion,
			@RequestParam(value = "fecFinSituacionDesde_search", required = false) Date fecFinSituacionDesde,
			@RequestParam(value = "fecFinSituacionHasta_search", required = false) Date fecFinSituacionHasta,
			HttpServletRequest request) {
		try {
			// Sustituir * por %
			if (numExpediente != null) {
				numExpediente = numExpediente.replaceAll("\\x2a", "%");
			}
			return m62fbDisponibilidadVivsService.findAllPersonalizadoCount(
					numVivienda, numExpediente, fecIncorporacionCatDesde,
					fecIncorporacionCatHasta, codProvincia, codMunicipio,
					fecIniSituacionDesde, fecIniSituacionHasta, codSituacion,
					fecFinSituacionDesde, fecFinSituacionHasta);

		} catch (Exception e) {
			throw new ServiceUnavailableException(
					"Count Service is not responding.");
		}
	}

	/**
	 * Method 'getPorFiltroPersonalizadoVivDisp'.
	 * 
	 * @param numVivienda
	 *            Long
	 * @param numExpediente
	 *            String
	 * @param codProvincia
	 *            String
	 * @param codMunicipio
	 *            String
	 * @param codRegAcceso
	 *            String
	 * @param indVivAdaptada
	 *            String
	 * @param numDormitoriosDesde
	 *            Integer
	 * @param numDormitoriosHasta
	 *            Integer
	 * @param supUtilVivDesde
	 *            BigDecimal
	 * @param supUtilVivHasta
	 *            BigDecimal
	 * @return List
	 */

	@RequestMapping(value = "/filtrarCatalogoDisp", method = RequestMethod.GET)
	public @ResponseBody
	Object getPorFiltroPersonalizadoVivDisp(
			@RequestParam(value = "numViviendaFiltro", required = false) BigDecimal numVivienda,
			@RequestParam(value = "numExpedienteFiltro", required = false) String numExpediente,
			@RequestParam(value = "codProvinciaFiltro", required = false) String codProvincia,
			@RequestParam(value = "codMunicipioFiltro", required = false) String codMunicipio,
			@RequestParam(value = "codRegAccesoFiltro", required = false) String codRegAcceso,
			@RequestParam(value = "codRegTenenciaFiltro", required = false) String codRegTenencia,
			@RequestParam(value = "indVivAdaptadaFiltro", required = false) String indVivAdaptada,
			@RequestParam(value = "numDormitoriosDesdeFiltro", required = false) Integer numDormitoriosDesde,
			@RequestParam(value = "numDormitoriosHastaFiltro", required = false) Integer numDormitoriosHasta,
			@RequestParam(value = "supUtilVivDesdeFiltro", required = false) BigDecimal supUtilVivDesde,
			@RequestParam(value = "supUtilVivHastaFiltro", required = false) BigDecimal supUtilVivHasta,
			@RequestParam(value = "idR45", required = false) BigDecimal idR45,
			HttpServletRequest request) {
		try {
			Pagination pagination = null;

			if (request.getHeader("JQGridModel") != null
					&& request.getHeader("JQGridModel").equals("true")) {
				pagination = new Pagination();
				pagination.setPage(Long.valueOf(request.getParameter("page")));
				pagination.setRows(Long.valueOf(request.getParameter("rows")));
				pagination.setSort(request.getParameter("sidx"));
				pagination.setAscDsc(request.getParameter("sord"));

				if (numExpediente == "") {
					numExpediente = null;
				}
				if (codProvincia == "null") {
					codProvincia = null;
				}
				if (codMunicipio == "null") {
					codMunicipio = null;
				}
				if (codRegAcceso == "null") {
					codRegAcceso = null;
				}
				if (codRegTenencia == "null") {
					codRegTenencia = null;
				}
				if (indVivAdaptada == "") {
					indVivAdaptada = null;
				}
				// Sustituir * por %
				if (numExpediente != null) {
					numExpediente = numExpediente.replaceAll("\\x2a", "%");
				}
				List<M62fbDisponibilidadVivs> catalogo = this.m62fbDisponibilidadVivsService
						.findAllPersonalizadoVivDisp(numVivienda,
								numExpediente, codProvincia, codMunicipio,
								codRegAcceso, codRegTenencia, indVivAdaptada,
								numDormitoriosDesde, numDormitoriosHasta,
								supUtilVivDesde, supUtilVivHasta, idR45,
								pagination);

				if (catalogo == null) {
					throw new Exception("No data Found.");
				}

				Long total = getPorFiltroPersonalizadoVivDispCount(numVivienda,
						numExpediente, codProvincia, codMunicipio,
						codRegAcceso, codRegTenencia, indVivAdaptada,
						numDormitoriosDesde, numDormitoriosHasta,
						supUtilVivDesde, supUtilVivHasta, idR45, request);

				JQGridJSONModel data = new JQGridJSONModel();
				data.setPage(request.getParameter("page"));
				data.setRecords(total.intValue());
				data.setTotal(total, pagination.getRows());
				data.setRows(catalogo);
				return data;
			} else {
				// Sustituir * por %
				if (numExpediente != null) {
					numExpediente = numExpediente.replaceAll("\\x2a", "%");
				}
				List<M62fbDisponibilidadVivs> catalogo = this.m62fbDisponibilidadVivsService
						.findAllPersonalizadoVivDisp(numVivienda,
								numExpediente, codProvincia, codMunicipio,
								codRegAcceso, codRegTenencia, indVivAdaptada,
								numDormitoriosDesde, numDormitoriosHasta,
								supUtilVivDesde, supUtilVivHasta, idR45,
								pagination);
				if (catalogo == null) {
					throw new Exception("No data Found.");
				}
				return catalogo;
			}
		} catch (Exception e) {
			throw new ResourceNotFoundException("No data Found.");
		}
	}

	/**
	 * Method 'getPorFiltroPersonalizadoCount'.
	 * 
	 * @param numViviendaFiltro
	 *            Long
	 * @param numExpedienteFiltro
	 *            String
	 * @param codProvinciaFiltro
	 *            String
	 * @param codMunicipioFiltro
	 *            String
	 * @param codRegAccesoFiltro
	 *            String
	 * @param codRegTenenciaFiltro
	 *            String
	 * @param indVivAdaptadaFiltro
	 *            String
	 * @param numDormitoriosDesdeFiltro
	 *            Integer
	 * @param numDormitoriosHastaFiltro
	 *            Integer
	 * @param supUtilVivDesdeFiltro
	 *            BigDecimal
	 * @param supUtilVivHastaFiltro
	 *            BigDecimal
	 * @param request
	 *            HttpServletRequest
	 * @return Long
	 */
	@RequestMapping(value = "/filtrarCatalogoVivDispCount", method = RequestMethod.GET)
	public @ResponseBody
	Long getPorFiltroPersonalizadoVivDispCount(
			@RequestParam(value = "numViviendaFiltro", required = false) BigDecimal numVivienda,
			@RequestParam(value = "numExpedienteFiltro", required = false) String numExpediente,
			@RequestParam(value = "codProvinciaFiltro", required = false) String codProvincia,
			@RequestParam(value = "codMunicipioFiltro", required = false) String codMunicipio,
			@RequestParam(value = "codRegAccesoFiltro", required = false) String codRegAcceso,
			@RequestParam(value = "codRegTenenciaFiltro", required = false) String codRegTenencia,
			@RequestParam(value = "indVivAdaptadaFiltro", required = false) String indVivAdaptada,
			@RequestParam(value = "numDormitoriosDesdeFiltro", required = false) Integer numDormitoriosDesde,
			@RequestParam(value = "numDormitoriosHastaFiltro", required = false) Integer numDormitoriosHasta,
			@RequestParam(value = "supUtilVivDesdeFiltro", required = false) BigDecimal supUtilVivDesde,
			@RequestParam(value = "supUtilVivHastaFiltro", required = false) BigDecimal supUtilVivHasta,
			@RequestParam(value = "idR45", required = false) BigDecimal idR45,
			HttpServletRequest request) {
		try {
			// Sustituir * por %
			if (numExpediente != null) {
				numExpediente = numExpediente.replaceAll("\\x2a", "%");
			}
			return m62fbDisponibilidadVivsService
					.findAllPersonalizadoVivDispCount(numVivienda,
							numExpediente, codProvincia, codMunicipio,
							codRegAcceso, codRegTenencia, indVivAdaptada,
							numDormitoriosDesde, numDormitoriosHasta,
							supUtilVivDesde, supUtilVivHasta, idR45);

		} catch (Exception e) {
			throw new ServiceUnavailableException(
					"Count Service is not responding.");
		}
	}

	/**
	 * Method 'getById'.
	 * 
	 * @param numVivienda
	 *            Integer
	 * @param numExpediente
	 *            String
	 * @param numUltExpedPromo
	 *            String
	 * @param numVivPromo
	 *            String
	 * @param codProvincia
	 *            String
	 * @param codMunicipio
	 *            String
	 * @param indVivAdaptada
	 *            String
	 * @param numDormitorios
	 *            Integer
	 * @param supUtilViv
	 *            BigDecimal
	 * @param codRegAcceso
	 *            String
	 * @param codRegTenencia
	 *            String
	 * @param ideElementoGar
	 *            BigDecimal
	 * @param numGarPromo
	 *            String
	 * @param supUtilGar
	 *            BigDecimal
	 * @param ideElementoTras
	 *            BigDecimal
	 * @param numTrasPromo
	 *            String
	 * @param supUtilTras
	 *            BigDecimal
	 * @param imcPvpTotal
	 *            BigDecimal
	 * @param numUltProp
	 *            Long
	 * @param indRenunciaUltProp
	 *            String
	 * @param indRevocacionUltProp
	 *            String
	 * @param indRenunORevocUltProp
	 *            String
	 * @param idPersoUltProp
	 *            BigDecimal
	 * @param nomUltProp
	 *            String
	 * @param numUltInq
	 *            Long
	 * @param fecFinUltInq
	 *            Date
	 * @param idPersoUltInq
	 *            Integer
	 * @param nomUltInq
	 *            String
	 * @param idR38UltRes
	 *            Integer
	 * @param numAcuerdoUltRes
	 *            Integer
	 * @param indReservaTempUltRes
	 *            String
	 * @param fecReservaUltRes
	 *            Date
	 * @param fecFinReservaUltRes
	 *            Date
	 * @param texObservacionesUltRes
	 *            String
	 * @param indDisponible
	 *            String
	 * @param codSituacion
	 *            String
	 * @param fecIniSituacion
	 *            Date
	 * @param fecFinSituacion
	 *            Date
	 * @param idPersonaAdju
	 *            Integer
	 * @param codSitOferta
	 *            String
	 * @param fecOferta
	 *            Date
	 * @param fecFinalizacion
	 *            Date
	 * @param fecDeclinacion
	 *            Date
	 * @param fecAceptacion
	 *            Date
	 * @return m62fbDisponibilidadVivs M62fbDisponibilidadVivs
	 */
	@RequestMapping(value = "/{numVivienda}/{numExpediente}/{numUltExpedPromo}/{numVivPromo}/{codProvincia}/{codMunicipio}/{indVivAdaptada}/{numDormitorios}/{supUtilViv}/{codRegAcceso}/{codRegTenencia}/{ideElementoGar}/{numGarPromo}/{supUtilGar}/{ideElementoTras}/{numTrasPromo}/{supUtilTras}/{imcPvpTotal}/{numUltProp}/{indRenunciaUltProp}/{indRevocacionUltProp}/{indRenunORevocUltProp}/{idPersoUltProp}/{nomUltProp}/{numUltInq}/{fecFinUltInq}/{idPersoUltInq}/{nomUltInq}/{idR38UltRes}/{numAcuerdoUltRes}/{indReservaTempUltRes}/{fecReservaUltRes}/{fecFinReservaUltRes}/{texObservacionesUltRes}/{indDisponible}/{codSituacion}/{fecIniSituacion}/{fecFinSituacion}/{idPersonaAdju}/{codSitOferta}/{fecOferta}/{fecFinalizacion}/{fecDeclinacion}/{fecAceptacion}", method = RequestMethod.GET)
	public @ResponseBody
	M62fbDisponibilidadVivs getById(@PathVariable BigDecimal numVivienda,
			@PathVariable String numExpediente,
			@PathVariable String numUltExpedPromo,
			@PathVariable String numVivPromo,
			@PathVariable String codProvincia,
			@PathVariable String codMunicipio,
			@PathVariable String indVivAdaptada,
			@PathVariable Integer numDormitorios,
			@PathVariable BigDecimal supUtilViv,
			@PathVariable String codRegAcceso,
			@PathVariable String codRegTenencia,
			@PathVariable BigDecimal ideElementoGar,
			@PathVariable String numGarPromo,
			@PathVariable BigDecimal supUtilGar,
			@PathVariable BigDecimal ideElementoTras,
			@PathVariable String numTrasPromo,
			@PathVariable BigDecimal supUtilTras,
			@PathVariable BigDecimal imcPvpTotal,
			@PathVariable Long numUltProp,
			@PathVariable String indRenunciaUltProp,
			@PathVariable String indRevocacionUltProp,
			@PathVariable String indRenunORevocUltProp,
			@PathVariable BigDecimal idPersoUltProp,
			@PathVariable String nomUltProp, @PathVariable Long numUltInq,
			@PathVariable Date fecFinUltInq,
			@PathVariable Integer idPersoUltInq,
			@PathVariable String nomUltInq, @PathVariable Integer idR38UltRes,
			@PathVariable Integer numAcuerdoUltRes,
			@PathVariable String indReservaTempUltRes,
			@PathVariable Date fecReservaUltRes,
			@PathVariable Date fecFinReservaUltRes,
			@PathVariable String texObservacionesUltRes,
			@PathVariable String indDisponible,
			@PathVariable String codSituacion,
			@PathVariable Date fecIniSituacion,
			@PathVariable Date fecFinSituacion,
			@PathVariable Integer idPersonaAdju,
			@PathVariable String codSitOferta, @PathVariable Date fecOferta,
			@PathVariable Date fecFinalizacion,
			@PathVariable Date fecDeclinacion, @PathVariable Date fecAceptacion) {
		M62fbDisponibilidadVivs m62fbDisponibilidadVivs = new M62fbDisponibilidadVivs();
		m62fbDisponibilidadVivs.setNumVivienda(numVivienda);
		m62fbDisponibilidadVivs.setNumExpediente(numExpediente);
		m62fbDisponibilidadVivs.setNumUltExpedPromo(numUltExpedPromo);
		m62fbDisponibilidadVivs.setNumVivPromo(numVivPromo);
		m62fbDisponibilidadVivs.setCodProvincia(codProvincia);
		m62fbDisponibilidadVivs.setCodMunicipio(codMunicipio);
		m62fbDisponibilidadVivs.setIndVivAdaptada(indVivAdaptada);
		m62fbDisponibilidadVivs.setNumDormitorios(numDormitorios);
		m62fbDisponibilidadVivs.setSupUtilViv(supUtilViv);
		m62fbDisponibilidadVivs.setCodRegAcceso(codRegAcceso);
		m62fbDisponibilidadVivs.setCodRegTenencia(codRegTenencia);
		m62fbDisponibilidadVivs.setIdeElementoGar(ideElementoGar);
		m62fbDisponibilidadVivs.setNumGarPromo(numGarPromo);
		m62fbDisponibilidadVivs.setSupUtilGar(supUtilGar);
		m62fbDisponibilidadVivs.setIdeElementoTras(ideElementoTras);
		m62fbDisponibilidadVivs.setNumTrasPromo(numTrasPromo);
		m62fbDisponibilidadVivs.setSupUtilTras(supUtilTras);
		m62fbDisponibilidadVivs.setImcPvpTotal(imcPvpTotal);
		m62fbDisponibilidadVivs.setNumUltProp(numUltProp);
		m62fbDisponibilidadVivs.setIndRenunciaUltProp(indRenunciaUltProp);
		m62fbDisponibilidadVivs.setIndRevocacionUltProp(indRevocacionUltProp);
		m62fbDisponibilidadVivs.setIndRenunORevocUltProp(indRenunORevocUltProp);
		m62fbDisponibilidadVivs.setIdPersoUltProp(idPersoUltProp);
		m62fbDisponibilidadVivs.setNomUltProp(nomUltProp);
		m62fbDisponibilidadVivs.setNumUltInq(numUltInq);
		m62fbDisponibilidadVivs.setFecFinUltInq(fecFinUltInq);
		m62fbDisponibilidadVivs.setIdPersoUltInq(idPersoUltInq);
		m62fbDisponibilidadVivs.setNomUltInq(nomUltInq);
		m62fbDisponibilidadVivs.setIdR38UltRes(idR38UltRes);
		m62fbDisponibilidadVivs.setNumAcuerdoUltRes(numAcuerdoUltRes);
		m62fbDisponibilidadVivs.setIndReservaTempUltRes(indReservaTempUltRes);
		m62fbDisponibilidadVivs.setFecReservaUltRes(fecReservaUltRes);
		m62fbDisponibilidadVivs.setFecFinReservaUltRes(fecFinReservaUltRes);
		m62fbDisponibilidadVivs
				.setTexObservacionesUltRes(texObservacionesUltRes);
		m62fbDisponibilidadVivs.setIndDisponible(indDisponible);
		m62fbDisponibilidadVivs.setCodSituacion(codSituacion);
		m62fbDisponibilidadVivs.setFecIniSituacion(fecIniSituacion);
		m62fbDisponibilidadVivs.setFecFinSituacion(fecFinSituacion);
		m62fbDisponibilidadVivs.setIdPersonaAdju(idPersonaAdju);
		m62fbDisponibilidadVivs.setCodSitOferta(codSitOferta);
		m62fbDisponibilidadVivs.setFecOferta(fecOferta);
		m62fbDisponibilidadVivs.setFecFinalizacion(fecFinalizacion);
		m62fbDisponibilidadVivs.setFecDeclinacion(fecDeclinacion);
		m62fbDisponibilidadVivs.setFecAceptacion(fecAceptacion);
		m62fbDisponibilidadVivs = this.m62fbDisponibilidadVivsService
				.find(m62fbDisponibilidadVivs);
		M62fbDisponibilidadVivsController.logger
				.info("[GET - findBy_PK] : Obtener M62fbDisponibilidadVivs por PK");
		return m62fbDisponibilidadVivs;
	}

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

	/**
	 * Method 'edit'.
	 * 
	 * @param m62fbDisponibilidadVivs
	 *            M62fbDisponibilidadVivs
	 * @return M62fbDisponibilidadVivs
	 */
	@RequestMapping(method = RequestMethod.PUT)
	public @ResponseBody
	M62fbDisponibilidadVivs edit(
			@RequestBody M62fbDisponibilidadVivs m62fbDisponibilidadVivs) {
		M62fbDisponibilidadVivs m62fbDisponibilidadVivsAux = this.m62fbDisponibilidadVivsService
				.update(m62fbDisponibilidadVivs);
		M62fbDisponibilidadVivsController.logger
				.info("[PUT] : M62fbDisponibilidadVivs actualizado correctamente");
		return m62fbDisponibilidadVivsAux;
	}

	/**
	 * Method 'add'.
	 * 
	 * @param m62fbDisponibilidadVivs
	 *            M62fbDisponibilidadVivs
	 * @return M62fbDisponibilidadVivs
	 */
	@RequestMapping(method = RequestMethod.POST)
	public @ResponseBody
	M62fbDisponibilidadVivs add(
			@RequestBody M62fbDisponibilidadVivs m62fbDisponibilidadVivs) {
		M62fbDisponibilidadVivs m62fbDisponibilidadVivsAux = this.m62fbDisponibilidadVivsService
				.add(m62fbDisponibilidadVivs);
		M62fbDisponibilidadVivsController.logger
				.info("[POST] : M62fbDisponibilidadVivs insertado correctamente");
		return m62fbDisponibilidadVivsAux;
	}

	/**
	 * Method 'remove'.
	 * 
	 * @param numVivienda
	 *            Integer
	 * @param numExpediente
	 *            String
	 * @param numUltExpedPromo
	 *            String
	 * @param numVivPromo
	 *            String
	 * @param codProvincia
	 *            String
	 * @param codMunicipio
	 *            String
	 * @param indVivAdaptada
	 *            String
	 * @param numDormitorios
	 *            Integer
	 * @param supUtilViv
	 *            BigDecimal
	 * @param codRegAcceso
	 *            String
	 * @param ideElementoGar
	 *            BigDecimal
	 * @param numGarPromo
	 *            String
	 * @param supUtilGar
	 *            BigDecimal
	 * @param ideElementoTras
	 *            BigDecimal
	 * @param numTrasPromo
	 *            String
	 * @param supUtilTras
	 *            BigDecimal
	 * @param imcPvpTotal
	 *            BigDecimal
	 * @param numUltProp
	 *            Long
	 * @param indRenunciaUltProp
	 *            String
	 * @param indRevocacionUltProp
	 *            String
	 * @param indRenunORevocUltProp
	 *            String
	 * @param idPersoUltProp
	 *            BigDecimal
	 * @param nomUltProp
	 *            String
	 * @param numUltInq
	 *            Long
	 * @param fecFinUltInq
	 *            Date
	 * @param idPersoUltInq
	 *            Integer
	 * @param nomUltInq
	 *            String
	 * @param idR38UltRes
	 *            Integer
	 * @param numAcuerdoUltRes
	 *            Integer
	 * @param indReservaTempUltRes
	 *            String
	 * @param fecReservaUltRes
	 *            Date
	 * @param fecFinReservaUltRes
	 *            Date
	 * @param texObservacionesUltRes
	 *            String
	 * @param indDisponible
	 *            String
	 * @param codSituacion
	 *            String
	 * @param fecIniSituacion
	 *            Date
	 * @param fecFinSituacion
	 *            Date
	 * @param idPersonaAdju
	 *            Integer
	 * @param codSitOferta
	 *            String
	 * @param fecOferta
	 *            Date
	 * @param fecFinalizacion
	 *            Date
	 * @param fecDeclinacion
	 *            Date
	 * @param fecAceptacion
	 *            Date
	 * @return m62fbDisponibilidadVivs
	 */
	@RequestMapping(value = "/{idM62r45t0}/{numVivienda}", method = RequestMethod.DELETE)
	@ResponseStatus(value = HttpStatus.OK)
	public @ResponseBody
	M62fbDisponibilidadVivs remove(@PathVariable BigDecimal idM62r45t0,
			@PathVariable BigDecimal numVivienda) {
		M62fbDisponibilidadVivs m62fbDisponibilidadVivs = new M62fbDisponibilidadVivs();
		m62fbDisponibilidadVivs.setNumVivienda(numVivienda);
		m62fbDisponibilidadVivs.setIdM62r45t0(idM62r45t0);
		M62fbr46s0s00 m62fbr46s0s00 = new M62fbr46s0s00();
		m62fbr46s0s00.setNumVivienda(numVivienda);
		m62fbr46s0s00.setIdM62r45t0(idM62r45t0);
		this.m62fbr46s0s00Service.remove(m62fbr46s0s00);
		M62fbDisponibilidadVivsController.logger
				.info("[DELETE] : M62fbDisponibilidadVivs borrado correctamente");
		return m62fbDisponibilidadVivs;
	}

	/**
	 * Method 'removeAll'.
	 * 
	 * @param m62fbDisponibilidadVivsIds
	 *            List
	 * @return m62fbDisponibilidadVivsList
	 */
	@RequestMapping(value = "/deleteAll", method = RequestMethod.POST)
	@ResponseStatus(value = HttpStatus.OK)
	public @ResponseBody
	List<List<String>> removeMultiple(
			@RequestBody List<List<String>> m62fbDisponibilidadVivsIds) {
		// List<M62fbDisponibilidadVivs> m62fbDisponibilidadVivsList = new
		// ArrayList<M62fbDisponibilidadVivs>();
		List<M62fbr46s0s00> m62fbr46s0s00List = new ArrayList<M62fbr46s0s00>();
		for (List<String> m62fbr46s0s00Id : m62fbDisponibilidadVivsIds) {
			Iterator<String> iterator = m62fbr46s0s00Id.iterator();
			M62fbr46s0s00 m62fbr46s0s00 = new M62fbr46s0s00();
			// nuevo en la
			// lista
			// (parametro
			// del servicio)
			m62fbr46s0s00.setIdM62r45t0(ObjectConversionManager.convert(
					iterator.next(), BigDecimal.class));
			m62fbr46s0s00.setNumVivienda(ObjectConversionManager.convert(
					iterator.next(), BigDecimal.class));
			m62fbr46s0s00List.add(m62fbr46s0s00);
		}
		this.m62fbr46s0s00Service.removeMultiple(m62fbr46s0s00List);

		M62fbDisponibilidadVivsController.logger
				.info("[POST - DELETE_ALL] : M62fbr46s0s00 borrados correctamente");
		return m62fbDisponibilidadVivsIds;
	}

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

}
