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

70 lines
2.1 KiB
C#

using System.Collections.ObjectModel;
using System.ComponentModel;
using System.Linq;
using System.Runtime.CompilerServices;
using Lagerprogramm.Models;
namespace Lagerprogramm.ViewModels;
public class DeductionSearchDialogViewModel : INotifyPropertyChanged
{
private readonly ObservableCollection<Deduction> _allDeductions;
private readonly ObservableCollection<Deduction> _filteredDeductions;
private string _searchText = string.Empty;
private Deduction? _selectedDeduction;
public ObservableCollection<Deduction> FilteredDeductions => _filteredDeductions;
public Deduction? SelectedDeduction
{
get => _selectedDeduction;
set
{
_selectedDeduction = value;
OnPropertyChanged();
}
}
public string SearchText
{
get => _searchText;
set
{
_searchText = value;
FilterDeductions();
OnPropertyChanged();
}
}
public DeductionSearchDialogViewModel(ObservableCollection<Deduction> deductions)
{
_allDeductions = deductions;
_filteredDeductions = new ObservableCollection<Deduction>(deductions);
}
private void FilterDeductions()
{
_filteredDeductions.Clear();
if (string.IsNullOrWhiteSpace(SearchText))
{
foreach (var d in _allDeductions)
_filteredDeductions.Add(d);
return;
}
var query = SearchText.ToLower();
var matches = _allDeductions.Where(d =>
d.Customer.ToLower().Contains(query) ||
d.Comment.ToLower().Contains(query) ||
d.Date.ToString("yyyy-MM-dd").Contains(query) ||
d.Lines.Any(l => l.PartInternalNumber.ToLower().Contains(query))
).ToList();
foreach (var d in matches)
_filteredDeductions.Add(d);
}
public event PropertyChangedEventHandler? PropertyChanged;
protected void OnPropertyChanged([CallerMemberName] string? name = null) =>
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(name));
}