Inventory/AvaloniaApplication14_Inven.../ViewModels/PositionEditingWindowViewMo...

59 lines
1.7 KiB
C#

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<PositionRepository>())
{
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 ? "Изменить" : "Добавить";
}
}