using System; using System.Collections.Generic; using BathHouseManagmet.Database; using BathHouseManagmet.Models; using CommunityToolkit.Mvvm.ComponentModel; using CommunityToolkit.Mvvm.Input; using Microsoft.Extensions.DependencyInjection; namespace BathHouseManagmet.ViewModels; public partial class AddEmployeeWindowViewModel : ViewModelBase { private readonly IServiceProvider _serviceProvider; [ObservableProperty] private string _employeeName; [ObservableProperty] private string _employeeSurname; [ObservableProperty] private Position _employeePosition; [ObservableProperty] private List _employees; [ObservableProperty] private List _positions; [ObservableProperty] private Position _selectedPosition; public AddEmployeeWindowViewModel(IServiceProvider serviceProvider) { _serviceProvider = serviceProvider; using (var rep = serviceProvider.GetRequiredService()) Employees = new List(rep.GetPage()); } [RelayCommand] public void AddEmployee() { var emp = new Employee() { Name = EmployeeName, Surname = EmployeeSurname, Position = EmployeePosition }; using (var rep = _serviceProvider.GetRequiredService()) rep.Add(emp); CloseWindow(); } /* Прикольная штука, пользоваться можно. Но как мать его работать с MessageBox?? private bool Validate() { if (string.IsNullOrWhiteSpace(_employeeName) || string.IsNullOrWhiteSpace(_employeeSurname)) return false; return true; } */ [RelayCommand] public void CloseWindow() { close(); } private Action close; public void SetClose(Action close) { this.close = close; } }