/
bomjkee
/
AvaloniaEntityApp
Обзор
Документация
Войти
/
bomjkee
/
AvaloniaEntityApp
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
ViewModels/AuthorViewModel.cs
117 строк
3 KB
bomjkee
first commit
23 фев 2025, 00:18
23 фев 2025, 00:18
e1949b1
Код
Авторство
О чём код?
using System; using System.Collections.ObjectModel; using System.Threading.Tasks; using CommunityToolkit.Mvvm.ComponentModel; using CommunityToolkit.Mvvm.Input; using AvaloniaApp.Services; using AvaloniaApp.Models; namespace AvaloniaApp.ViewModels; public partial class AuthorViewModel : ViewModelBase { private readonly LibraryDataService _libraryData; [ObservableProperty] private ObservableCollection<Author> _authors = new ObservableCollection<Author>(); [ObservableProperty] private Author? _selectedAuthor; [ObservableProperty] private string _firstName = string.Empty; [ObservableProperty] private string _lastName = string.Empty; [ObservableProperty] private DateTimeOffset _birthDate = DateTimeOffset.Now; [ObservableProperty] private string? _country = string.Empty; [ObservableProperty] private string _author = string.Empty; [ObservableProperty] private string _genre = string.Empty; public AuthorViewModel(LibraryDataService libraryData) { _libraryData = libraryData; _libraryData.Authors.CollectionChanged += (s, e) => UpdateAuthors(); UpdateAuthors(); } [RelayCommand] private async Task AddAuthorAsync() { if (string.IsNullOrEmpty(FirstName) || string.IsNullOrEmpty(LastName) || (SelectedAuthor?.FirstName == FirstName && SelectedAuthor?.LastName == LastName)) return; var author = new Author { FirstName = FirstName, LastName = LastName, BirthDate = DateTime.SpecifyKind(BirthDate.DateTime, DateTimeKind.Utc), Country = Country }; await _libraryData.AddAuthorAsync(author); ClearInput(); } [RelayCommand] private async Task UpdateAuthorAsync() { if (SelectedAuthor == null || string.IsNullOrEmpty(FirstName) || string.IsNullOrEmpty(LastName)) return; SelectedAuthor.FirstName = FirstName; SelectedAuthor.LastName = LastName; SelectedAuthor.BirthDate = DateTime.SpecifyKind(BirthDate.DateTime, DateTimeKind.Utc); SelectedAuthor.Country = Country; await _libraryData.UpdateAuthorAsync(SelectedAuthor); ClearInput(); } [RelayCommand] private async Task DeleteAuthorAsync() { if (SelectedAuthor == null) return; await _libraryData.DeleteAuthorAsync(SelectedAuthor); ClearInput(); } [RelayCommand] private void ClearInput() { FirstName = string.Empty; LastName = string.Empty; BirthDate = DateTimeOffset.Now; Country = string.Empty; SelectedAuthor = null; } private void UpdateAuthors() { Authors = new ObservableCollection<Author>(_libraryData.Authors); } partial void OnSelectedAuthorChanged(Author? value) { if (value != null) { FirstName = value.FirstName; LastName = value.LastName; BirthDate = value.BirthDate; Country = value.Country; } } }