NHLevelsRiversRepository.cs 5.13 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 NHLevelsRiversRepository: NHMainRepository<LevelRiver>, ILevelsRiversRepository
    {



        LevelRiver ILevelsRiversRepository.GetByAgkAndMax(Agk agk)
        {
          LevelRiver result = null;

                using (ISession session = GetNHBSession())
                {
                    session.BeginTransaction();
                    int res = (int)session.CreateCriteria(typeof(LevelRiver))
                        .Add(Restrictions.Eq("RefMessageAgk", agk))
                        //  .Add(Expression.Eq("causeevent", status))
                        .SetProjection(Projections.Max("id")).UniqueResult();

                    result = session.Get<LevelRiver>(res);
                 


                    session.Transaction.Commit();
                }
             return result;
        }




        /// <summary>
        /// Проверка на дублирования события с учетом статуса OpenDoor
        /// </summary>
        /// <param name="status"></param>
        /// <param name="repair"></param>
        /// <param name="opendoor"></param>
        /// <param name="agk"></param>
        /// <returns></returns>
        bool ILevelsRiversRepository.FlagLastDuplicate(string status,bool repair, bool opendoor, Agk agk)
        {
            bool flag = false;

            try
            {
                LevelRiver result = null;

                using (ISession session = GetNHBSession())
                {
                    session.BeginTransaction();
                    int res = (int)session.CreateCriteria(typeof(LevelRiver))
                        .Add(Restrictions.Eq("RefMessageAgk", agk))    
                        .SetProjection(Projections.Max("id")).UniqueResult();

                    LevelRiver obj = session.Get<LevelRiver>(res);
                    if (obj != null)
                    {
                        if (obj.causeevent != status || obj.repair!=repair || obj.opendoor!=opendoor )
                            flag = false;
                        else
                            flag = true;
                    }
                    else
                    {
                        flag = false;
                    }
                    session.Transaction.Commit();
                }
            }
            catch (Exception)
            {
            }
            return flag;
        }


        LevelRiver ILevelsRiversRepository.LastDuplicate(string status, bool repair, bool opendoor, Agk agk)
        {
            LevelRiver result = null;
            try
            {
                using (ISession session = GetNHBSession())
                {
                    session.BeginTransaction();
                    int res = (int)session.CreateCriteria(typeof(LevelRiver))
                        .Add(Restrictions.Eq("RefMessageAgk", agk))
                        .SetProjection(Projections.Max("id")).UniqueResult();

                    LevelRiver obj = session.Get<LevelRiver>(res);
                    if (obj != null)
                    {
                        if (obj.causeevent == status &&  obj.repair==repair && obj.opendoor==opendoor)
                            result = obj;
                        else
                            result = null;
                    }
                    else
                    {
                        result = null;
                    }

                    session.Transaction.Commit();
                }

            }
            catch (Exception)
            {

            }
            return result;

        }


        IList<LevelRiver> ILevelsRiversRepository.ActualLevelsRiversByAgk(Agk agk, LevelRiversEmpty obj)
            {
                IList<LevelRiver> result=null;
                using (ISession session = GetNHBSession())
                {
                    session.BeginTransaction();
                  
                    result = session.CreateCriteria(typeof(LevelRiver))
                       .Add(Restrictions.Eq("RefMessageAgk", agk))
                       .Add(Expression.Between("datetimedevice", obj.dt, DateTime.Now))
                       .List<LevelRiver>();
                    session.Transaction.Commit();
                }
                    return result;
            }




        IList<LevelRiver> ILevelsRiversRepository.ActualLevelsRiversByAgk(Agk agk)
        {
            IList<LevelRiver> result = null;


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

                result = session.CreateCriteria(typeof(LevelRiver))
                   .Add(Restrictions.Eq("RefMessageAgk", agk))
                   .List<LevelRiver>();

                session.Transaction.Commit();
            }
            return result;
        }


    }
}