view Agendas/trunk/src/Agendas.Repositories.NHibernate/EventoRepository.cs @ 256:12d72efb43ca

Combinar
author juanjose.montesdeocaarbos
date Tue, 18 Oct 2011 07:26:59 -0300
parents 70c5cab59054
children
line wrap: on
line source

using System;
using System.Collections.Generic;
using System.Linq;
using AltNetHispano.Agendas.Domain;
using AltNetHispano.Agendas.Domain.Repositories;
using NHibernate;
using NHibernate.Linq;

namespace AltNetHispano.Agendas.Repositories.NHibernate
{
	public class EventoRepository : RepositoryBase<Evento>, IEventoRepository
	{
		public EventoRepository(ISessionFactory sessionFactory) : base(sessionFactory)
		{
		}

		public void Delete(Evento evento)
		{
			Session.Delete(evento);
		}

		public IList<Evento> GetActivos()
		{
			return
				Session.QueryOver<Evento>().Where(
					e =>
					e.Estado != EventoPublicadoState.GetInstance()).List();
		}

		public Evento GetPropuestaByTitulo(string titulo)
		{
			return Session.QueryOver<Evento>().Where(e => e.Estado == EventoPropuestoState.GetInstance() && e.Titulo==titulo).SingleOrDefault();
		}

	    public Evento GetNoPropuestoByTitulo(string titulo)
	    {
	        return
	            Session.QueryOver<Evento>().Where(e => e.Estado != EventoPropuestoState.GetInstance() && e.Titulo == titulo)
	                .SingleOrDefault();
	    }

	    public void Update(Evento evento)
		{
			//No es necesario implementarlo
		}

	    public bool ExistePonente(Persona ponente)
	    {
            return Session.Query<Evento>().Where(ev => ev.Ponentes.Contains(ponente)).Any();
	    }

	    public IList<Evento> GetByState(EventoState state)
		{
			return Session.QueryOver<Evento>().Where(e => e.Estado == state).List();
		}
	}
}