Files
lagerprogramm/ViewModels/AdditionSearchDialogViewModel.cs
joel.leirer fb1f90a9ca Added Slop
2026-08-25 17:14:54 +02:00

69 lines
2.0 KiB
C#

using System.Collections.ObjectModel;
using System.ComponentModel;
using System.Linq;
using System.Runtime.CompilerServices;
using Lagerprogramm.Models;
namespace Lagerprogramm.ViewModels;
public class AdditionSearchDialogViewModel : INotifyPropertyChanged
{
private readonly ObservableCollection<Addition> _allAdditions;
private readonly ObservableCollection<Addition> _filteredAdditions;
private string _searchText = string.Empty;
private Addition? _selectedAddition;
public ObservableCollection<Addition> FilteredAdditions => _filteredAdditions;
public Addition? SelectedAddition
{
get => _selectedAddition;
set
{
_selectedAddition = value;
OnPropertyChanged();
}
}
public string SearchText
{
get => _searchText;
set
{
_searchText = value;
FilterAdditions();
OnPropertyChanged();
}
}
public AdditionSearchDialogViewModel(ObservableCollection<Addition> additions)
{
_allAdditions = additions;
_filteredAdditions = new ObservableCollection<Addition>(additions);
}
private void FilterAdditions()
{
_filteredAdditions.Clear();
if (string.IsNullOrWhiteSpace(SearchText))
{
foreach (var a in _allAdditions)
_filteredAdditions.Add(a);
return;
}
var query = SearchText.ToLower();
var matches = _allAdditions.Where(a =>
a.Comment.ToLower().Contains(query) ||
a.Date.ToString("yyyy-MM-dd").Contains(query) ||
a.Lines.Any(l => l.PartInternalNumber.ToLower().Contains(query))
).ToList();
foreach (var a in matches)
_filteredAdditions.Add(a);
}
public event PropertyChangedEventHandler? PropertyChanged;
protected void OnPropertyChanged([CallerMemberName] string? name = null) =>
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(name));
}