auto_service/AutoService/ViewModels/WorksWindowVM.cs

65 lines
2.1 KiB
C#

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<WorkIsChecked> works;
private WorksWindow _currentWindow;
public WorksWindowVM(IServiceProvider serviceProvider, IWorkRepository workRepository, LocalContainer container)
{
_serviceProvider = serviceProvider;
_service = container.SelectedService;
_localContainer = container;
Works = new ObservableCollection<WorkIsChecked>();
foreach(Work work in workRepository.GetByServiceId(_service.Id))
{
Works.Add(new WorkIsChecked
{
Work = work,
IsChecked = false
});
}
}
[RelayCommand]
public void CalculateCount()
{
ObservableCollection<Work> selectedWorks = new();
foreach(var work in Works)
{
if (work.IsChecked) selectedWorks.Add(work.Work);
}
var procRep = _serviceProvider.GetRequiredService<IProceedRepository>();
var vm = ActivatorUtilities.CreateInstance<ReceiptWindowVM>(_serviceProvider, selectedWorks, _localContainer, procRep);
var win = _serviceProvider.GetRequiredService<ReceiptWindow>();
win.DataContext = vm;
vm.SetWindow(win);
win.Show();
_currentWindow.Close();
}
public void SetWindow(WorksWindow window)
{
_currentWindow = window;
}
}
}