using QM.KJGH.CGGL.IRepository;
using QM.KJGH.CGGL.Model.CGSBT;
using QM.KJGH.Gis.PyServer;
using QM.KJGH.Model.Enums;
using QM.KJGH.Model.KJGH;
using QM.KJGH.Model.KJGH.CGHJ;
using QM.OrmSqlSugar;
using System;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
using WS;
using WS.Helper;
using WS.Log;

namespace QM.KJGH.CgglService.Managers
{
    /// <summary>
    /// 成果查询
    /// </summary>
    public class CgcxManager : ICgcxManager
    {
        private readonly ICghjCgsbrwYbcgRepository _ICghjCgsbrwYbcgRepository;
        private readonly ICghjCgsbrwDbcgRepository _ICghjCgsbrwDbcgRepository;
        public CgcxManager(
           ICghjCgsbrwYbcgRepository ICghjCgsbrwYbcgRepository
           , ICghjCgsbrwDbcgRepository ICghjCgsbrwDbcgRepository
           )
        {
            _ICghjCgsbrwYbcgRepository = ICghjCgsbrwYbcgRepository;
            _ICghjCgsbrwDbcgRepository = ICghjCgsbrwDbcgRepository;
        }

        /// <summary>
        /// 同步
        /// </summary>
        /// <returns></returns>
        public void Sync()
        {
            CghjCgcxIo io = new CghjCgcxIo();
            try
            {
                _ICghjCgsbrwYbcgRepository.DbClient().BeginTran();
                io.GHLX = EnumGHLXZzQ.总体规划.Description();
                io.ToPlanType();
                _ICghjCgsbrwYbcgRepository.DbClient().Deleteable<CghjCgsbrwYbcg>(t => t.GHLX == io.GHLX).ExecuteCommand();
                _ICghjCgsbrwYbcgRepository.DbClient().Deleteable<CghjCgsbrwDbcg>(t => t.GHLX == io.GHLX).ExecuteCommand();
                _ICghjCgsbrwYbcgRepository.Sync(io);
                _ICghjCgsbrwDbcgRepository.Sync(io);
                _ICghjCgsbrwYbcgRepository.DbClient().CommitTran();
            }
            catch (Exception ex)
            {
                _ICghjCgsbrwYbcgRepository.DbClient().RollbackTran();
                RunLog.Error(ex, $"{ServiceConsts.ServiceName}执行总体规划成果同步异常!");
            }

            try
            {
                _ICghjCgsbrwYbcgRepository.DbClient().BeginTran();
                io.GHLX = EnumGHLXZzQ.村庄规划.Description();
                io.ToPlanType();
                _ICghjCgsbrwYbcgRepository.DbClient().Deleteable<CghjCgsbrwYbcg>(t => t.GHLX == io.GHLX).ExecuteCommand();
                _ICghjCgsbrwYbcgRepository.DbClient().Deleteable<CghjCgsbrwDbcg>(t => t.GHLX == io.GHLX).ExecuteCommand();
                _ICghjCgsbrwYbcgRepository.Sync(io);
                _ICghjCgsbrwDbcgRepository.Sync(io);
                _ICghjCgsbrwYbcgRepository.DbClient().CommitTran();
            }
            catch (Exception ex)
            {
                _ICghjCgsbrwYbcgRepository.DbClient().RollbackTran();
                RunLog.Error(ex, $"{ServiceConsts.ServiceName}执行村庄规划成果同步异常!");
            }

            //io.GHLX = EnumGHLXZzQ.乡镇规划.Description();
            //io.ToPlanType();
            //_ICghjCgsbrwYbcgRepository.Sync(io);
            //_ICghjCgsbrwDbcgRepository.Sync(io);

            //io.GHLX = EnumGHLXZzQ.专项规划.Description();
            //io.ToPlanType();
            //_ICghjCgsbrwYbcgRepository.Sync(io);
            //_ICghjCgsbrwDbcgRepository.Sync(io);

            //io.GHLX = EnumGHLXZzQ.详细规划.Description();
            //io.ToPlanType();
            //_ICghjCgsbrwYbcgRepository.Sync(io);
            //_ICghjCgsbrwDbcgRepository.Sync(io);
        }
    }
}