using System; using System.Collections.ObjectModel; using System.Linq; using Avalonia.Controls; using Avalonia.Interactivity; using ChronoFlow.Model; using ChronoFlow.Persistence; using Avalonia.Input; namespace ChronoFlow.View.Admin; public partial class AlleProjekteView : UserControl { private readonly ViewManager _viewManager; private readonly ObservableCollection _alleProjekte = new(); private readonly SqliteZeiterfassungsService _dbService = new(); public AlleProjekteView(ViewManager viewManager) { InitializeComponent(); _viewManager = viewManager; LadeAlleProjekte(); } private void LadeAlleProjekte() { _alleProjekte.Clear(); var ausDb = _dbService.LadeAlleZeiteintraege() .Where(p => !p.Erledigt) // Nur nicht erledigte Projekte! .ToList(); foreach (var eintrag in ausDb) _alleProjekte.Add(eintrag); ProjekteListe.ItemsSource = _alleProjekte; } private void Suchfeld_KeyUp(object? sender, KeyEventArgs e) { var text = Suchfeld?.Text?.ToLower() ?? ""; ProjekteListe.ItemsSource = _alleProjekte .Where(p => (p.Projekt?.ToLower().Contains(text) ?? false) || (p.Mitarbeiter?.ToLower().Contains(text) ?? false)) .ToList(); } private async void Bearbeiten_Click(object? sender, RoutedEventArgs e) { if (sender is Button button && button.Tag is Zeiteintrag projekt) { var dialog = new ProjektBearbeitenDialog(projekt); var updatedProjekt = await dialog.ShowDialog((Window)this.VisualRoot!); if (updatedProjekt != null) { _dbService.UpdateProjekt(updatedProjekt); LadeAlleProjekte(); } } } private void Loeschen_Click(object? sender, RoutedEventArgs e) { if (sender is Button button && button.Tag is Zeiteintrag projekt) { _dbService.LoescheProjekt(projekt.Id); LadeAlleProjekte(); } } private void Abschliessen_Click(object? sender, RoutedEventArgs e) { if (sender is Button button && button.Tag is Zeiteintrag projekt) { projekt.Erledigt = true; _dbService.UpdateProjekt(projekt); Console.WriteLine($"✅ Projekt abgeschlossen: {projekt.Projekt}"); LadeAlleProjekte(); } } private void ZurueckButton_Click(object? sender, RoutedEventArgs e) { _viewManager.Show("AdminMain"); } }