AWGMappingWindow.xaml.cs 3.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Linq.Expressions;
  5. using System.Threading.Tasks;
  6. using System.Windows;
  7. using Comal.Classes;
  8. using InABox.Core;
  9. using InABox.Integration.Awg;
  10. using InABox.Integration.Logikal;
  11. using InABox.WPF;
  12. using PRSDesktop.Integrations.Logikal;
  13. namespace PRSDesktop.Integrations.Common;
  14. public partial class AWGMappingWindow : Window
  15. {
  16. private readonly Action<ProductLink,ProductStyleLink?,IBaseDimensions,double,double>? _partsCallback;
  17. private readonly Action<ActivityLink,TimeSpan, double>? _labourCallback;
  18. private readonly Action<SupplierDiscountGroupLink, double>? _discountCallback;
  19. public AWGMappingWindow(
  20. IntegrationSourceType sourceType,
  21. IEnumerable<IAwgStyle> styles,
  22. IEnumerable<IAwgGroup> groups,
  23. IEnumerable<IAwgSupplier> suppliers,
  24. IEnumerable<IAwgDiscount> discounts,
  25. IEnumerable<IAwgProfile> profiles,
  26. IEnumerable<IAwgGasket> gaskets,
  27. IEnumerable<IAwgComponent> components,
  28. IEnumerable<IAwgGlass> glass,
  29. IEnumerable<IAwgLabour> labour,
  30. Action<SupplierDiscountGroupLink,double>? discountCallback,
  31. Action<ProductLink,ProductStyleLink?,IBaseDimensions,double,double>? partsCallback,
  32. Action<ActivityLink,TimeSpan, double>? labourCallback)
  33. {
  34. InitializeComponent();
  35. _discountCallback = discountCallback;
  36. _partsCallback = partsCallback;
  37. _labourCallback = labourCallback;
  38. ViewModel.SourceType = sourceType;
  39. ViewModel.Styles = styles;
  40. ViewModel.Groups = groups;
  41. ViewModel.Suppliers = suppliers;
  42. ViewModel.Discounts = discounts;
  43. ViewModel.Profiles = profiles;
  44. ViewModel.Gaskets = gaskets;
  45. ViewModel.Components = components;
  46. ViewModel.Glass = glass;
  47. ViewModel.Labour = labour;
  48. }
  49. private void CancelClick(object sender, RoutedEventArgs e)
  50. {
  51. DialogResult = false;
  52. }
  53. private void OKClick(object sender, RoutedEventArgs e)
  54. {
  55. Progress.ShowModal("Processing", progress =>
  56. {
  57. progress.Report("Checking Updates");
  58. Dispatcher.Invoke(() => ViewModel.CheckUpdates());
  59. progress.Report("Getting Discounts");
  60. Dispatcher.Invoke(() => ViewModel.GetDiscounts(_discountCallback));
  61. progress.Report("Processing Items");
  62. Dispatcher.Invoke(() => ViewModel.GetParts(_partsCallback, _labourCallback));
  63. });
  64. DialogResult = true;
  65. }
  66. public void GetParts<TProfile, TGasket, TComponent, TGlass, TLabour>(
  67. IEnumerable<TProfile>? profiles,
  68. IEnumerable<TGasket>? gaskets,
  69. IEnumerable<TComponent>? components,
  70. IEnumerable<TGlass>? glasses,
  71. IEnumerable<TLabour>? labour,
  72. Action<ProductLink, ProductStyleLink?, IBaseDimensions, double, double>? productCallback,
  73. Action<ActivityLink, TimeSpan, double>? labourCallback)
  74. where TProfile : IAwgProfile
  75. where TGasket : IAwgGasket
  76. where TComponent : IAwgComponent
  77. where TGlass : IAwgGlass
  78. where TLabour : IAwgLabour
  79. {
  80. ViewModel.GetParts(profiles, gaskets, components, glasses, labour, productCallback, labourCallback);
  81. }
  82. private void BaseDynamicGrid_OnOnChanged(object? sender, EventArgs e)
  83. {
  84. ViewModel.CheckChanged();
  85. }
  86. }