Inventory/AvaloniaApplication14_Inven.../ViewModels/EquipmentViewModel.cs

62 lines
2.3 KiB
C#

using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Threading.Tasks;
using AvaloniaApplication14_Inventory_300326.Models.DataBase;
using AvaloniaApplication14_Inventory_300326.Models.Factoryes;
using AvaloniaApplication14_Inventory_300326.Models.Models;
using AvaloniaApplication14_Inventory_300326.Views;
using CommunityToolkit.Mvvm.ComponentModel;
using Microsoft.Extensions.DependencyInjection;
namespace AvaloniaApplication14_Inventory_300326.ViewModels;
public partial class EquipmentViewModel : ViewModelBase
{
private IServiceProvider _serviceProvider;
private MainWindow _currentWindow;
private EquipmentFactory _equipmentFactory;
private EquipmentVisualFactory _equipmentVisualFactory;
[ObservableProperty] private ObservableCollection<EquipmentVisual> _techs;
[ObservableProperty] private EquipmentVisual _selectedEquipmentVisual;
public EquipmentViewModel(IServiceProvider serviceProvider)
{
_serviceProvider = serviceProvider;
_equipmentFactory = _serviceProvider.GetRequiredService<EquipmentFactory>();
_equipmentVisualFactory = _serviceProvider.GetRequiredService<EquipmentVisualFactory>();
GetTeches();
}
public void GetTeches()
{
using (var equipmentRepository = _serviceProvider.GetService<EquipmentRepository>())
{
List<Equipment> teches = equipmentRepository.GetAll();
Techs = new ObservableCollection<EquipmentVisual>(_equipmentVisualFactory.ConvertListEqToEqVis(teches));
}
}
public async Task DoubleTappedTechDataGrid()
{
var vm = ActivatorUtilities.CreateInstance<EquipmentEditingWindowViewModel>(_serviceProvider, _equipmentFactory.CreateFromVisual(SelectedEquipmentVisual));
var win = ActivatorUtilities.CreateInstance<EquipmentEditingWindow>(_serviceProvider, vm);
await win.ShowDialog(_currentWindow);
ShowTeches();
GetTeches();
}
public void ShowTeches()
{
_currentWindow.ScrollViewerDataGridTech.IsVisible = true;
_currentWindow.ScrollViewerDataGridEmpl.IsVisible = false;
_currentWindow.ScrollViewerDataGridPos.IsVisible = false;
}
public void SetScreen(MainWindow window)
{
_currentWindow = window;
}
}