package com.mx.dla.dda.contrato.license.titulo.actions;

import java.util.Date;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;

import com.mx.dla.dda.catalogos.dtos.CatalogoDTO;
import com.mx.dla.dda.contrato.common.constants.ContratoConstats;
import com.mx.dla.dda.contrato.generales.dtos.ContratoDTO;
import com.mx.dla.dda.contrato.license.titulo.bos.TituloFeeGridBO;
import com.mx.dla.dda.contrato.titulo.constants.TipoCambioTitulo;
import com.mx.dla.dda.contrato.titulo.dtos.Lista;
import com.mx.dla.dda.contrato.titulo.dtos.Titulo;
import com.mx.dla.dda.contrato.titulo.exception.TituloException;
import com.mx.dla.global.actions.BaseAction;

public class TituloFeeGridAction extends BaseAction {
	private static final long serialVersionUID = 8148896697230880220L;

	@Autowired
	private TituloFeeGridBO tituloGridBO;
	
	private Titulo titulo;
	
	private List<Titulo> titulos;
	
	private String tipoCambio;
	
	private String idsTipoCambio;
	
	private String error;
	
	//Filtros	
	private CatalogoDTO categoriaTit;
	
	private CatalogoDTO pagoCateg;
	
	private String nombreUnico;
	
	private String descTitulo;
	
	private Date fechaInicio;
	
	private String mensaje;
	
	
	public String guardar()
	{		
		ContratoDTO ct = (ContratoDTO) getSession().get( ContratoConstats.CONTRATO_SESSION);
		Lista l = (Lista) getSession().get( ContratoConstats.LISTA_SESSION);
		try {
			if(TipoCambioTitulo.EDITAR.name().equals(tipoCambio))
			{
				if(titulo.getIdTituloCnt() == null) 				
				   this.mensaje = tituloGridBO.alta(ct, l, titulo );				
				else 				
				   tituloGridBO.cambio(ct,l, titulo);				
			}
			else
			{
				tituloGridBO.cambioMultiple(ct,l, titulo, tipoCambio,idsTipoCambio);
			}
		} catch (TituloException e) {
			setError(e.getMessage());
		}catch (Exception e)
		{
			logger.error("Error :",e);
			setError("Ocurrio un error");
		}
		return SUCCESS;
	}
	
	public String series()
	{		
		ContratoDTO ct = (ContratoDTO) getSession().get( ContratoConstats.CONTRATO_SESSION);
		Lista l        = (Lista) getSession().get( ContratoConstats.LISTA_SESSION);
		try {
			
			tituloGridBO.altaSeriesAuto(ct, l, titulo );			
			
		} catch (TituloException e) {
			setError(e.getMessage());
		}catch (Exception e)
		{
			logger.error("Error :",e);
			setError("Ocurrio un error");
		}
		return SUCCESS;
	}
	
	public String baja()
	{
		ContratoDTO ct = (ContratoDTO) getSession().get( ContratoConstats.CONTRATO_SESSION);
		try {
			tituloGridBO.baja(ct, titulo);
		}catch (Exception e)
		{
			logger.error("Error :",e);
			setError("Ocurrio un error");
		}
		return SUCCESS;
	}
	
	public String busqueda()
	{
		try {
			titulos = tituloGridBO.busqueda( titulo, false, Lista.MIRROR);
		} catch (TituloException e) {
			setError(e.getMessage());
		}catch (Exception e)
		{
			logger.error("Error :",e);
			setError("Ocurrio un error");
		}
		return SUCCESS;
	}
		
	public String busquedaDetalle()
	{
		try {
			titulos = tituloGridBO.busquedaDetalle( titulo, false, Lista.MIRROR);
		} catch (TituloException e) {
			setError(e.getMessage());
		}catch (Exception e)
		{
			logger.error("Error :",e);
			setError("Ocurrio un error");
		}
		return SUCCESS;
	}
	
	public Titulo getTitulo() {
		return titulo;
	}
	
	public void setTitulo(Titulo titulo) {
		this.titulo = titulo;
	}
	
	public List<Titulo> getTitulos() {
		return titulos;
	}
	public void setTitulos(List<Titulo> titulos) {
		this.titulos = titulos;
	}

	public String getTipoCambio() {
		return tipoCambio;
	}

	public void setTipoCambio(String tipoCambio) {
		this.tipoCambio = tipoCambio;
	}

	public String getIdsTipoCambio() {
		return idsTipoCambio;
	}

	public void setIdsTipoCambio(String idsTipoCambio) {
		this.idsTipoCambio = idsTipoCambio;
	}
	
	public String getError() {
		return error;
	}
	public void setError(String error) {
		this.error = error;
	}

	public CatalogoDTO getCategoriaTit() {
		return categoriaTit;
	}

	public void setCategoriaTit(CatalogoDTO categoriaTit) {
		this.categoriaTit = categoriaTit;
	}

	public CatalogoDTO getPagoCateg() {
		return pagoCateg;
	}

	public void setPagoCateg(CatalogoDTO pagoCateg) {
		this.pagoCateg = pagoCateg;
	}

	public String getNombreUnico() {
		return nombreUnico;
	}

	public void setNombreUnico(String nombreUnico) {
		this.nombreUnico = nombreUnico;
	}

	public String getDescTitulo() {
		return descTitulo;
	}

	public void setDescTitulo(String descTitulo) {
		this.descTitulo = descTitulo;
	}

	public Date getFechaInicio() {
		return fechaInicio;
	}

	public void setFechaInicio(Date fechaInicio) {
		this.fechaInicio = fechaInicio;
	}

	public String getMensaje() {
		return mensaje;
	}

	public void setMensaje(String mensaje) {
		this.mensaje = mensaje;
	}		

}
