DatabaseUpdateScripts.cs 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160
  1. using Comal.Classes;
  2. using InABox.Core;
  3. using InABox.Database;
  4. using System;
  5. using System.Collections.Generic;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Threading.Tasks;
  9. namespace PRS.Shared
  10. {
  11. public static class DatabaseUpdateScripts
  12. {
  13. public static void RegisterScripts()
  14. {
  15. DataUpdater.RegisterUpdateScript("6.31", Update_6_31);
  16. DataUpdater.RegisterUpdateScript("6.37", Update_6_37);
  17. DataUpdater.RegisterUpdateScript("6.38", Update_6_38);
  18. DataUpdater.RegisterUpdateScript("6.39", Update_6_39);
  19. }
  20. private static Dictionary<string, Tuple<string, string>> _6_31_module_map = new()
  21. {
  22. { "Assignments", new("Assignments", "Assignments") },
  23. { "Daily Report", new("Daily Report", "Assignments") },
  24. { "Delivered On Site", new("Delivered On Site", "Delivery Items") },
  25. { "Deliveries", new("Deliveries", "Deliveries") },
  26. { "Digital Forms", new("Digital Forms", "DigitalForm") },
  27. { "Employee List", new("Employees", "Employee") },
  28. { "Equipment List", new("Equipment", "Equipment") },
  29. { "Factory Floor", new("Factory", "Manufacturing Packets") },
  30. { "Incoming Consignments", new("Consignments", "Consignment") },
  31. { "Manufacturing Status", new("Manufacturing Packets", "Manufacturing Packets") },
  32. { "Product List", new("Products", "Products") },
  33. { "Projects", new("Job Details", "Job Details") },
  34. { "Purchase Orders", new("Purchase Orders", "PurchaseOrder") },
  35. { "Quotes", new("Quotes", "Quotes") },
  36. { "Rack List", new("Shipping", "Shipments") },
  37. { "Site Requisitions", new("Requisitions", "Requisition") },
  38. { "Staff TimeSheets", new("Timesheets", "TimeSheet") },
  39. { "Stock Locations", new("Stock Locations", "StockLocation") },
  40. { "Stock Movements", new("Stock Movements", "StockMovement") },
  41. { "Task List", new("Tasks By Status", "Kanban") },
  42. };
  43. private static bool Update_6_31()
  44. {
  45. var modules = DbFactory.Provider.Query(new Filter<CustomModule>().All())
  46. .Rows.Select(x => x.ToObject<CustomModule>()).ToList();
  47. foreach(var module in modules)
  48. {
  49. if (!string.IsNullOrWhiteSpace(module.Section))
  50. {
  51. if (_6_31_module_map.TryGetValue(module.Section, out var map))
  52. {
  53. module.Section = map.Item1;
  54. module.DataModel = map.Item2;
  55. module.AllRecords = true;
  56. }
  57. else
  58. {
  59. Logger.Send(LogType.Error, "", $"Custom Module '{module.Name}' has section name '{module.Section}' and will no longer be visible!");
  60. }
  61. }
  62. }
  63. DbFactory.Provider.Save(modules);
  64. return true;
  65. }
  66. private static bool Update_6_37()
  67. {
  68. Logger.Send(LogType.Information, "", "Recreating views");
  69. DbFactory.Provider.ForceRecreateViews();
  70. return true;
  71. }
  72. private static bool Update_6_38()
  73. {
  74. Logger.Send(LogType.Information, "", "Converting Job Requisition Dates to Due Dates");
  75. List<JobRequisition> updates = new List<JobRequisition>();
  76. var columns = new Columns<JobRequisition>(x => x.ID);
  77. columns.Add("Date");
  78. CoreTable requis = DbFactory.Provider.Query<JobRequisition>(null, columns);
  79. foreach (var row in requis.Rows)
  80. {
  81. var requi = row.ToObject<JobRequisition>();
  82. requi.Approved = row.Get<DateTime>("Date");
  83. updates.Add(requi);
  84. }
  85. DbFactory.Provider.Save(updates);
  86. return true;
  87. }
  88. private static bool Update_6_39()
  89. {
  90. void ConvertJobDocumentIssuedDates()
  91. {
  92. Logger.Send(LogType.Information, "", "Converting Job Document Issued Dates");
  93. List<JobDocumentSetMileStone> updates = new List<JobDocumentSetMileStone>();
  94. var columns = new Columns<JobDocumentSetMileStone>(x => x.ID).Add(x => x.Submitted).Add(x => x.Status);
  95. columns.Add("Issued");
  96. CoreTable milestones = DbFactory.Provider.Query<JobDocumentSetMileStone>(null, columns);
  97. foreach (var row in milestones.Rows)
  98. {
  99. var milestone = row.ToObject<JobDocumentSetMileStone>();
  100. if (milestone.Status == JobDocumentSetMileStoneStatus.Unknown)
  101. milestone.Status = JobDocumentSetMileStoneStatus.Submitted;
  102. milestone.Submitted = row.Get<DateTime>("Issued");
  103. updates.Add(milestone);
  104. }
  105. DbFactory.Provider.Save(updates);
  106. }
  107. void ConvertProductUnitsOfMeasure()
  108. {
  109. Logger.Send(LogType.Information, "", "Converting Product Units of Measure");
  110. List<ProductDimensionUnit> updates = new List<ProductDimensionUnit>();
  111. var columns = new Columns<ProductDimensionUnit>(x => x.ID).Add(x => x.Description);
  112. CoreTable units = DbFactory.Provider.Query<ProductDimensionUnit>(new Filter<ProductDimensionUnit>(x=>x.Code).IsEqualTo(""), columns);
  113. foreach (var row in units.Rows)
  114. {
  115. var unit = row.ToObject<ProductDimensionUnit>();
  116. unit.Code = unit.Description;
  117. updates.Add(unit);
  118. }
  119. DbFactory.Provider.Save(updates);
  120. }
  121. void ConvertQuoteUnitsOfMeasure()
  122. {
  123. Logger.Send(LogType.Information, "", "Converting Quote Units of Measure");
  124. List<QuoteTakeOffUnit> updates = new List<QuoteTakeOffUnit>();
  125. var columns = new Columns<QuoteTakeOffUnit>(x => x.ID).Add(x => x.Description);
  126. CoreTable units = DbFactory.Provider.Query<QuoteTakeOffUnit>(new Filter<QuoteTakeOffUnit>(x=>x.Code).IsEqualTo(""), columns);
  127. foreach (var row in units.Rows)
  128. {
  129. var unit = row.ToObject<QuoteTakeOffUnit>();
  130. unit.Code = unit.Description;
  131. updates.Add(unit);
  132. }
  133. DbFactory.Provider.Save(updates);
  134. }
  135. ConvertJobDocumentIssuedDates();
  136. ConvertProductUnitsOfMeasure();
  137. ConvertQuoteUnitsOfMeasure();
  138. return true;
  139. }
  140. }
  141. }