/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.rjconsultores.ventaboletos.dao.hibernate;

import java.util.List;

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.hibernate.Criteria;
import org.hibernate.Query;
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.UsuarioSesionDAO;
import com.rjconsultores.ventaboletos.entidad.Usuario;
import com.rjconsultores.ventaboletos.entidad.UsuarioSesion;

/**
 *
 * @author RJ Consultores
 */
@Repository("usuarioSesionDAO")
public class UsuarioSesionHibernateDAO extends GenericHibernateDAO<UsuarioSesion, Integer> implements UsuarioSesionDAO {
	private static final Logger log = LogManager.getLogger(UsuarioSesionHibernateDAO.class);

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

    @Override
    public List<UsuarioSesion> obtenerTodos() {
        Criteria c = getSession().createCriteria(getPersistentClass());
        c.add(Restrictions.eq(ACTIVO, Boolean.TRUE));

        return c.list();
    }

	@Override
	public List<UsuarioSesion> buscar(Usuario usuario) {
		return this.findByCriteria(Restrictions.eq("usuario", usuario),Restrictions.eq(ACTIVO, Boolean.TRUE));
	}
	
	@Override
	public void liberarUsuario(Usuario usuario) {
		Query query = getSession().createQuery("UPDATE UsuarioSesion set indFirmado = false where usuario =:usuario");
		query.setParameter("usuario", usuario);
		int i = query.executeUpdate();
		log.info("qtdLiberada="+i);
	}
}
