package com.rjconsultores.ventaboletos.dao.hibernate;

import org.apache.commons.lang.math.NumberUtils;
import org.hibernate.Query;
import org.hibernate.SessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Repository;

import com.rjconsultores.ventaboletos.dao.FolioPreimpresoDAO;
import com.rjconsultores.ventaboletos.entidad.Empresa;
import com.rjconsultores.ventaboletos.entidad.Estacion;
import com.rjconsultores.ventaboletos.entidad.FolioPreimpreso;

@Repository("folioPreimpresoDAO")
public class FolioPreimpresoHibernateDAO extends GenericHibernateDAO<FolioPreimpreso, Integer> implements FolioPreimpresoDAO {

	@Autowired
	public FolioPreimpresoHibernateDAO(@Qualifier("sessionFactory") SessionFactory factory) {
		setSessionFactory(factory);
	}

	@Override
	public FolioPreimpreso buscaFolioPreImpressoEstacionImpresora(Estacion estacion, Empresa empresa) {

		StringBuffer hql = new StringBuffer();
		hql.append("   FROM FolioPreimpreso fp ");
		hql.append("  WHERE fp.estacion.estacionId = :estacionId ");
		hql.append("    AND fp.empresa.empresaId = :empresaId ");
		hql.append("    AND fp.activo = :activo ");
		hql.append("  ORDER BY fecmodif DESC ");

		Query query = getSession().createQuery(hql.toString());
		query.setParameter("activo", Boolean.TRUE);
		query.setParameter("estacionId", estacion.getEstacionId());
		query.setParameter("empresaId", empresa.getEmpresaId());

		query.setMaxResults(NumberUtils.INTEGER_ONE);

		return (FolioPreimpreso) query.uniqueResult();

	}
}
