123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- using HandyControl.Interactivity.Commands;
- using MongoDB.Driver;
- using Shaker.Model;
- using Shaker.ViewModel;
- using ShakerManger.Data;
- using System;
- using System.Collections.Generic;
- using System.Collections.ObjectModel;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.Windows.Input;
- namespace ShakerManger.ViewModel
- {
- internal class LogMangerViewModel : DisplayViewModel<Shaker.Model.ModelBase>, IMainPageViewModel
- {
- private const int MAX_LOG_COUNT = 1000;
- private bool isEnabled = true;
- private DateTime startTime =DateTime.MinValue;
- private DateTime endTime = DateTime.MaxValue;
- private string keyword = string.Empty;
- private string selectedShaker = "All";
- private LogType logType = LogType.All;
- public string SelectedShaker { get => selectedShaker; set =>UpdateProperty(ref selectedShaker,value); }
- public ObservableCollection<KeyValuePair<string,string>> Shakers { get; } = new ObservableCollection<KeyValuePair<string,string>>();
- public MainPageType MainPageType => MainPageType.LogManger;
- public bool IsEnabled { get => isEnabled; set =>UpdateProperty(ref isEnabled,value); }
- public string IconPath { get; } = (string)App.Current.FindResource("LogIcon");
- public void AddLog(string message, Shaker.Model.LogType logType = Shaker.Model.LogType.Message)
- {
- Sql.Default.Insert(new Shaker.Model.LogModel()
- {
- ClientID= "Manger",
- DateTime= DateTime.Now,
- Message= message,
- LogType= logType,
- UserID = LoginViewModel.Default.Model.Id,
- });
- }
- public LogType LogType { get => logType; set =>UpdateProperty(ref logType, value); }
- public DateTime StartTime { get => startTime; set => UpdateProperty(ref startTime, value); }
- public DateTime EndTime { get => endTime; set => UpdateProperty(ref endTime, value); }
- public string Keyword { get => keyword; set => UpdateProperty(ref keyword, value); }
- public ICommand SearchCommand => new DelegateCommand(Search);
- private void Search()
- {
- Logs.Clear();
- List<Shaker.Model.LogModel> collection = new List<Shaker.Model.LogModel>();
- if (string.IsNullOrEmpty(Keyword))
- {
- var result = Sql.Default.GetCollection<Shaker.Model.LogModel>().Find(x => x.DateTime >= StartTime.ToUniversalTime() && x.DateTime <= EndTime.ToUniversalTime() &&(SelectedShaker != "All"? x.ShakerID ==SelectedShaker:true) &&(logType == LogType.All?true : x.LogType == logType)).Limit(MAX_LOG_COUNT).ToList();
- if (result != null) collection.AddRange(result);
- }
- else
- {
- var result = Sql.Default.GetCollection<Shaker.Model.LogModel>().Find(x => x.DateTime >= StartTime.ToUniversalTime() && x.DateTime <= EndTime.ToUniversalTime() && x.Message.IndexOf(keyword) >= 0 &&(SelectedShaker != "All"? x.ShakerID ==SelectedShaker:true)&&(logType == LogType.All?true : x.LogType == logType)).Limit(MAX_LOG_COUNT).ToList();
- if (result != null) collection.AddRange(result);
- }
- if (collection == null) return;
- var user = Sql.Default.GetCollection<Shaker.Model.UserModel>().AsQueryable().ToList();
- if (user != null)
- {
- collection.ForEach(x =>
- {
- x.UserID = user?.FirstOrDefault(y => y.Id == x.UserID)?.UserName ?? "";
- x.ShakerID = MainWindowViewModel.Default.Shakers.Shakers.FirstOrDefault(y => y.Model.Id == x.ShakerID)?.Title ?? "";
- });
- }
-
- if (collection.Count == 0)
- {
- return;
- }
- collection.ForEach(x =>
- {
- Logs.Add(new LogInfoViewModel(x));
- });
- }
- public void ClearLogs()
- {
- Logs.Clear();
- }
- public override Type View { get; } = typeof(View.LogView);
- public void Clear()
- {
- StartTime = DateTime.MinValue;
- EndTime = DateTime.MaxValue;
- Keyword = string.Empty;
- ClearLogs();
- }
- public ObservableCollection<LogInfoViewModel> Logs { get; } = new ObservableCollection<LogInfoViewModel>();
- }
- }
|