65 lines
2.1 KiB
C#
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;
|
|
}
|
|
|
|
}
|
|
}
|