package com.rjconsultores.ventaboletos.service.impl;

import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.rjconsultores.ventaboletos.dao.EstacionSitefDAO;
import com.rjconsultores.ventaboletos.entidad.Constante;
import com.rjconsultores.ventaboletos.entidad.Empresa;
import com.rjconsultores.ventaboletos.entidad.EstacionSitef;
import com.rjconsultores.ventaboletos.entidad.PuntoVenta;
import com.rjconsultores.ventaboletos.enums.TipoIntegracaoTEF;
import com.rjconsultores.ventaboletos.service.ConstanteService;
import com.rjconsultores.ventaboletos.service.EstacionSitefService;

/**
 * 
 * @author Lucas
 *
 */
@Service("estacionSitefService")
public class EstacionSitefServiceImpl implements EstacionSitefService {

	private static String VALIDA_DUPLICIDADE_SO_MESMA_AGENCIA= "VALIDA_DUPLICIDADE_SO_MESMA_AGENCIA";
	
	@Autowired
	private EstacionSitefDAO estacionSitefDAO;
	
	@Autowired
	private ConstanteService constanteService;
	
	

	@Override
	public EstacionSitef buscar(Empresa empresa, Integer numempresa, Integer numfilial, String numpdv) {
		return estacionSitefDAO.buscar(empresa, numempresa, numfilial, numpdv);
	}

	@Override
	public EstacionSitef buscar(Empresa empresa, TipoIntegracaoTEF tipoIntegracaoTEF, String numpdv, Integer numfilial) {
		return estacionSitefDAO.buscar(empresa, tipoIntegracaoTEF, numpdv, numfilial);
	}
	
	@Override
	public EstacionSitef parametrizacaoJahExiste(Empresa empresa, TipoIntegracaoTEF tipoIntegracaoTEF, String numpdv, Integer numfilial,PuntoVenta puntoVenta) {
		
		EstacionSitef estacionSitef = estacionSitefDAO.buscar(empresa, tipoIntegracaoTEF, numpdv, numfilial);
		
		if (estacionSitef == null){
			return null;
		}
		
		Constante constante = constanteService.buscarPorNomeConstante(VALIDA_DUPLICIDADE_SO_MESMA_AGENCIA);
		
		if (constante!= null && StringUtils.isNotBlank(constante.getValorconstante()) && constante.getValorconstante().equalsIgnoreCase("true")){
			if (!estacionSitef.getEstacion().getPuntoVenta().equals(puntoVenta)){
				return null;
			}
			
		}
		
		return estacionSitef;
		
	}

}
