PageSelect.xaml.cs 4.94 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168

using GalaSoft.MvvmLight.Command;
using MahApps.Metro.Controls;
using MahApps.Metro.Controls.Dialogs;
using System;
using System.Collections.ObjectModel;
using System.ComponentModel;
using System.Linq;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using FLY.Blowing.DbViewer.Core;
using System.Collections.Generic;
using System.Windows.Navigation;

namespace FLY.Blowing.DbViewer
{
    /// <summary>
    /// PageSelect.xaml 的交互逻辑
    /// </summary>
    public partial class PageSelect : Page
    {
        PageSelectVm viewModel;
        DbViewerModel dBViewerModel;
        public PageSelect()
        {
            InitializeComponent();
        }
        [Unity.InjectionMethod]
        public void Init(DbViewerModel dBViewerModel)
        {
            this.dBViewerModel = dBViewerModel;
            viewModel = new PageSelectVm();
            viewModel.Init(dBViewerModel);
            this.DataContext = viewModel;

            viewModel.SearchSuccessEvent += ViewModel_SearchSuccessEvent;
        }

        private void ViewModel_SearchSuccessEvent(object sender, EventArgs e)
        {
            this.NavigationService.GoBack();
            this.NavigationService.RemoveBackEntry();
        }

        private void ButtonBack_Click(object sender, RoutedEventArgs e)
        {
            this.NavigationService.GoBack();
            this.NavigationService.RemoveBackEntry();
        }

    }
    public class PageSelectVm : INotifyPropertyChanged
    {
        public event PropertyChangedEventHandler PropertyChanged;


        public DateTime BeginDate { get; set; }
        public DateTime EndDate { get; set; }

        public RelayCommand ButtonSearchCmd { get; private set; }

        public DbHelper DbHelper { get; private set; }
        DbViewerModel dBViewerModel;
        public event EventHandler SearchSuccessEvent;
        public PageSelectVm()
        {

            ButtonSearchCmd = new RelayCommand(Search);



        }
        public void Init(DbViewerModel dBViewerModel) {
            this.dBViewerModel = dBViewerModel;
            DbHelper = dBViewerModel.mDbHelper;

            BeginDate = DateTime.Now.AddDays(-1);
            EndDate = DateTime.Now;

        }

        ProgressDialogController controller;
        async void Search()
        {
            controller = await App.MetroWindow.ShowProgressAsync("请等待...", "开始搜索",
                settings: new MetroDialogSettings()
                {
                    NegativeButtonText = "停止",
                    AnimateShow = false,
                    AnimateHide = false,

                });
            //controller.SetCancelable(true);
            controller.SetIndeterminate();
            DbHelper.PropertyChanged += DbHelper_PropertyChanged;
            await Task.Run(() =>
            {
                dBViewerModel.Pack = DbHelper.GetPack(BeginDate, EndDate);

            });
            DbHelper.PropertyChanged -= DbHelper_PropertyChanged;

            await controller.CloseAsync();
            controller = null;


            List<string> msgs = dBViewerModel.Pack.GetMsgs();
            dBViewerModel.Pack.GetDateRange(out DateTime beginTime, out DateTime endTime);
            
            if (msgs.Count() == 0)
            {
                await App.MetroWindow.ShowMessageAsync("搜索失败", "不能获取任何数据");

                dBViewerModel.IsPackReady = false;
            }
            else
            {
                dBViewerModel.IsPackReady = true;
                dBViewerModel.PackBeginDate = beginTime;
                dBViewerModel.PackEndDate = endTime;
                dBViewerModel.PackMsgs.Clear();

                string msg = "";
                for (int i = 0; i < msgs.Count(); i++)
                {
                    if (!string.IsNullOrEmpty(msg)) {
                        msg += "; ";
                    }
                    msg += msgs[i];
                    dBViewerModel.PackMsgs.Add(msgs[i]);
                }
                await App.MetroWindow.ShowMessageAsync("搜索成功", msg);

                if (msgs.Count() > 0)
                {
                    SearchSuccessEvent?.Invoke(this, null);
                    
                }
            }

            return;
        }

        private void DbHelper_PropertyChanged(object sender, PropertyChangedEventArgs e)
        {
            var dbHelper = sender as DbHelper;
            if (e.PropertyName == nameof(DbHelper.GetPackMsg)) {
                controller.SetMessage(dbHelper.GetPackMsg);
            }
        }
    }
    public class PageSelectVmUt : INotifyPropertyChanged
    {
        public event PropertyChangedEventHandler PropertyChanged;

        public DateTime StartTime { get; set; }
        public DateTime EndTime { get; set; }

        public DbHelper DbHelper { get; set; } = new DbHelper();
        public PageSelectVmUt()
        {
            StartTime = DateTime.Now.AddDays(-1);
            EndTime = DateTime.Now;

        }
    }
}