using Admin.Core.Common;
using Admin.Core.IRepository;
using Admin.Core.IService;
using Admin.Core.Model;
using Admin.Core.Model.Model_New;
using Admin.Core.Model.ViewModels;
using Admin.Core.Service;
using log4net;
using NPOI.SS.Formula.Functions;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection.Emit;
using System.Threading.Tasks;

namespace Admin.Core.IService
{
    /// <summary>
    /// SysUserInfoServices
    /// </summary>	
    public class SysUserInfoServices : BaseServices<SysUserInfo>, ISysUserInfoServices
    {
        private readonly IBaseRepository<SysUserInfo> _dal;
        private readonly ISysUserInfoRepository _sysUserInfoRepository;
        public SysUserInfoServices(IBaseRepository<SysUserInfo> dal, ISysUserInfoRepository sysUserInfoRepository)
        {
            this._dal = dal;
            base.BaseDal = dal;
            _sysUserInfoRepository = sysUserInfoRepository;
        }
        public async Task<List<CurrentTeamTimeView>> GetTeamData()
        {
            return await _sysUserInfoRepository.GetTeamData();

        }
        public async Task<CurrentTeamTimeView> GetTeamData(DateTime nowDate)
        {
            var list = await _sysUserInfoRepository.GetTeamData();
            if (list.Count() == 0) return null;

            CurrentTeamTimeView view = list.SingleOrDefault(d => d.StartTime <= nowDate && nowDate <= d.EndTime);
            if (view != null)
                return view;
            else
                return null;
        }
        /// <summary>
        /// 根据工位获取所有值
        /// </summary>
        /// <param name="code"></param>
        /// <returns></returns>
        public async Task<ProductInfoView> GetStationData(string code)
        {
            string productLineCode = Appsettings.app("StationInfo", "ProductLineCode");
            var list = await _sysUserInfoRepository.GetStationData(code);
            if (list == null) return null;
            var obj = list.SingleOrDefault(d => d.ProductLineCode == "productLineCode");
            return obj;
        }
        /// <summary>
        /// 根据产线查询 公司、产线、工序、工位
        /// </summary>
        /// <param name="productLineCode"></param>
        /// <returns></returns>
        public async Task<ProductLineInfoView> GetProductLineInfo(string productLineCode)
        {
            var list = await _sysUserInfoRepository.GetProductLineInfo(productLineCode);
            if (list == null) return null;
            var obj = list.SingleOrDefault(d => d.ProductlineCode == productLineCode);
            return obj;
        }

        /// <summary>
        /// 统计前后板数据
        /// </summary>
        /// <param name="productLineCode"></param>
        /// <returns></returns>

        public async Task<List<SheetMetalTypeDataView>> GetSheetMetalTypeData(string productLineCode)
        {
            return await _sysUserInfoRepository.GetSheetMetalTypeData(productLineCode);
        }

        public async Task<List<SheetMetaHourDataView>> GetSheetMetaHourData(string productLineCode)
        {
            return await _sysUserInfoRepository.GetSheetMetaHourData(productLineCode);
        }


        public int UpdateSapPlan(string sapCode)
        {
            return  _sysUserInfoRepository.UpdateSapPlan(sapCode);
        }
        /// <summary>
        /// 获取夹具状态
        /// </summary>
        /// <returns></returns>
        public Task<List<ModeStatusView>> StatisticalModelStatus()
        {
            return _sysUserInfoRepository.StatisticalModelStatus();
        }
    }
}