LogikalCommon.cs 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. using Comal.Classes;
  2. using InABox.Core;
  3. using InABox.Wpf;
  4. using InABox.WPF;
  5. using javax.swing;
  6. using System;
  7. using System.Collections.Generic;
  8. using System.Linq;
  9. using System.Text;
  10. using System.Threading.Tasks;
  11. namespace PRSDesktop.Integrations.Logikal
  12. {
  13. public static class LogikalCommon
  14. {
  15. public static JobStatus? JobStatus { get; private set; }
  16. public static TaxCode? TaxCode { get; private set; }
  17. public static ProductDimensionUnit? ProfileUOM { get; private set; }
  18. public static ProductDimensionUnit? ComponentUOM { get; private set; }
  19. public static ProductDimensionUnit? GlassUOM { get; private set; }
  20. public static bool CheckSettings(LogikalSettings settings)
  21. {
  22. List<String> errors = new();
  23. MultiQuery query = new MultiQuery();
  24. Progress.ShowModal("Checking Settings", progress =>
  25. {
  26. if (settings.ImportJobs)
  27. query.Add(
  28. new Filter<JobStatus>(x => x.Code).IsEqualTo(settings.JobStatus),
  29. Columns.All<JobStatus>()
  30. );
  31. query.Add(
  32. new Filter<TaxCode>(x => x.Code).IsEqualTo(settings.TaxCode),
  33. Columns.All<TaxCode>()
  34. );
  35. query.Add(
  36. new Filter<ProductDimensionUnit>(x => x.Code)
  37. .InList([settings.ProfileUom, settings.ComponentUom, settings.GlassUom]),
  38. Columns.All<ProductDimensionUnit>()
  39. );
  40. query.Query();
  41. });
  42. if (settings.ImportJobs)
  43. {
  44. JobStatus = query.Get<JobStatus>().ToObjects<JobStatus>().FirstOrDefault();
  45. if (JobStatus == null)
  46. errors.Add("Job Status has not been configured correctly!");
  47. }
  48. TaxCode = query.Get<TaxCode>().ToObjects<TaxCode>().FirstOrDefault();
  49. if (TaxCode == null)
  50. errors.Add("Tax Code has not been configured correctly!");
  51. var _uoms = query.Get<ProductDimensionUnit>().ToObjects<ProductDimensionUnit>().ToList();
  52. ProfileUOM = _uoms.FirstOrDefault(x => string.Equals(x.Code, settings.ProfileUom));
  53. ComponentUOM = _uoms.FirstOrDefault(x => string.Equals(x.Code, settings.ComponentUom));
  54. GlassUOM = _uoms.FirstOrDefault(x => string.Equals(x.Code, settings.GlassUom));
  55. if (ProfileUOM == null)
  56. errors.Add("Profile UOM has not been configured correctly!");
  57. if (ComponentUOM == null)
  58. errors.Add("Component UOM has not been configured correctly!");
  59. if (GlassUOM == null)
  60. errors.Add("Glass UOM has not been configured correctly!");
  61. if (errors.Any())
  62. {
  63. MessageWindow.ShowMessage(
  64. $"Some Configuration Settings are incorrect:\n\n- {string.Join("\n- ", errors)}\n\nPlease correct this and try again.",
  65. "Error");
  66. return false;
  67. }
  68. return true;
  69. }
  70. }
  71. }