using System; using System.Collections.Generic; using System.Linq; using System.Linq.Expressions; using System.Threading.Tasks; using System.Windows; using Comal.Classes; using InABox.Core; using InABox.Integration.Awg; using InABox.Integration.Logikal; using InABox.WPF; using PRSDesktop.Integrations.Logikal; namespace PRSDesktop.Integrations.Common; public partial class AWGMappingWindow : Window { private readonly Action? _partsCallback; private readonly Action? _labourCallback; private readonly Action? _discountCallback; public AWGMappingWindow( IntegrationSourceType sourceType, IEnumerable styles, IEnumerable groups, IEnumerable suppliers, IEnumerable discounts, IEnumerable profiles, IEnumerable gaskets, IEnumerable components, IEnumerable glass, IEnumerable labour, Action? discountCallback, Action? partsCallback, Action? labourCallback) { InitializeComponent(); _discountCallback = discountCallback; _partsCallback = partsCallback; _labourCallback = labourCallback; ViewModel.SourceType = sourceType; ViewModel.Styles = styles; ViewModel.Groups = groups; ViewModel.Suppliers = suppliers; ViewModel.Discounts = discounts; ViewModel.Profiles = profiles; ViewModel.Gaskets = gaskets; ViewModel.Components = components; ViewModel.Glass = glass; ViewModel.Labour = labour; } private void CancelClick(object sender, RoutedEventArgs e) { DialogResult = false; } private void OKClick(object sender, RoutedEventArgs e) { Progress.ShowModal("Processing", progress => { progress.Report("Checking Updates"); Dispatcher.Invoke(() => ViewModel.CheckUpdates()); progress.Report("Getting Discounts"); Dispatcher.Invoke(() => ViewModel.GetDiscounts(_discountCallback)); progress.Report("Processing Items"); Dispatcher.Invoke(() => ViewModel.GetParts(_partsCallback, _labourCallback)); }); DialogResult = true; } public void GetParts( IEnumerable? profiles, IEnumerable? gaskets, IEnumerable? components, IEnumerable? glasses, IEnumerable? labour, Action? productCallback, Action? labourCallback) where TProfile : IAwgProfile where TGasket : IAwgGasket where TComponent : IAwgComponent where TGlass : IAwgGlass where TLabour : IAwgLabour { ViewModel.GetParts(profiles, gaskets, components, glasses, labour, productCallback, labourCallback); } private void BaseDynamicGrid_OnOnChanged(object? sender, EventArgs e) { ViewModel.CheckChanged(); } }