package com.mx.dla.dda.reporte.configuracion.actions;

import java.sql.SQLException;

import org.apache.ibatis.exceptions.PersistenceException;
import org.springframework.beans.factory.annotation.Autowired;

import com.mx.dla.dda.catalogos.bos.CatalogosBO;
import com.mx.dla.dda.contrato.common.actions.BaseContratoAction;
import com.mx.dla.dda.contrato.listado.dtos.CatListadoContratoDTO;
import com.mx.dla.dda.contrato.transaccion.exceptions.dtos.TransaccionException;
import com.mx.dla.dda.reporte.configuracion.bos.ConfiguracionReportesBO;
import com.opensymphony.xwork2.Action;

public class ConfiguracionReportesAction extends BaseContratoAction {

	private static final long serialVersionUID = 21363082260499407L;

	private CatListadoContratoDTO catalogos = new CatListadoContratoDTO();

	private String claveReporte;
	private Long idEstudio;
	private String clavesColumnas;
	private String clavesSeleccionadas;

	private String mensajeExcepcion;

	@Autowired
	private CatalogosBO catalogosBO;

	@Autowired
	private ConfiguracionReportesBO reportesConfiguracionBO;

	public String primeraCarga() {
		return SUCCESS;
	}

	public String getCatalogosAction() {

		try {

			catalogos.setEstudios(catalogosBO.obtenListaEstudios());

		} catch (PersistenceException e) {
			setMensajeExcepcion("Ocurrió un error al obtener los datos.");
			logger.error("Error.", e);
		} catch (TransaccionException e) {
			setMensajeExcepcion("Ocurrió un error al obtener los datos.");
			logger.error("Error.", e);
		} catch (SQLException e) {
			setMensajeExcepcion("Ocurrió un error al obtener los datos.");
			logger.error("Error.", e);
		}
		return Action.SUCCESS;
	}

	public String guardaConfiguracion() {

		try {

			logger.info("EN action clave reporte:" + claveReporte + "| id estudio: " + idEstudio + "|claves Columnas:"
					+ clavesColumnas.toString());
			reportesConfiguracionBO.guardarConfiguracion(claveReporte, idEstudio, clavesColumnas);

		} catch (PersistenceException e) {
			setMensajeExcepcion("Ocurrió un error al guardar los datos.");
			logger.error("Error.", e);
		} catch (SQLException e) {
			setMensajeExcepcion("Ocurrió un error al guardar los datos.");
			logger.error("Error.", e);
		} catch (TransaccionException e) {
			setMensajeExcepcion("Ocurrió un error al guardar los datos.");
			logger.error("Error.", e);
		}

		return Action.SUCCESS;
	}

	public String consultaConfiguracion() {

		try {

			logger.info(
					"EN action [consultaConfiguracion] clave reporte:" + claveReporte + "| id estudio: " + idEstudio);
			clavesSeleccionadas = reportesConfiguracionBO.consultaConfiguracion(claveReporte, idEstudio);

		} catch (PersistenceException ibe) {
			setMensajeExcepcion("Ocurrió un error al consultar los datos.");
			logger.error("Error.", ibe);
		} catch (SQLException e) {
			setMensajeExcepcion("Ocurrió un error al consultar los datos.");
			logger.error("Error.", e);
		} catch (TransaccionException e) {
			setMensajeExcepcion("Ocurrió un error al consultar los datos.");
			logger.error("Error.", e);
		}

		return Action.SUCCESS;
	}

	public String getClaveReporte() {
		return claveReporte;
	}

	public void setClaveReporte(String claveReporte) {
		this.claveReporte = claveReporte;
	}

	public Long getIdEstudio() {
		return idEstudio;
	}

	public void setIdEstudio(Long idEstudio) {
		this.idEstudio = idEstudio;
	}

	public String getClavesColumnas() {
		return clavesColumnas;
	}

	public void setClavesColumnas(String clavesColumnas) {
		this.clavesColumnas = clavesColumnas;
	}

	public CatListadoContratoDTO getCatalogos() {
		return catalogos;
	}

	public void setCatalogos(CatListadoContratoDTO catalogos) {
		this.catalogos = catalogos;
	}

	public String getClavesSeleccionadas() {
		return clavesSeleccionadas;
	}

	public void setClavesSeleccionadas(String clavesSeleccionadas) {
		this.clavesSeleccionadas = clavesSeleccionadas;
	}

	public void setMensajeExcepcion(String mensajeExcepcion) {
		this.mensajeExcepcion = mensajeExcepcion;
	}

	public String getMensajeExcepcion() {
		return mensajeExcepcion;
	}

}
