NHRoutsRepository.cs 5.42 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;


namespace ControlPanel.NHInplimentRepository
{
    public class NHRoutsRepository : NHMainRepository<Route>, IRoutsRepository
    {

      
          IList<Route> IRoutsRepository.GetLog(int start, int limit, Subscribers subscribers)
        {
            IList<Route> list;
            using (ISession session = GetNHBSession())
            {
                session.BeginTransaction();

                    if (subscribers != null)
                    {
                            list = session.CreateCriteria(typeof(Route))
                                .Add(Restrictions.Eq("RefRouteSzs", subscribers))
                                .SetFirstResult(start)
		                        .SetMaxResults(limit-start+1)
                                .List<Route>();
                    }
                    else
                    {
                        list = session.CreateCriteria(typeof(Route))
                        .SetFirstResult(start)
		                .SetMaxResults(limit-start+1)
                        .List<Route>();
                    }
                session.Transaction.Commit();

            }
            return list;
        }
       


        
        
        
        int IRoutsRepository.Count(Subscribers subscriber)
        {
            int count = 0;

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

                if (subscriber != null)
                {
                        var rowCount = session.CreateCriteria(typeof(Route))
                             .Add(Restrictions.Eq("RefRouteSzs", subscriber))
                             .SetProjection(Projections.RowCount()).FutureValue<Int32>();
                        try
                        {
                            count = rowCount.Value;
                        }
                        catch (Exception)
                        {
                        }
                }
                else
                {
                        var rowCount = session.CreateCriteria(typeof(Route))
                              .SetProjection(Projections.RowCount()).FutureValue<Int32>();
                        try
                        {
                            count = rowCount.Value;
                        }
                        catch (Exception)
                        {
                        }
                }
                session.Transaction.Commit();
            }

            return count;

        }
     
        
        int IRoutsRepository.CountSubscribeAgks(int id_szs, bool enabled)
        {
            int count = 0;
            using (ISession session = GetNHBSession())
            {
                session.BeginTransaction();

                    var rowCount = session.CreateCriteria(typeof(Route))
                         .Add(Expression.Eq("id_szs", id_szs))
                         .Add(Expression.Eq("enabled", enabled))
                         .SetProjection(Projections.RowCount()).FutureValue<Int32>();
                    
                        count = rowCount.Value;
   
            session.Transaction.Commit();
            }

            return count;

        }





        Route IRoutsRepository.RouteByIdAgkIdSubscrivers(Agk agk, Subscribers subscriber)
        {

              Route result = null;

            IList<Route> list = null;

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

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

       }
            
     

        List<Route> IRoutsRepository.GetRoutsByAgk(Agk agk,bool enabled)
        {
            List<Route> lstRoute = null;
            using (ISession session = GetNHBSession())
            {
                session.BeginTransaction();

                var result = session.CreateCriteria(typeof(Route))
                      .Add(Restrictions.Eq("RefRouteAgk", agk))
                     .Add(Expression.Eq("enabled", enabled))
                       .List<Route>();

                lstRoute = result as List<Route>;

                session.Transaction.Commit();
            }

            return lstRoute;

        }


        List<Route> IRoutsRepository.GetRoutsBySubscribers(Subscribers subscriber, bool enabled)
        {

            List<Route> lstRoute = null;
            using (ISession session = GetNHBSession())
            {
                session.BeginTransaction();

                var result = session.CreateCriteria(typeof(Route))
                     .Add(Expression.Eq("enabled", enabled))
                       .List<Route>();

                lstRoute = result as List<Route>;

                lstRoute = lstRoute.FindAll(x => x.RefRouteSzs.Id == subscriber.Id);

                session.Transaction.Commit();
            }

            return lstRoute;

        }






    }
}