LogikalSettingsGrid.cs 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Windows.Controls;
  5. using Comal.Classes;
  6. using InABox.Core;
  7. using InABox.DynamicGrid;
  8. using PRSDesktop.Integrations.Logikal;
  9. namespace PRSDesktop;
  10. public class LogikalSettingsGrid : DynamicItemsListGrid<LogikalSettings>
  11. {
  12. public override void LoadEditorButtons(LogikalSettings item, DynamicEditorButtons buttons)
  13. {
  14. base.LoadEditorButtons(item, buttons);
  15. buttons.Add("Reset Queries", null, item, ResetQueries);
  16. }
  17. private void ResetQueries(object sender, LogikalSettings item)
  18. {
  19. if (sender is EmbeddedDynamicEditorForm editor)
  20. {
  21. editor.SetEditorValue(nameof(LogikalSettings.FinishSQL), LogikalStyle.SQL);
  22. editor.SetEditorValue(nameof(LogikalSettings.BillOfMaterialsProfileSQL), LogikalProfile.BillOfMaterialsSQL);
  23. editor.SetEditorValue(nameof(LogikalSettings.DesignProfileSQL), LogikalProfile.DesignSQL);
  24. editor.SetEditorValue(nameof(LogikalSettings.GasketSQL), LogikalGasket.SQL);
  25. editor.SetEditorValue(nameof(LogikalSettings.ComponentSQL), LogikalComponent.SQL);
  26. editor.SetEditorValue(nameof(LogikalSettings.GlassSQL), LogikalGlass.SQL);
  27. editor.SetEditorValue(nameof(LogikalSettings.LabourSQL), LogikalLabour.SQL);
  28. }
  29. }
  30. private void ValidateSQL<T>(string tag, string sql, List<string> errors) where T : LogikalItem, new()
  31. {
  32. var t = new T();
  33. List<string> _e = new();
  34. t.ValidateQuery(sql.Replace("\r\n", " ").Replace('\r', ' ').Replace('\n', ' '), _e);
  35. if (_e.Any())
  36. {
  37. errors.Add($"The query for {tag} has some errors:");
  38. errors.AddRange(_e);
  39. }
  40. }
  41. protected override void DoValidate(LogikalSettings[] items, List<string> errors)
  42. {
  43. base.DoValidate(items, errors);
  44. var _item = items.FirstOrDefault();
  45. if (_item == null)
  46. return;
  47. if (Guid.Equals(_item.ProfileUom.ID, Guid.Empty))
  48. errors.Add("Profile UOM may not be blank");
  49. if (Guid.Equals(_item.GasketUom.ID, Guid.Empty))
  50. errors.Add("Gasket UOM may not be blank");
  51. if (Guid.Equals(_item.ComponentUom.ID, Guid.Empty))
  52. errors.Add("Component UOM may not be blank");
  53. if (Guid.Equals(_item.GlassUom.ID, Guid.Empty))
  54. errors.Add("Glass UOM may not be blank");
  55. CheckLogikalQueries(_item);
  56. ValidateSQL<LogikalGroup>("1. Groups", _item.GroupSQL, errors);
  57. ValidateSQL<LogikalStyle>("2. Finishes", _item.FinishSQL, errors);
  58. ValidateSQL<LogikalProfile>("3. Profiles - BOM", _item.BillOfMaterialsProfileSQL, errors);
  59. ValidateSQL<LogikalProfile>("3. Profiles - Design", _item.DesignProfileSQL, errors);
  60. ValidateSQL<LogikalGasket>("4. Gaskets", _item.GasketSQL, errors);
  61. ValidateSQL<LogikalComponent>("5. Components", _item.ComponentSQL, errors);
  62. ValidateSQL<LogikalGlass>("6. Glass", _item.GlassSQL, errors);
  63. ValidateSQL<LogikalLabour>("7. Labour", _item.LabourSQL, errors);
  64. }
  65. public void CheckLogikalQueries(LogikalSettings item)
  66. {
  67. item.GroupSQL = string.IsNullOrWhiteSpace(item.GroupSQL) ? LogikalGroup.SQL.Trim(' ','\r','\n') : item.GroupSQL;
  68. item.FinishSQL = string.IsNullOrWhiteSpace(item.FinishSQL) ? LogikalStyle.SQL.Trim(' ','\r','\n') : item.FinishSQL;
  69. item.BillOfMaterialsProfileSQL = string.IsNullOrWhiteSpace(item.BillOfMaterialsProfileSQL) ? LogikalProfile.BillOfMaterialsSQL.Trim(' ','\r','\n') : item.BillOfMaterialsProfileSQL;
  70. item.DesignProfileSQL = string.IsNullOrWhiteSpace(item.DesignProfileSQL) ? LogikalProfile.DesignSQL.Trim(' ','\r','\n') : item.DesignProfileSQL;
  71. item.GasketSQL = string.IsNullOrWhiteSpace(item.GasketSQL) ? LogikalGasket.SQL.Trim(' ','\r','\n') : item.GasketSQL;
  72. item.ComponentSQL = string.IsNullOrWhiteSpace(item.ComponentSQL) ? LogikalComponent.SQL.Trim(' ','\r','\n') : item.ComponentSQL;
  73. item.GlassSQL = string.IsNullOrWhiteSpace(item.GlassSQL) ? LogikalGlass.SQL.Trim(' ','\r','\n') : item.GlassSQL;
  74. item.LabourSQL = string.IsNullOrWhiteSpace(item.LabourSQL) ? LogikalLabour.SQL.Trim(' ','\r','\n') : item.LabourSQL;
  75. }
  76. }