Inventory/AvaloniaApplication14_Inven.../ViewModels/EmployeesViewModel.cs

87 lines
3.2 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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<EmployeeVisual> _employees;
[ObservableProperty] private EmployeeVisual _selectedEmployeeVisual;
public EmployeesViewModel(IServiceProvider serviceProvider)
{
_serviceProvider = serviceProvider;
_employeesVisualFactory = _serviceProvider.GetService<EmployeesVisualFactory>();
_employeesFactory = _serviceProvider.GetService<EmployeesFactory>();
}
public async Task Fire()
{
List<Equipment> temp = null;
using (var repo = _serviceProvider.GetService<EquipmentRepository>())
{
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<EmployeeEditingWindowViewModel>(_serviceProvider, _employeesFactory.CreateFromEmployeeVisual(SelectedEmployeeVisual));
var EmployeeWin = ActivatorUtilities.CreateInstance<EmployeeEditingWindow>(_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<EmployeeRepository>())
{
var employees = employeeRepository.GetAllFrom0();
Employees = new ObservableCollection<EmployeeVisual>(_employeesVisualFactory.ConvertListEmplToEmplVis(employees));
}
}
public void SetScreen(MainWindow window)
{
_currentWindow = window;
}
}