LogicAgk.cs 5.46 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 LogicAgk
    {

        public static LogicAgk instance = new LogicAgk();

      

        #region _repositories
        private IAgkRepository  _agkrepository;
        #endregion

        public LogicAgk()
        {
            if (_agkrepository == null)
                _agkrepository = new NHAgkRepository();
        }

        #region ***AGK***


        /// <summary>
        /// 
        /// </summary>
        /// <param name="page"></param>
        /// <param name="start"></param>
        /// <param name="limit"></param>
        /// <returns></returns>
        public List<Agk> Log(int page, int start, int limit)
        {
            List<Agk> result = new List<Agk>();

            try
            {
                result = _agkrepository.GetLog(start, limit * page).ToList();

            }
            catch (Exception)
            {

            }

            return result;
        }


        public int Count()
        {
            int count = 0;

            try
            {
                count = _agkrepository.Count();

            }
            catch (Exception)
            {

            }

            return count;
        }


        public List<Agk> GetAgksEnableByRegKey(string RegKey)
        {
            List<Agk> res = new List<Agk>();

            try
            {


            }
            catch (Exception ex)
            {

               
            }


            return res;

        }

        public void Correct()
        {
          List<Agk> lstAgk=  _agkrepository.GetAll().ToList();

       
           
            
            foreach (Agk agk in lstAgk)
            _agkrepository.Delete(agk);

         List<int> lst = new List<int>();

         
          foreach (Agk agk in lstAgk)
              lst.Add(agk.number);

          var newlist = new List<int>(lst.Distinct());
           
            
      





            // Добавление 
          foreach (int number in newlist)
          {
              Agk agk = new Agk { number = number, river = "Test-" + number.ToString() };

              _agkrepository.Save(agk);

          }
            
            

           
            

        }


        /// <summary>
        /// 
        /// </summary>
        /// <returns></returns>
        public List<ExtAgk> GetExtAgk()
        {

            List<ExtAgk> result = new List<ExtAgk>();

            try
            {

                List<Agk> lstAgk = _agkrepository.GetAll().ToList();

                var context = new ContextConvert<Agk>(new ConvertAgkToExt<Agk>());

                foreach (Agk agk in lstAgk)
                {
                    ExtAgk extagk = context.ExecuteOperation(agk) as ExtAgk;

                    result.Add(extagk);
                }
                 
            
            
            }
            catch (Exception ex)
            {


            }


            return result;

        }



        public Agk GetByNumber(int number)
        {
            return _agkrepository.GetAgkByNumber(number);

        }

            
        
        
        /// <summary>
        /// Получаем все АГК 
        /// </summary>
        /// <returns></returns>
        public List<Agk> GetAgks()
        {
            return _agkrepository.GetAll().ToList();

        }

        /// <summary>
        /// АГК по ID
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public Agk GetById(int id)
        {
            return _agkrepository.GetByID(id);

        }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="obj"></param>
        public void Add(Agk obj)
        {
            try
            {
                if (_agkrepository == null)
                    _agkrepository = new NHAgkRepository();

                Agk objexist = GetByNumber(obj.number);

                if (objexist == null)
                {
                    _agkrepository.Save(obj);
                }
                else
                {
                    objexist.river = obj.river;
                    Update(objexist);

                }
            }
            catch (Exception)
            {

            }

        }
        /// <summary>
        /// 
        /// </summary>
        /// <param name="obj"></param>
        public void Update(Agk obj)
        {

            try
            {
                if (_agkrepository == null)
                    _agkrepository = new NHAgkRepository();

                _agkrepository.SaveUpdate(obj);
            }
            catch (Exception)
            {


            }

        }
     

        /// <summary>
        /// Удаление АГК 
        /// </summary>
        /// <param name="obj"></param>
        /// <returns></returns>
        public string Delete(object obj)
        {
            string error = null;
            try
            {
                _agkrepository.Delete(obj as Agk);
            }
            catch (Exception ex)
            {
                error = "Ошибка при удалении АГК";
           
            }

            return error;
        }
        #endregion


    }
}