66 lines
2.0 KiB
C#
66 lines
2.0 KiB
C#
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<Position> _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<EmployeeRepository>())
|
|
{
|
|
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<PositionRepository>())
|
|
{
|
|
Positions = new ObservableCollection<Position>(repo.GetAll());
|
|
}
|
|
|
|
Name = employee.FullName;
|
|
|
|
}
|
|
|
|
public void SetScreen(EmployeeEditingWindow window)
|
|
{
|
|
_currentWindow = window;
|
|
_currentWindow.ConfirmButton.Content = _isEditing ? "Изменить" : "Добавить";
|
|
}
|
|
} |