using AutoService.Models; using CommunityToolkit.Mvvm.ComponentModel; using CommunityToolkit.Mvvm.Input; using Microsoft.Extensions.DependencyInjection; using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Linq; using System.Text; using System.Threading.Tasks; namespace AutoService.ViewModels { public partial class WorksWindowVM:ViewModelBase { private readonly IServiceProvider _serviceProvider; private readonly LocalContainer _localContainer; private Service _service; [ObservableProperty] private ObservableCollection works; private WorksWindow _currentWindow; public WorksWindowVM(IServiceProvider serviceProvider, IWorkRepository workRepository, LocalContainer container) { _serviceProvider = serviceProvider; _service = container.SelectedService; _localContainer = container; Works = new ObservableCollection(); foreach(Work work in workRepository.GetByServiceId(_service.Id)) { Works.Add(new WorkIsChecked { Work = work, IsChecked = false }); } } [RelayCommand] public void CalculateCount() { ObservableCollection selectedWorks = new(); foreach(var work in Works) { if (work.IsChecked) selectedWorks.Add(work.Work); } var procRep = _serviceProvider.GetRequiredService(); var vm = ActivatorUtilities.CreateInstance(_serviceProvider, selectedWorks, _localContainer, procRep); var win = _serviceProvider.GetRequiredService(); win.DataContext = vm; vm.SetWindow(win); win.Show(); _currentWindow.Close(); } public void SetWindow(WorksWindow window) { _currentWindow = window; } } }