using FLY.OBJComponents.Server;
using FLY.OBJComponents.Server.OBJProxy;
using FLY.Weight2.Server.Model;
using FLY.Weight2.Server.OBJProxy;
using FObjBase;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Text;

namespace FLY.Weight2.Server
{
    public class TDGage
    {
        #region 初始化------------------------------------------------------------------
        public string mParamDirectory;//参数目录 m_path;//数据文件的 根目录默认是 Gage1
        public string mName;//名字 如:gage0
        #endregion

        #region 本地数据----------------------------------------------------------------
        public SysParam mSysParam;
        public WeightSystem mData;
        public HistoryDb mHistoryDb;
        /// <summary>
        /// 报警系统
        /// </summary>
        public WarningSystem mWarning;

        DbModel mDbModel;
        #endregion

        #region 服务器数据--------------------------------------------------------------

        /// <summary>
        /// 吹膜测厚仪, 旋转架模型
        /// </summary>
        public FLY.Thick.Blowing.Client.BlowingDetectServiceClient mBDetect;
        #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();

        }

        /// <summary>
        /// 第1步, 加载本地数据
        /// </summary>
        public void Init1()
        {
            mSysParam = new SysParam();

            mData = new WeightSystem();
            //---------------------------------------------------------------------------------------------------------------
            //数据库
            mDbModel = new DbModel();
            mDbModel.Init();
            mDbModel.KeepDBSize(mSysParam.DBKeepMonth);
            mHistoryDb = new HistoryDb();
            mHistoryDb.Init(mDbModel);

            mWarning = new WarningSystem();
            mWarning.Init(mHistoryDb.ErrorBuffer);

            mData.Init(mHistoryDb, mWarning);

            #region 与服务器同步的数据

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

            #endregion

            Init2();

            mBDetect.PropertyChanged += MBDetect_PropertyChanged;
        }

        private void MBDetect_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
        {
            if (e.PropertyName == nameof(mBDetect.FilmVelocity))
            {
                mData.Accessory.CurrentVelocitySet = (((int)(mBDetect.FilmVelocity * 10)) / 10.0f);
            }
        }

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

            var addr = Misc.StringConverter.ToIPEndPoint(mSysParam.BlowingAddr);
            FObjSys.Current.Connect_to_Another_OBJSys(
                addr,
                mBDetect.ID
                );
            #endregion
        }

    }
}