Update_7_29.cs 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  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 class Update_7_30 : DatabaseUpdateScript
  12. {
  13. public override VersionNumber Version => new(7, 30);
  14. public static bool DoTemplates()
  15. {
  16. var rosterTemplates = DbFactory.Provider.Query(null,
  17. new Columns<EmployeeRoster>(x => x.ID).Add(x => x.Roster)).ToObjects<EmployeeRoster>();
  18. var rosterTemplatesToSave = new List<EmployeeRoster>();
  19. var rosterTemplateItems = new List<EmployeeRosterTemplateItem>();
  20. foreach (var employee in rosterTemplates)
  21. {
  22. if (employee.Roster.IsNullOrWhiteSpace()) continue;
  23. var rosterItems = Serialization.Deserialize<List<EmployeeRosterTemplateItem>>(employee.Roster) ?? new();
  24. employee.Roster = "";
  25. foreach (var item in rosterItems)
  26. {
  27. item.Roster.ID = employee.ID;
  28. rosterTemplateItems.Add(item);
  29. }
  30. rosterTemplatesToSave.Add(employee);
  31. }
  32. DbFactory.Provider.Save(rosterTemplatesToSave);
  33. DbFactory.Provider.Save(rosterTemplateItems);
  34. return true;
  35. }
  36. public static bool DoEmployeeRosters()
  37. {
  38. var employees = DbFactory.Provider.Query(null,
  39. new Columns<Employee>(x => x.ID).Add(x => x.Roster)).ToObjects<Employee>();
  40. var employeesToSave = new List<Employee>();
  41. var rosterTemplateItems = new List<EmployeeRosterItem>();
  42. foreach (var employee in employees)
  43. {
  44. if (employee.Roster.IsNullOrWhiteSpace()) continue;
  45. var rosterItems = Serialization.Deserialize<List<EmployeeRosterItem>>(employee.Roster) ?? new();
  46. employee.Roster = "";
  47. foreach (var item in rosterItems)
  48. {
  49. item.Employee.ID = employee.ID;
  50. rosterTemplateItems.Add(item);
  51. }
  52. employeesToSave.Add(employee);
  53. }
  54. DbFactory.Provider.Save(employeesToSave);
  55. DbFactory.Provider.Save(rosterTemplateItems);
  56. return true;
  57. }
  58. public override bool Update()
  59. {
  60. return DoTemplates() && DoEmployeeRosters();
  61. }
  62. }
  63. }