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.Factories; 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; using MsBox.Avalonia; using MsBox.Avalonia.Enums; namespace AvaloniaApplication14_Inventory_300326.ViewModels; public partial class EmployeesViewModel : ViewModelBase { private IServiceProvider _serviceProvider; private MainWindow _currentWindow; private EmployeesVisualFactory _employeesVisualFactory; private EmployeesFactory _employeesFactory; [ObservableProperty] private ObservableCollection _employees; [ObservableProperty] private EmployeeVisual _selectedEmployeeVisual; public EmployeesViewModel(IServiceProvider serviceProvider) { _serviceProvider = serviceProvider; _employeesVisualFactory = _serviceProvider.GetService(); _employeesFactory = _serviceProvider.GetService(); } public async Task Fire() { List temp = null; using (var repo = _serviceProvider.GetService()) { temp = repo.DoesEmployeeHaveEquipments(SelectedEmployeeVisual.Id); } if (temp != null) { if (temp.Count > 0) { string errorMessage = "За выбранным сотрудником числится следующие вещи: \n"; foreach (var item in temp) { errorMessage += $"{item.Name} \n"; } var win = MessageBoxManager.GetMessageBoxStandard("Ошибка", errorMessage, ButtonEnum.Ok, Icon.Error); await win.ShowWindowDialogAsync(_currentWindow); } } } public async Task DoubleTappedEmployeeDataGrid() { var EmployeeVm = ActivatorUtilities.CreateInstance(_serviceProvider, _employeesFactory.CreateFromEmployeeVisual(SelectedEmployeeVisual)); var EmployeeWin = ActivatorUtilities.CreateInstance(_serviceProvider, EmployeeVm); await EmployeeWin.ShowDialog(_currentWindow); ShowEmployees(); GetEmployees(); } public void ShowEmployees() { _currentWindow.ScrollViewerDataGridTech.IsVisible = false; _currentWindow.ScrollViewerDataGridEmpl.IsVisible = true; _currentWindow.ScrollViewerDataGridPos.IsVisible = false; } public void GetEmployees() { using (var employeeRepository = _serviceProvider.GetService()) { var employees = employeeRepository.GetAllFrom0(); Employees = new ObservableCollection(_employeesVisualFactory.ConvertListEmplToEmplVis(employees)); } } public void SetScreen(MainWindow window) { _currentWindow = window; } }