using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Net;

using FObjBase;
using Misc;
using FLY.FeedbackRenZiJia.Server.Model;

namespace FLY.FeedbackRenZiJia.Server
{
    public class TDGage
    {
        #region 参数--------------------------------------------------------------------
        #region 初始化------------------------------------------------------------------
        public string mParamDirectory;//参数目录 m_path;//数据文件的 根目录默认是 Gage1
        public string mName;//名字 如:gage0
        #endregion
        #region 本地数据----------------------------------------------------------------
        public SysParam mSysParam;
        public FeedbackHeat mfeedback;
        #endregion
        #region 服务器数据--------------------------------------------------------------

       
        public FLY.Thick.Blowing.Client.BlowingServiceClient mRenZiJia;

        public FLY.Thick.Blowing.Client.BlowingDetectServiceClient mBDetect;

        /// <summary>
        /// 报警系统
        /// </summary>
        public FLY.OBJComponents.Server.WarningSystem mWarning;

        public HistoryDb mHistoryDb;

        DbModel mDbModel;
        
        #endregion
        #endregion


        public TDGage(string nam)
        {
            mName = nam;
            mParamDirectory = mName;// @"D:\" + m_name;

            if (!System.IO.Directory.Exists(mParamDirectory))
            {
                System.IO.Directory.CreateDirectory(mParamDirectory);
            }
            System.Environment.CurrentDirectory = mParamDirectory;


            Init1();

        }


        #region Init登陆服务器初始化----------------------------------------------------
        /// <summary>
        /// 第1步, 加载本地数据
        /// </summary>
        public void Init1()
        {
            mSysParam = new SysParam();

            #region 与服务器同步的数据
            

            mRenZiJia = new FLY.Thick.Blowing.Client.BlowingServiceClient(FLY.Thick.Blowing.OBJ_INTERFACE.OBJ_INTERFACE_ID.RENZIJIA_ID);

            mBDetect = new Thick.Blowing.Client.BlowingDetectServiceClient(FLY.Thick.Blowing.OBJ_INTERFACE.OBJ_INTERFACE_ID.BDETECT_ID);
            #endregion

            #region 提取保存的数据

            //---------------------------------------------------------------------------------------------------------------
            //数据库
            mDbModel = new DbModel();
            mDbModel.Init();

            mHistoryDb = new HistoryDb();
            mHistoryDb.Init(mDbModel);
            mHistoryDb.KeepDBSize(mSysParam.DBKeepMonth);
            //PollModule.Current.Poll_Config(PollModule.POLL_CONFIG.ADD, () =>
            //{
            //    //避免1个月都不关程序,每天检查一次
            //    mHistoryDb.KeepDBSize(mSysParam.DBKeepMonth);
            //}, TimeSpan.FromDays(1));

            //---------------------------------------------------------------------------------------------------------------
            //Warning_Create
            mWarning = new FLY.OBJComponents.Server.WarningSystem();
            mWarning.Init(mHistoryDb.ErrorBuffer);
            Misc.BindingOperations.SetBinding(mWarning, "IsRinging", () =>
            {
                //报警不动作
                if (mWarning.IsRinging)
                {

                }
                else
                {

                }
            });


            mfeedback = new FeedbackHeat();


            mfeedback.Init(
                mRenZiJia,
                mBDetect,
                mWarning,
                mHistoryDb
                );
            

            #endregion

            Init2();
        }

        /// <summary>
        /// 第2步, 连接到服务器,初始化参数 。由界面的 【登陆】 按钮触发
        /// </summary>
        private void Init2()
        {
            #region 网络初始化
            FObjSys.Current.Connect_to_Another_OBJSys( 
                mSysParam.ServerIPEP, 
                mRenZiJia.ID,
                mBDetect.ID
                );

            #endregion
        }

        #endregion

    }
}