ChronoFlow/ChronoFlow.View/MainWindow.axaml.cs
2025-06-21 11:32:41 +02:00

74 lines
2.5 KiB
C#

using System;
using Avalonia.Controls;
using Avalonia.Interactivity;
using ChronoFlow.Model;
using ChronoFlow.Persistence;
using ChronoFlow.View.Admin;
using ChronoFlow.View.Mitarbeiter;
namespace ChronoFlow.View
{
public partial class MainWindow : Window
{
private readonly ViewManager _viewManager;
private readonly User _loggedInUser;
public MainWindow(User user)
{
InitializeComponent();
_loggedInUser = user;
Console.WriteLine($"[DEBUG] MainWindow gestartet für Benutzer: {_loggedInUser.Username} ({_loggedInUser.Role})");
_viewManager = new ViewManager(ContentArea);
_viewManager.Register("ProjektErstellen", () => new ProjektErstellenView(_viewManager));
_viewManager.Register("MitarbeiterHinzufuegen", () => new MitarbeiterHinzufuegenView());
_viewManager.Register("AdminMain", () => new AdminMainView(_viewManager));
_viewManager.Register("AlleProjekte", () => new AlleProjekteView(_viewManager));
_viewManager.Register("MitarbeiterListe", () => new MitarbeiterListeView(_viewManager));
_viewManager.Register("AbgeschlosseneProjekte", () => new AbgeschlosseneProjekteView(_viewManager));
_viewManager.Register("Zeiterfassung", () =>
new EmployeeTasksView(_loggedInUser, new SqliteZeiterfassungsService()));
if (_loggedInUser.Role == "Admin")
{
_viewManager.Show("AdminMain");
}
else if (_loggedInUser.Role == "Mitarbeiter")
{
_viewManager.Show("Zeiterfassung"); // ⏳ später: MitarbeiterMain
}
this.Title = $"ChronoFlow - Willkommen {_loggedInUser.Username} ({_loggedInUser.Role})";
}
private void Zeiterfassung_Click(object? sender, RoutedEventArgs e)
{
_viewManager.Show("Zeiterfassung");
}
private void MitarbeiterHinzufuegen_Click(object? sender, RoutedEventArgs e)
{
_viewManager.Show("MitarbeiterHinzufuegen");
}
private void AdminDashboard_Click(object? sender, RoutedEventArgs e)
{
_viewManager.Show("AdminMain");
}
public void ShowAdminDashboard()
{
_viewManager.Show("AdminMain");
}
private void Logout_Click(object? sender, RoutedEventArgs e)
{
var loginWindow = new LoginWindow();
loginWindow.Show();
this.Close(); // Aktuelles Fenster schließen
}
}
}