NHNotificationRepository.cs 2.41 KB
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using ControlPanel.Interfaces.Reposytorys;
using ControlPanel.Models;
using NHibernate;
using NHibernate.Cfg;
using NHibernate.Criterion;
using NHibernate.Tool.hbm2ddl;
using FluentNHibernate.Cfg.Db;
using FluentNHibernate.Automapping;
using ControlPanel.Interfaces.Reposytorys;


namespace ControlPanel.NHInplimentRepository
{
    public class NHNotificationRepository : NHMainRepository<Notification>, INotificationRepository
    {
        int INotificationRepository.Count()
        {
            int count = 0;

            using (ISession session = GetNHBSession())
            {
                session.BeginTransaction();
                    var rowCount = session.CreateCriteria(typeof(Notification))
                         .SetProjection(Projections.RowCount()).FutureValue<Int32>();
                    try
                    {
                        count = rowCount.Value;
                    }
                    catch (Exception)
                    {
                    }
                session.Transaction.Commit();
            }
            return count;

        }


        IList<Notification> INotificationRepository.GetLog(int start, int limit)
        {
            IList<Notification> list;
            using (ISession session = GetNHBSession())
            {
                session.BeginTransaction();


                list = session.CreateCriteria(typeof(Notification))
                        .SetFirstResult(start)
                        .SetMaxResults(limit - start + 1)
                         .AddOrder(Order.Asc("number"))
                        .List<Notification>();
              
              
                session.Transaction.Commit();

            }
            return list;
        }
       

        Notification INotificationRepository.GetByNumber(int number)
        {
            Notification result = null;

            IList<Notification> list = null;

            using (ISession session = GetNHBSession())
            {
                session.BeginTransaction();

                list = session.CreateCriteria(typeof(Notification))
                     .Add(Restrictions.Eq("number",number)).List<Notification>();
                if (list.Count != 0)
                    result = list[0];
                session.Transaction.Commit();
            }
            return result;       

        }

      
    }
}