using AutoMapper; using HandyControl.Controls; using HandyControl.Data; using Prism.Commands; using Prism.Mvvm; using Repository; using Repository.Entiies; using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace LogoForceTestApp.Modules.MainModule.ViewModels { public class LogPageViewModel : BindableBase { private readonly List _logModels; private readonly IMapper _mapper; public List LogModels { get; set; } public int PageIndex { get; set; } = 1; public int MaxCount { get; set; } = 1; public int PageCount { get; set; } = 20; public DateTime SelectedStartDate { get; set; } public DateTime SelectedEndDate { get; set; } public DelegateCommand> PageUpdatedCmd => new(PageUpdated); public DelegateCommand QueryCommand { get; set; } /// /// 页码改变 /// private void PageUpdated(FunctionEventArgs info) { LogModels = _logModels.Skip((info.Info - 1) * PageCount).Take(PageCount).Reverse().ToList(); } public LogPageViewModel(IMapper mapper) { SelectedStartDate = DateTime.Today; SelectedEndDate = DateTime.Today; LogModels = new List(); _mapper = mapper; _logModels = new List(); InitData().Await(); QueryCommand = new DelegateCommand(async () => { await QueryData(); }); } private async Task InitData() { var logRepository = new LogRepository(); var dateTimeToday = DateTime.Today; var logs= await logRepository.GetAllQueryAsync(c => c.Timestamp >= dateTimeToday); var dtos=_mapper.Map>(logs); dtos.Reverse(); _logModels.AddRange(dtos); LogModels = _logModels.Take(PageCount).ToList(); MaxCount = _logModels.Count / PageCount + 1; } private async Task QueryData() { if (SelectedEndDate < SelectedStartDate || SelectedStartDate == default) { MessageBox.Show("请选择正确的日期","提示"); return; } _logModels.Clear(); var logRepository = new LogRepository(); var endTime=SelectedEndDate.AddDays(1); var logs = (await logRepository.GetAllQueryAsync(c => c.Timestamp >= SelectedStartDate&&c.Timestamp<=endTime)); logs.Reverse(); var dtos = _mapper.Map>(logs); _logModels.AddRange(dtos); LogModels = _logModels.Take(PageCount).ToList(); MaxCount = _logModels.Count / PageCount + 1; } } public class LogModel : BindableBase { public int Id { get; set; } public DateTime Timestamp { get; set; } public string Properties { get; set; } } }