LogikalSettingsGrid.cs 4.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using Comal.Classes;
  5. using InABox.DynamicGrid;
  6. using PRSDesktop.Integrations.Logikal;
  7. namespace PRSDesktop;
  8. public class LogikalSettingsGrid : DynamicItemsListGrid<LogikalSettings>
  9. {
  10. private void ValidateSQL<T>(string tag, string sql, List<string> errors) where T : LogikalItem, new()
  11. {
  12. var t = new T();
  13. List<string> _e = new();
  14. t.ValidateQuery(sql, _e);
  15. if (_e.Any())
  16. {
  17. errors.Add($"The query for {tag} has some errors:");
  18. errors.AddRange(_e);
  19. }
  20. }
  21. protected override void DoValidate(LogikalSettings[] items, List<string> errors)
  22. {
  23. base.DoValidate(items, errors);
  24. var _item = items.FirstOrDefault();
  25. if (_item == null)
  26. return;
  27. if (Guid.Equals(_item.ProfileUom.ID, Guid.Empty))
  28. errors.Add("Profile UOM may not be blank");
  29. if (Guid.Equals(_item.GasketUom.ID, Guid.Empty))
  30. errors.Add("Gasket UOM may not be blank");
  31. if (Guid.Equals(_item.ComponentUom.ID, Guid.Empty))
  32. errors.Add("Component UOM may not be blank");
  33. if (Guid.Equals(_item.GlassUom.ID, Guid.Empty))
  34. errors.Add("Glass UOM may not be blank");
  35. CheckLogikalQueries(_item);
  36. ValidateSQL<LogikalFinish>("1. Finishes", _item.FinishSQL, errors);
  37. ValidateSQL<LogikalProfile>("2. Profiles - BOM", _item.BillOfMaterialsProfileSQL, errors);
  38. ValidateSQL<LogikalGasket>("3. Gaskets - BOM", _item.BillOfMaterialsGasketSQL, errors);
  39. ValidateSQL<LogikalComponent>("4. Components - BOM", _item.BillOfMaterialsComponentSQL, errors);
  40. ValidateSQL<LogikalGlass>("5. Glass - BOM", _item.BillOfMaterialsGlassSQL, errors);
  41. ValidateSQL<LogikalLabour>("6. Labour - BOM", _item.BillOfMaterialsLabourSQL, errors);
  42. ValidateSQL<LogikalProfile>("2. Profiles - Design", _item.DesignProfileSQL, errors);
  43. ValidateSQL<LogikalGasket>("3. Gaskets - Design", _item.DesignGasketSQL, errors);
  44. ValidateSQL<LogikalComponent>("4. Components - Design", _item.DesignComponentSQL, errors);
  45. ValidateSQL<LogikalGlass>("5. Glass - Design", _item.DesignGlassSQL, errors);
  46. ValidateSQL<LogikalLabour>("6. Labour - Design", _item.DesignLabourSQL, errors);
  47. }
  48. public void CheckLogikalQueries(LogikalSettings item)
  49. {
  50. item.FinishSQL = string.IsNullOrWhiteSpace(item.FinishSQL) ? LogikalFinish.SQL : item.FinishSQL;
  51. item.BillOfMaterialsProfileSQL = string.IsNullOrWhiteSpace(item.BillOfMaterialsProfileSQL) ? LogikalProfile.BillOfMaterialsSQL : item.BillOfMaterialsProfileSQL;
  52. item.BillOfMaterialsGasketSQL = string.IsNullOrWhiteSpace(item.BillOfMaterialsGasketSQL) ? LogikalGasket.BillOfMaterialsSQL : item.BillOfMaterialsGasketSQL;
  53. item.BillOfMaterialsComponentSQL = string.IsNullOrWhiteSpace(item.BillOfMaterialsComponentSQL) ? LogikalComponent.BillOfMaterialsSQL : item.BillOfMaterialsComponentSQL;
  54. item.BillOfMaterialsGlassSQL = string.IsNullOrWhiteSpace(item.BillOfMaterialsGlassSQL) ? LogikalGlass.BillOfMaterialsSQL : item.BillOfMaterialsGlassSQL;
  55. item.BillOfMaterialsLabourSQL = string.IsNullOrWhiteSpace(item.BillOfMaterialsLabourSQL) ? LogikalLabour.BillOfMaterialsSQL : item.BillOfMaterialsLabourSQL;
  56. item.DesignProfileSQL = string.IsNullOrWhiteSpace(item.DesignProfileSQL) ? LogikalProfile.DesignSQL : item.DesignProfileSQL;
  57. item.DesignGasketSQL = string.IsNullOrWhiteSpace(item.DesignGasketSQL) ? LogikalGasket.DesignSQL : item.DesignGasketSQL;
  58. item.DesignComponentSQL = string.IsNullOrWhiteSpace(item.DesignComponentSQL) ? LogikalComponent.DesignSQL : item.DesignComponentSQL;
  59. item.DesignGlassSQL = string.IsNullOrWhiteSpace(item.DesignGlassSQL) ? LogikalGlass.DesignSQL : item.DesignGlassSQL;
  60. item.DesignLabourSQL = string.IsNullOrWhiteSpace(item.DesignLabourSQL) ? LogikalLabour.DesignSQL : item.DesignLabourSQL;
  61. }
  62. }