package com.rjconsultores.ventaboletos.dao.hibernate;

import org.hibernate.Criteria;
import org.hibernate.SessionFactory;
import org.hibernate.criterion.Restrictions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Repository;

import com.rjconsultores.ventaboletos.dao.PtovtaTipoEstoqueDAO;
import com.rjconsultores.ventaboletos.entidad.PtovtaTipoEstoque;

@Repository("ptovtaTipoEstoqueDAO")
public class PtovtaTipoEstoqueHibernateDAO extends GenericHibernateDAO<PtovtaTipoEstoque, Integer> implements PtovtaTipoEstoqueDAO {
	
	@Autowired
	public PtovtaTipoEstoqueHibernateDAO(@Qualifier("sessionFactory") SessionFactory factory) {
		setSessionFactory(factory);
	}

	@Override
	public PtovtaTipoEstoque buscarTipoSuprimento() {
		PtovtaTipoEstoque tipo = buscarTipo(PtovtaTipoEstoque.TIPO_SUMINISTRO);
		return tipo;
	}

	@Override
	public PtovtaTipoEstoque buscarTipoContabilidade() {
		PtovtaTipoEstoque tipo = buscarTipo(PtovtaTipoEstoque.TIPO_CONTABILIDAD);
		return tipo;
	}

	@Override
	public PtovtaTipoEstoque buscarTipoNormal() {
		PtovtaTipoEstoque tipo = buscarTipo(PtovtaTipoEstoque.TIPO_NORMAL);
		return tipo;
	}
	
	private PtovtaTipoEstoque buscarTipo(int tipo) {
		
		Criteria c = getSession().createCriteria(getPersistentClass());
		c.add(Restrictions.eq("ptovtatipoestId", tipo));
		
		return (PtovtaTipoEstoque) c.uniqueResult();
	}

}
