LogicEvents.cs 7.04 KB
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using ControlPanel.Interfaces.Strategys;
using ControlPanel.Models;
using ControlPanel.Models.Extend;

using ControlPanel.Interfaces.Reposytorys;
using ControlPanel.NHInplimentRepository;
using ControlPanel.Contexts;
using ControlPanel.ImplimentStrateges;

namespace ControlPanel.LogicLayers
{
    public class LogicEvents
    {

        public static LogicEvents instance = new LogicEvents();
      

        #region _repositories
        private IEventsRepository  _eventrepository;
        private IAgkRepository _agkreposirory;
        private ILevelsRiversRepository _levelsriversrepository;
        private IRoutsRepository _routerepository;
        #endregion

        List<Event> lstEvents;
        List<ExtEvent> lstExtEvent;

        public LogicEvents()
        {
            if (_eventrepository == null)
                _eventrepository = new NHEventsRepository();


            if (_routerepository == null)
                _routerepository = new NHRoutsRepository();


        }

        #region ***Event***

   

        public void DeleteEventsByRoute(Route route)
        {

        
                if (_eventrepository == null)
                    _eventrepository = new NHEventsRepository();

                List<Event> _event = _eventrepository.GetEventByRoute(route).ToList();

             foreach (Event _ev in _event) 
                {
                     
                     try
                     {
                         _eventrepository.Delete(_ev);
                     }
                     catch (Exception)
                     {
                     }
                  
                }

                

      


        }



        /// <summary>
        ///  События за выбранную дату 
        /// </summary>
        /// <returns></returns>
        public List<ExtEvent> GetEvents(DateTime dt)
        {
            try
            {
                lstEvents = _eventrepository.GetByPropertyName("s1", dt.ToString("yyyy-MM-dd HH:mm:ss")).ToList();

                var context = new ContextConvert<Event>(new ConvertEventToExt<Event>());

                lstExtEvent = new List<ExtEvent>();

                foreach (Event evnt in lstEvents)
                {
                     ExtEvent extevent = context.ExecuteOperation(evnt) as ExtEvent;

                    lstExtEvent.Add(extevent);
                }

            }
            catch (Exception ex)
            {
               
            }

            return lstExtEvent;
        }



         public void Confirm(string id_webapi_message, string id_agk, string RegKey)
         {

        try
        {
            List<Route> lstRoute = LogicRouts.instance.GetRoutsByRegKey(RegKey);

            if ( _agkreposirory==null)
            _agkreposirory=new NHAgkRepository();

            Agk agk = _agkreposirory.GetAgkByNumber(Convert.ToInt32(id_agk));

            Route route = lstRoute.Find(x => x.RefRouteAgk.id == agk.id);

            if (_levelsriversrepository == null)
                _levelsriversrepository = new NHLevelsRiversRepository();

            LevelRiver levelriver = _levelsriversrepository.GetByID(Convert.ToInt32(id_webapi_message));

            Event evnt = _eventrepository.GetEventByRouteLevelRiver(route, levelriver);

            evnt.s3 = DateTime.Now;
            _eventrepository.SaveUpdate(evnt);

        }
        catch (Exception)
        {

        }


    }


      


        public void UpdateFieldS2(List<Route> lstRoute, List<LevelRiver> lstLevelRiver)
        {
            foreach (Route route in lstRoute)
            {

                foreach (LevelRiver levelriver in lstLevelRiver)
                {
                    if (_eventrepository==null)
                        _eventrepository=new NHEventsRepository();

                    try
                    {

                        Event evnt = _eventrepository.GetEventByRouteLevelRiver(route, levelriver);
                        if (evnt != null)
                        {
                            evnt.s2 = DateTime.Now;
                            _eventrepository.SaveUpdate(evnt);
                        }
                    }
                    catch (Exception ex)
                    {
              
                    }
                }


            }


        }



        public int Count( string date, int id_route, bool isconfirm)
        {
            int count = 0;

            try
            {
                Route route = _routerepository.GetByID(id_route);
                count = _eventrepository.Count(date,route,isconfirm);
            }
            catch (Exception)
            {

            }
            

            return count;
        }






      public  Event GetByIdRouteAndIdMessage(Route route, LevelRiver lastduplicate)
        {

            Event _event = null;

            try
            {
                if (_eventrepository == null)
                    _eventrepository = new NHEventsRepository();


                _event = _eventrepository.GetEventByRouteLevelRiver(route, lastduplicate);
                
            }
            catch (Exception)
            {

            }


            return _event;
        }


      public List<Event> GetEventsByRouteAndNotConfirm(Route route)
      {

          List<Event>  result = null;

          try
          {
              if (_eventrepository == null)
                  _eventrepository = new NHEventsRepository();


              result = _eventrepository.GetEventsByRouteAndNotConfirm(route).ToList();

          }
          catch (Exception)
          {

          }


          return result;


      }


      public Event GetLastEventByRoute(Route route)
      {
          Event result = null;
          try
          {
               if (_eventrepository == null)
                  _eventrepository = new NHEventsRepository();

               result = _eventrepository.GetLastEventByRoute(route);
                  

          }
          catch (Exception)
          {


          }
          return result;


      }

        
        /// <summary>
        ///  Лог событий 
        /// </summary>
        /// <returns></returns>
       
        public List<ExtEvent> Log(int page, int start, int limit, string date, int id_route, bool isconfirm)
        {
            List<ExtEvent> result = new List<ExtEvent>();
            try
            {

                Route route = _routerepository.GetByID(id_route);

                List<Event> lstEvent = _eventrepository.GetLog(page, start, limit * page, date, route, isconfirm).ToList();


                foreach (Event _event in lstEvent)
                {
                    var context = new ContextConvert<Event>(new ConvertEventToExt<Event>());
                    ExtEvent extevent = context.ExecuteOperation(_event) as ExtEvent;

                    if (extevent != null)
                        result.Add(extevent);

                }

 

            }
            catch (Exception)
            {


            }

            return result;
        }


        #endregion



    }
}