LogikalSettingsGrid.cs 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  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.Replace("\r\n", " ").Replace('\r', ' ').Replace('\n', ' '), _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<LogikalProfile>("2. Profiles - Design", _item.DesignProfileSQL, errors);
  39. ValidateSQL<LogikalGasket>("3. Gaskets", _item.GasketSQL, errors);
  40. ValidateSQL<LogikalComponent>("4. Components", _item.ComponentSQL, errors);
  41. ValidateSQL<LogikalGlass>("5. Glass", _item.GlassSQL, errors);
  42. ValidateSQL<LogikalLabour>("6. Labour", _item.LabourSQL, errors);
  43. }
  44. public void CheckLogikalQueries(LogikalSettings item)
  45. {
  46. item.FinishSQL = string.IsNullOrWhiteSpace(item.FinishSQL) ? LogikalFinish.SQL.Trim(' ','\r','\n') : item.FinishSQL;
  47. item.BillOfMaterialsProfileSQL = string.IsNullOrWhiteSpace(item.BillOfMaterialsProfileSQL) ? LogikalProfile.BillOfMaterialsSQL.Trim(' ','\r','\n') : item.BillOfMaterialsProfileSQL;
  48. item.DesignProfileSQL = string.IsNullOrWhiteSpace(item.DesignProfileSQL) ? LogikalProfile.DesignSQL.Trim(' ','\r','\n') : item.DesignProfileSQL;
  49. item.GasketSQL = string.IsNullOrWhiteSpace(item.GasketSQL) ? LogikalGasket.SQL.Trim(' ','\r','\n') : item.GasketSQL;
  50. item.ComponentSQL = string.IsNullOrWhiteSpace(item.ComponentSQL) ? LogikalComponent.SQL.Trim(' ','\r','\n') : item.ComponentSQL;
  51. item.GlassSQL = string.IsNullOrWhiteSpace(item.GlassSQL) ? LogikalGlass.SQL.Trim(' ','\r','\n') : item.GlassSQL;
  52. item.LabourSQL = string.IsNullOrWhiteSpace(item.LabourSQL) ? LogikalLabour.SQL.Trim(' ','\r','\n') : item.LabourSQL;
  53. }
  54. }