using Admin.Core.IService;
using Admin.Core.Service;
using Aucma.Core.DoorFoam.Models;
using CommunityToolkit.Mvvm.ComponentModel;
using CommunityToolkit.Mvvm.Input;
using log4net;
using Microsoft.Extensions.DependencyInjection;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;

namespace Aucma.Core.DoorFoam.ViewModels
{
    public partial class StatisticsPageViewModel : ObservableObject
    {
        private static readonly log4net.ILog log = LogManager.GetLogger(typeof(StatisticsPageViewModel));
        private readonly IDoorFoamRecordServices? _doorFoamRecordServices;
        public StatisticsPageViewModel() {
            _doorFoamRecordServices = App.ServiceProvider.GetService<IDoorFoamRecordServices>();
            LoadData();
        }

        List<MaterialComplateInfo> materialComplateInfos = new List<MaterialComplateInfo>();

        #region 加载DataGrid数据
        private async void LoadData()
        {
            DateTime startTime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd 00:00:00"));
            DateTime endTime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd 23:59:59"));

           var list=await _doorFoamRecordServices.QueryAsync(d=>d.BeginTime>= startTime&&d.EndTime<= endTime);
            if (list == null) return;

            foreach (var item in list)
            {
                DoorDataGrid.Add(new DoorFoamRecordModel()
                {
                    PlanCode = item.PlanCode,
                    MaterialCode = item.MaterialCode,
                    MaterialName = item.MaterialName,
                    PlanAmount = item.PlanAmount,
                    CompleteAmount = item.CompleteAmount,
                    BeginTime= item.BeginTime, 
                    EndTime= item.EndTime
                });
            }
        }

        #endregion

        #region 初始化datagrid
        private ObservableCollection<DoorFoamRecordModel> doorDataGrid = new ObservableCollection<DoorFoamRecordModel>();
        public ObservableCollection<DoorFoamRecordModel> DoorDataGrid
        {
            get { return doorDataGrid; }
            set
            {
                doorDataGrid = value;
                OnPropertyChanged();//属性通知
            }
        }
        #endregion

        #region 查询
        /// <summary>
        /// 查询
        /// </summary>
        [RelayCommand]
        private void ExecQuery(object obj)
        {
            var result = (StatisticModel)obj;
            if (result == null)
            {
                MessageBox.Show("查询参数不能为空!");
                return;
            }
            if (string.IsNullOrEmpty(result.BeginTime))
            {
                MessageBox.Show("开始时间不能为空!");
                return;
            }
            if (string.IsNullOrEmpty(result.EndTime))
            {
                MessageBox.Show("结束时间不能为空!");
                return;
            }
            DateTime theBeginTime = Convert.ToDateTime(result.BeginTime);
            DateTime theEndTime = Convert.ToDateTime(result.EndTime);
            if (theBeginTime > theEndTime)
            {
                MessageBox.Show("结束时间要大于开始时间!");
                return;
            }
            DateTime startTime = Convert.ToDateTime(theBeginTime.ToString("yyyy-MM-dd 00:00:00"));
            DateTime endTime = Convert.ToDateTime(theEndTime.ToString("yyyy-MM-dd 23:59:59"));
            System.Windows.Application.Current.Dispatcher.Invoke((Action)(async () =>
            {
                DoorDataGrid.Clear();
                var list = await _doorFoamRecordServices.QueryAsync(d => d.BeginTime >= startTime && d.EndTime <= endTime);
                foreach (var item in list)
                {
                    DoorDataGrid.Add(new DoorFoamRecordModel()
                    {
                        PlanCode = item.PlanCode,
                        MaterialCode = item.MaterialCode,
                        MaterialName = item.MaterialName,
                        PlanAmount = item.PlanAmount,
                        CompleteAmount = item.CompleteAmount,
                        BeginTime = item.BeginTime,
                        EndTime = item.EndTime
                    });
                }

                //Datalist.Insert(0, Datalist[Datalist.Count - 1]);
                //Datalist.RemoveAt(Datalist.Count - 1);
            }));
        }
        #endregion 
    }
}