Files
lagerprogramm/Views/PartsView.axaml.cs
joel.leirer fb1f90a9ca Added Slop
2026-08-25 17:14:54 +02:00

69 lines
2.3 KiB
C#

using Avalonia.Controls;
using Avalonia.Markup.Xaml;
using Lagerprogramm.ViewModels;
using Avalonia;
using System.Linq;
using System.Threading.Tasks;
namespace Lagerprogramm.Views;
public partial class PartsView : UserControl
{
public PartsView()
{
InitializeComponent();
}
private PartsViewModel? ViewModel => DataContext as PartsViewModel;
private async void OnSearchPart(object? sender, Avalonia.Interactivity.RoutedEventArgs e)
{
if (ViewModel is null) return;
var window = TopLevel.GetTopLevel(this) as Window;
if (window is null) return;
var dialog = new PartSearchDialog();
var selectedPart = await dialog.ShowPartSearch(ViewModel.Parts, window);
if (selectedPart is not null)
{
var existingPart = ViewModel.Parts.FirstOrDefault(p => p.InternalPartNumber == selectedPart.InternalPartNumber);
if (existingPart is not null)
ViewModel.SelectedPart = existingPart;
}
}
private async void OnSavePart(object? sender, Avalonia.Interactivity.RoutedEventArgs e)
{
if (ViewModel is null || !ViewModel.CanSave) return;
var existing = ViewModel.Parts.FirstOrDefault(p => p.InternalPartNumber == ViewModel.InternalPartNumber);
if (existing is not null)
{
var window = TopLevel.GetTopLevel(this) as Window;
if (window is null) return;
var confirmed = await ConfirmDialog.Show(window, $"Part '{ViewModel.InternalPartNumber}' already exists. Overwrite?");
if (!confirmed) return;
}
ViewModel.SaveCommand.Execute(null);
}
private void OnNewPart(object? sender, Avalonia.Interactivity.RoutedEventArgs e)
{
if (ViewModel is null) return;
ViewModel.NewPartCommand.Execute(null);
}
private async void OnDeletePart(object? sender, Avalonia.Interactivity.RoutedEventArgs e)
{
if (ViewModel is null || ViewModel.SelectedPart is null) return;
var window = TopLevel.GetTopLevel(this) as Window;
if (window is null) return;
var confirmed = await ConfirmDialog.Show(window, $"Delete part '{ViewModel.SelectedPart.InternalPartNumber}' permanently?");
if (confirmed)
{
ViewModel.DeletePartCommand.Execute(null);
}
}
}