/
metaffoble
/
FitnessManager
Обзор
Документация
Войти
/
metaffoble
/
FitnessManager
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
ViewModel/TrainerWorkloadViewModel.cs
115 строк
3 KB
Артем Якушин
another version of FitnessManager
08 фев 2026, 15:15
08 фев 2026, 15:15
503d57a
Код
Авторство
О чём код?
using FitnessManager.Helpers; using FitnessManager.Model.Classes; using FitnessManager.Model.Data; using LiveCharts; using LiveCharts.Wpf; using System; using System.Collections.Generic; using System.Linq; using System.Windows.Input; using System.Windows.Media; using FitnessManager.Model.Services; using System.Windows; using System.Windows.Documents; public class TrainerWorkloadViewModel : ObservableObject { private static readonly FitnessManagerEntities _context = new FitnessManagerEntities(); public SeriesCollection SeriesCollection { get; set; } public List<string> Dates { get; set; } private TrainerService _service = new TrainerService(_context); public Func<double, string> Formatter { get; set; } public List<TrainerWorkload> TrainersWorkload { get; set; } public ICommand RefreshCommand ; public TrainerWorkloadViewModel() { RefreshCommand = new RelayCommand(RefreshData); LoadData(); SetupChart(); } private DateTime _startDate = DateTime.Now.AddDays(-7); public DateTime StartDate { get => _startDate; set { _startDate = value; OnPropertyChanged(); RefreshData(); } } private DateTime _endDate = DateTime.Now; public DateTime EndDate { get => _endDate; set { _endDate = value; OnPropertyChanged(); RefreshData(); } } private void RefreshData() { LoadData(); SeriesCollection.Clear(); // Очищаем старые данные SetupChart(); // Перестраиваем график OnPropertyChanged(nameof(SeriesCollection)); // Уведомляем UI об изменениях } private void LoadData() { var startDate = StartDate; var endDate = EndDate; TrainersWorkload = new List<TrainerWorkload>(); using (var dbContext = new FitnessManagerEntities()) { TrainersWorkload = _service.GetTrainersWorkloadToList( startDate, endDate); } } private void SetupChart() { if (TrainersWorkload == null || !TrainersWorkload.Any()) { SeriesCollection = new SeriesCollection(); return; } var newSeries = new SeriesCollection(); Dates = TrainersWorkload.First().WorkloadByDate.Keys .OrderBy(d => d) .Select(d => d.ToString("dd.MM")) .ToList(); foreach (var trainer in TrainersWorkload) { string title = $"{trainer.TrainerName}\n (Всего назначено: {trainer.TotalWorkload} тренировок)"; newSeries.Add(new ColumnSeries { Title = title, Values = new ChartValues<int>(trainer.WorkloadByDate .OrderBy(kv => kv.Key) .Select(kv => kv.Value)), Tag = trainer.IsOverworked }); } SeriesCollection = newSeries; OnPropertyChanged(nameof(SeriesCollection)); OnPropertyChanged(nameof(Dates)); } }