using System; using System.Collections.ObjectModel; using AvaloniaApplication14_Inventory_300326.Models.DataBase; using AvaloniaApplication14_Inventory_300326.Models.Models; using AvaloniaApplication14_Inventory_300326.Views; using CommunityToolkit.Mvvm.ComponentModel; using CommunityToolkit.Mvvm.Input; using Microsoft.Extensions.DependencyInjection; namespace AvaloniaApplication14_Inventory_300326.ViewModels; public partial class EmployeeEditingWindowViewModel : ViewModelBase { private EmployeeEditingWindow _currentWindow; private IServiceProvider _serviceProvider; private bool _isEditing; private Employee _employee; [ObservableProperty] private string _name; [ObservableProperty] private ObservableCollection _positions; [ObservableProperty] private Position _selectedPosition; [RelayCommand] private void Cancel() { _currentWindow.Close(); } [RelayCommand] private void Confirm() { _employee.FullName = Name; _employee.PositionId = SelectedPosition.Id; using (var repo = _serviceProvider.GetService()) { if (_isEditing) { repo.Update(_employee); } else { repo.Add(_employee); } } _currentWindow.Close(); } public EmployeeEditingWindowViewModel(IServiceProvider serviceProvider, Employee employee) { _isEditing=!employee.IsNew(); _serviceProvider = serviceProvider; _employee = employee; using (var repo = _serviceProvider.GetService()) { Positions = new ObservableCollection(repo.GetAll()); } Name = employee.FullName; } public void SetScreen(EmployeeEditingWindow window) { _currentWindow = window; _currentWindow.ConfirmButton.Content = _isEditing ? "Изменить" : "Добавить"; } }