118 lines
3.8 KiB
C#
118 lines
3.8 KiB
C#
using System;
|
|
using System.Collections.ObjectModel;
|
|
using Avalonia.Controls;
|
|
using Avalonia.Interactivity;
|
|
using Avalonia.Media;
|
|
using ChronoFlow.Controller;
|
|
using ChronoFlow.Model;
|
|
|
|
|
|
namespace ChronoFlow.View
|
|
{
|
|
public partial class ZeiterfassungView : UserControl
|
|
{
|
|
private readonly ZeiterfassungsController _controller;
|
|
|
|
private ObservableCollection<Zeiteintrag> _anzeigeEinträge = new();
|
|
|
|
|
|
private readonly User _user;
|
|
public ZeiterfassungView(User user)
|
|
{
|
|
InitializeComponent();
|
|
_controller = new ZeiterfassungsController();
|
|
_user = user;
|
|
|
|
//ListBox an Collection binden
|
|
Eintragsliste.ItemsSource = _anzeigeEinträge;
|
|
|
|
//Eingabe-Felder für Nicht-Admins ausblenden
|
|
if (_user.Role != "Admin")
|
|
{
|
|
EingabePanel.IsVisible = false;
|
|
}
|
|
|
|
}
|
|
|
|
private void SpeichernButton_Click(object? sender, RoutedEventArgs e)
|
|
{
|
|
try
|
|
{
|
|
string mitarbeiter = MitarbeiterBox.Text ?? string.Empty;
|
|
DateTime datum = DatumPicker.SelectedDate?.Date ?? DateTime.Today;
|
|
string startText = StartzeitBox.Text ?? "";
|
|
string endText = EndzeitBox.Text ?? "";
|
|
|
|
if (!TimeSpan.TryParse(startText, out TimeSpan startZeit))
|
|
{
|
|
FeedbackText.Text = "Ungültige Startzeit!";
|
|
FeedbackText.Foreground = Brushes.Red;
|
|
FeedbackText.IsVisible = true;
|
|
return;
|
|
}
|
|
|
|
if (!TimeSpan.TryParse(endText, out TimeSpan endZeit))
|
|
{
|
|
FeedbackText.Text = "Ungültige Endzeit!";
|
|
FeedbackText.Foreground = Brushes.Red;
|
|
FeedbackText.IsVisible = true;
|
|
return;
|
|
}
|
|
|
|
var eintrag = new Zeiteintrag
|
|
{
|
|
Mitarbeiter = mitarbeiter,
|
|
Startzeit = datum.Date + startZeit,
|
|
Endzeit = datum.Date + endZeit,
|
|
Projekt = ProjektBox.Text,
|
|
Kommentar = KommentarBox.Text
|
|
};
|
|
|
|
_controller.SpeichereEintrag(eintrag);
|
|
_anzeigeEinträge.Add(eintrag);
|
|
FeedbackText.Text = "Eintrag gespeichert.";
|
|
FeedbackText.Foreground = Brushes.Green;
|
|
FeedbackText.IsVisible = true;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
FeedbackText.Text = $"Fehler: {ex.Message}";
|
|
FeedbackText.Foreground = Brushes.Red;
|
|
FeedbackText.IsVisible = true;
|
|
}
|
|
}
|
|
|
|
private void MarkiereErledigt_Click(object? sender, RoutedEventArgs e)
|
|
{
|
|
if (sender is Button button && button.DataContext is Zeiteintrag eintrag)
|
|
{
|
|
eintrag.Erledigt = true;
|
|
RefreshListe();
|
|
}
|
|
}
|
|
|
|
private void MarkiereNichtErledigt_Click(object? sender, RoutedEventArgs e)
|
|
{
|
|
if (sender is Button button && button.DataContext is Zeiteintrag eintrag)
|
|
{
|
|
eintrag.Erledigt = false;
|
|
RefreshListe();
|
|
}
|
|
}
|
|
|
|
private void Kommentar_LostFocus(object? sender, RoutedEventArgs e)
|
|
{
|
|
if (sender is TextBox tb && tb.DataContext is Zeiteintrag eintrag)
|
|
{
|
|
eintrag.MitarbeiterKommentar = tb.Text;
|
|
}
|
|
}
|
|
|
|
private void RefreshListe()
|
|
{
|
|
Eintragsliste.ItemsSource = null;
|
|
Eintragsliste.ItemsSource = _anzeigeEinträge;
|
|
}
|
|
}
|
|
}
|