ChronoFlow/ChronoFlow.View/Admin/AlleProjekteView.axaml.cs

90 lines
2.6 KiB
C#

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<Zeiteintrag> _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<Zeiteintrag>((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");
}
}