121 lines
3.6 KiB
C#
121 lines
3.6 KiB
C#
using CineBook.Data;
|
|
using CineBook.Helpers;
|
|
using CineBook.Models;
|
|
using System.Windows;
|
|
using System.Windows.Controls;
|
|
|
|
namespace CineBook.Views;
|
|
|
|
public partial class MovieListView : UserControl
|
|
{
|
|
private readonly Repository _repo;
|
|
private Movie? _selected;
|
|
|
|
public MovieListView(Repository repo)
|
|
{
|
|
InitializeComponent();
|
|
_repo = repo;
|
|
|
|
// Nur Admins dürfen bearbeiten/löschen
|
|
if (!Session.IsAdmin)
|
|
{
|
|
BtnAdd.IsEnabled = false;
|
|
BtnAdd.Visibility = Visibility.Collapsed;
|
|
BtnDelete.Visibility = Visibility.Collapsed;
|
|
BtnEdit.Visibility = Visibility.Collapsed;
|
|
}
|
|
LoadMovies();
|
|
}
|
|
|
|
private void LoadMovies()
|
|
{
|
|
try
|
|
{
|
|
MoviesGrid.ItemsSource = _repo.GetMovies();
|
|
StatusText.Text = $"● {_repo.GetMovies().Count} Filme geladen.";
|
|
}
|
|
catch (System.Exception ex)
|
|
{
|
|
StatusText.Text = "⚠ Fehler: " + ex.Message;
|
|
}
|
|
}
|
|
|
|
private void GridSelectionChanged(object sender, SelectionChangedEventArgs e)
|
|
{
|
|
_selected = MoviesGrid.SelectedItem as Movie;
|
|
BtnEdit.IsEnabled = _selected != null && Session.IsAdmin;
|
|
BtnDelete.IsEnabled = _selected != null && Session.IsAdmin;
|
|
}
|
|
|
|
private void SearchChanged(object sender, TextChangedEventArgs e) { }
|
|
private void SearchClick(object sender, RoutedEventArgs e)
|
|
{
|
|
var term = SearchBox.Text.Trim();
|
|
if (string.IsNullOrEmpty(term)) { LoadMovies(); return; }
|
|
try { MoviesGrid.ItemsSource = _repo.SearchMovies(term); }
|
|
catch (System.Exception ex) { StatusText.Text = "⚠ " + ex.Message; }
|
|
}
|
|
|
|
private void LoadAllClick(object sender, RoutedEventArgs e)
|
|
{
|
|
SearchBox.Text = "";
|
|
LoadMovies();
|
|
}
|
|
|
|
private void AddClick(object sender, RoutedEventArgs e)
|
|
{
|
|
var dlg = new MovieEditDialog(null);
|
|
if (dlg.ShowDialog() == true && dlg.Result != null)
|
|
{
|
|
try
|
|
{
|
|
if (_repo.CreateMovie(dlg.Result))
|
|
LoadMovies();
|
|
else
|
|
MessageBox.Show("Fehler beim Speichern.", "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
|
|
}
|
|
catch (System.Exception ex)
|
|
{
|
|
MessageBox.Show("DB-Fehler: " + ex.Message, "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
|
|
}
|
|
}
|
|
}
|
|
|
|
private void EditClick(object sender, RoutedEventArgs e)
|
|
{
|
|
if (_selected == null) return;
|
|
var dlg = new MovieEditDialog(_selected);
|
|
if (dlg.ShowDialog() == true && dlg.Result != null)
|
|
{
|
|
try
|
|
{
|
|
if (_repo.UpdateMovie(dlg.Result))
|
|
LoadMovies();
|
|
}
|
|
catch (System.Exception ex)
|
|
{
|
|
MessageBox.Show("DB-Fehler: " + ex.Message, "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
|
|
}
|
|
}
|
|
}
|
|
|
|
private void DeleteClick(object sender, RoutedEventArgs e)
|
|
{
|
|
if (_selected == null) return;
|
|
var r = MessageBox.Show($"Film \"{_selected.Title}\" wirklich löschen?", "Bestätigung",
|
|
MessageBoxButton.YesNo, MessageBoxImage.Warning);
|
|
if (r == MessageBoxResult.Yes)
|
|
{
|
|
try
|
|
{
|
|
_repo.DeleteMovie(_selected.MovieID);
|
|
LoadMovies();
|
|
}
|
|
catch (System.Exception ex)
|
|
{
|
|
MessageBox.Show("DB-Fehler: " + ex.Message, "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
|
|
}
|
|
}
|
|
}
|
|
}
|