using System; 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 PositionEditingWindowViewModel : ViewModelBase { private IServiceProvider _serviceProvider; private bool _isEditing; private PositionEditingWindow _currentWindow; private Position _position; [ObservableProperty] private string _positionName; [RelayCommand] private void Cancel() { _currentWindow.Close(); } [RelayCommand] private void Confirm() { _position.Name = PositionName; using (var _positionRepository = _serviceProvider.GetService()) { if (_isEditing) { _positionRepository.Update(_position); } else { _positionRepository.Add(_position); } } _currentWindow.Close(); } public PositionEditingWindowViewModel(IServiceProvider serviceProvider, Position position) { _serviceProvider = serviceProvider; _isEditing = !position.IsNew(); _position = position; if (_isEditing) { PositionName = position.Name; } } public void SetWindow(PositionEditingWindow window) { _currentWindow = window; _currentWindow.ConfirmButton.Content = _isEditing ? "Изменить" : "Добавить"; } }