package com.ejie.ab63.control.expedientes;

import java.util.List;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ModelAttribute;
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.servlet.ModelAndView;

import com.ejie.ab63.comun.Constantes;
import com.ejie.ab63.model.inicio.InitForm;
import com.ejie.ab63.model.procedimientos.CompareExpedienteSection;
import com.ejie.ab63.model.usuario.Usuario;
import com.ejie.ab63.model.util.ResultAjaxOperation;

/**
 * Ab6301s00Controller  
 * 
 *  
 */

@Controller
@RequestMapping(value = "/fichaExpediente/cambiosPendientes")
public class CambiosPendientesFichaExpedienteController extends ExpedienteBaseContoller {

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

	@Override
	protected String getCurrentPage() {
		return Constantes.PESTANA_CAMBIOS_PENDIENTES;
	}

	@Override
	protected String getTilesPage() {
		return "cambiosPendientes";
	}

	@Override
	protected void setCurrentPageModel(Model model, InitForm initForm) {
		List<CompareExpedienteSection> compareEstablecimientosSections = this.getEstablecimientoService()
				.findDiffExpdienteSections(initForm);

		model.addAttribute("isEnableChangeNreg", this.getEstablecimientoService()
				.canChangeIdentifiadorExp(initForm.getIdExpediente(), initForm.getIdTerceroTitular()));
		model.addAttribute("sections", compareEstablecimientosSections);
		model.addAttribute("isEsencial", this.getEstablecimientoService().isEsencialChange(initForm));
	}

	/*
	 * METODOS COMPONENTE RUP_TABLE
	 * 
	 */

	/**
	 * Metodo de presentacion del RUP_TABLE.
	 * 
	 * @param model
	 *            Model
	 * @return String
	 * @throws Exception
	 */
	@RequestMapping(value = "/maint", method = RequestMethod.POST)
	public ModelAndView getFormEdit(Model model, @ModelAttribute("initForm") InitForm initForm, Usuario usuario)
			throws Exception {
		CambiosPendientesFichaExpedienteController.logger
				.info("[GET - View] : Cambios Pendientes Ficha Expediente Controller");

		return mostrar(model, initForm, usuario);
	}

	/**
	 * Metodo de presentacion del RUP_TABLE.
	 * 
	 * @param model
	 *            Model
	 * @return String
	 * @throws Exception
	 */
	@RequestMapping(value = "/cambiarNumReg", method = RequestMethod.POST)
	public ModelAndView modNumRegistro(Model model, @ModelAttribute("initForm") InitForm initForm, Usuario usuario)
			throws Exception {
		CambiosPendientesFichaExpedienteController.logger
				.info("[GET - View] : Cambios Pendientes Ficha Expediente Controller");
		this.getEstablecimientoService().reasingExpediente(initForm);

		return mostrar(model, initForm, usuario);
	}

	/**
	 * Metodo de presentacion del RUP_TABLE.
	 * 
	 * @param model
	 *            Model
	 * @return String
	 * @throws Exception
	 */
	@RequestMapping(value = "/saveSection", method = RequestMethod.POST)
	public @ResponseBody ResultAjaxOperation saveSection(Model model, @ModelAttribute("initForm") InitForm initForm,
			@RequestParam("section") String section, @RequestParam("idSection") Integer idSection, Usuario usuario)
			throws Exception {
		CambiosPendientesFichaExpedienteController.logger
				.info("[GET - View] : Cambios Pendientes Ficha Expediente Controller");

		return this.getEstablecimientoService().updateChangesSection(initForm, idSection, section);
	}
}
