LogicUpdInfo.cs 6.8 KB
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using ControlPanel.Models;
using ControlPanel.Models.Extend;
using ControlPanel.Interfaces;
using ControlPanel.Interfaces.Reposytorys;
using ControlPanel.NHInplimentRepository;
using ControlPanel.ImplimentStrateges;
using ControlPanel.Contexts;

namespace ControlPanel.LogicLayers
{
    public class LogicUpdInfo
    {

        public static LogicUpdInfo instance = new LogicUpdInfo();


        private IUpdInfoRepository _updinforepository;

        public LogicUpdInfo()
        {
            if (_updinforepository == null)
                _updinforepository = new NHUpdInfoRepository();




        }


        public int Count()
        {
            int count = 0;
            try
            {
                count = _updinforepository.Count();
            }
            catch (Exception)
            {


            }

            return count;
        }


        public void InitTableInfo()
        {

            List<UpdInfo> lstUpdInfo = _updinforepository.GetAll().ToList();
            // Если в база еще не заполнена, то заполныем
            if (lstUpdInfo.Count == 0)
            {
                List<Subscribers> lstSubscriber = LogicSubscribers.instance.GetSubscribers();

                if (_updinforepository == null)
                    _updinforepository = new NHUpdInfoRepository();

                foreach (Subscribers subscriber in lstSubscriber)
                {
                    UpdInfo updinfo = new UpdInfo { 
	                                    RefUpdInfoSzs=subscriber,
	                                    dtupdsoft=DateTime.Now,
	                                    dtupddb=DateTime.Now,
	                                    isupdszs=false,  //  софт обновлен
	                                    isupddb=false,   // база данных обновлена 
	                                    isdownload=false // перекачка файлов завершена 
                    };
                    _updinforepository.Save(updinfo);

                }
            }

        }


        public UpdInfo GetBySubsriber(Subscribers subscriber)
        {
            UpdInfo result = null;

            try
            {
                if (_updinforepository == null)
                    _updinforepository = new NHUpdInfoRepository();

                result = _updinforepository.GetBySubscriber(subscriber);

            }
            catch (Exception)
            {

            }

            return result;

        }

        public List<UpdInfoExt> GetLog(int page, int start, int limit)
        {
            List<UpdInfoExt> result = new List<UpdInfoExt>();

            try
            {

                if (_updinforepository == null)
                    _updinforepository = new NHUpdInfoRepository();


                List<UpdInfo> lstUpdInfo = _updinforepository.GetLog(start, limit * page).ToList();


                foreach (UpdInfo _updinfo in lstUpdInfo)
                {
                    var context = new ContextConvert<UpdInfo>(new ConvertUpdInfoToExt<UpdInfo>());
                    UpdInfoExt updinfoext = context.ExecuteOperation(_updinfo) as UpdInfoExt;

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

                }
            }
            catch (Exception)
            {


            }
            return result;
        }



        #region -----------------  Функции для обновления таблицы InfoUpdate-------------

        /// <summary>
        /// Обновление ПО на СЗС
        /// </summary>
        /// <param name="RegKey"></param>
        /// <param name="isupdszs"></param>
        public void SetIsUpdSzs(string RegKey, bool isupdszs)
        {
            if (_updinforepository == null)
                _updinforepository = new NHUpdInfoRepository();
            try
            {
                List<Subscribers> lstSubscriber = LogicSubscribers.instance.GetSubByRegKey(RegKey).ToList();

                UpdInfo updinfo = _updinforepository.GetBySubscriber(lstSubscriber[0]);

                if (isupdszs)
                    updinfo.dtupdsoft = DateTime.Now;

                updinfo.isupdszs = isupdszs;
                _updinforepository.SaveUpdate(updinfo);

            }
            catch (Exception)
            {

            }


        }
        /// <summary>
        /// Обновление базы данных на сзс
        /// </summary>
        /// <param name="RegKey"></param>
        /// <param name="isupddb"></param>
        public void SetIsUpdDb(string RegKey, bool isupddb)
        {
            if (_updinforepository == null)
                _updinforepository = new NHUpdInfoRepository();
            try
            {
                List<Subscribers> lstSubscriver = LogicSubscribers.instance.GetSubByRegKey(RegKey).ToList();
                UpdInfo updinfo = _updinforepository.GetBySubscriber(lstSubscriver[0]);
                updinfo.isupddb = isupddb;

                if (isupddb)
                    updinfo.dtupddb = DateTime.Now;


                _updinforepository.SaveUpdate(updinfo);

            }
            catch (Exception)
            {

            }


        }
        /// <summary>
        ///  Перекачка с главного сервера ПО и БД 
        /// </summary>
        /// <param name="RegKey"></param>
        /// <param name="isdownload"></param>
        public void SetisUpdDownload(string RegKey, bool isdownload)
        {
            if (_updinforepository == null)
                _updinforepository = new NHUpdInfoRepository();
            try
            {
                List<Subscribers> lstSubscriver = LogicSubscribers.instance.GetSubByRegKey(RegKey).ToList();

                UpdInfo updinfo = LogicUpdInfo.instance.GetBySubsriber(lstSubscriver[0]);
                updinfo.isdownload = isdownload;
                _updinforepository.SaveUpdate(updinfo);


            }
            catch (Exception)
            {

            }

        }

        #endregion



        /// <summary>
        ///  Обновление модели обновлений
        /// </summary>
        /// <param name="id"></param>
        /// <param name="isupdszs"></param>
        /// <param name="isupddb"></param>
        /// <param name="isdownload"></param>
        public void Edit(int id, bool isupdszs, bool isupddb, bool isdownload)
        {
            try
            {
                UpdInfo updinfo = _updinforepository.GetByID(id);

                updinfo.isdownload = isdownload;
                updinfo.isupddb = isupddb;
                updinfo.isupdszs = isupdszs;

               _updinforepository.SaveUpdate(updinfo);

            }
            catch (Exception)
            {


            }

        }



        }
 }