CineBook Projekt hinzugefügt
This commit is contained in:
120
Views/MovieListView.xaml.cs
Normal file
120
Views/MovieListView.xaml.cs
Normal file
@@ -0,0 +1,120 @@
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user