69 lines
2.3 KiB
C#
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);
|
|
}
|
|
}
|
|
}
|