Update_7_29.cs 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. using Comal.Classes;
  2. using InABox.Core;
  3. using InABox.Database;
  4. using System.Collections.Generic;
  5. using System.Linq;
  6. using System.Text;
  7. using System.Threading.Tasks;
  8. namespace PRS.Shared
  9. {
  10. public class Update_7_30 : DatabaseUpdateScript
  11. {
  12. public override VersionNumber Version => new(7, 30);
  13. public static bool DoTemplates()
  14. {
  15. var rosterTemplates = DbFactory.NewProvider(Logger.Main).Query(null,
  16. Columns.None<EmployeeRoster>().Add(x => x.ID).Add(x => x.Roster)).ToObjects<EmployeeRoster>();
  17. var rosterTemplatesToSave = new List<EmployeeRoster>();
  18. var rosterTemplateItems = new List<EmployeeRosterTemplateItem>();
  19. foreach (var employee in rosterTemplates)
  20. {
  21. if (employee.Roster.IsNullOrWhiteSpace()) continue;
  22. var rosterItems = Serialization.Deserialize<List<EmployeeRosterTemplateItem>>(employee.Roster) ?? new();
  23. employee.Roster = "";
  24. foreach (var item in rosterItems)
  25. {
  26. item.Roster.ID = employee.ID;
  27. rosterTemplateItems.Add(item);
  28. }
  29. rosterTemplatesToSave.Add(employee);
  30. }
  31. DbFactory.NewProvider(Logger.Main).Save(rosterTemplatesToSave);
  32. DbFactory.NewProvider(Logger.Main).Save(rosterTemplateItems);
  33. return true;
  34. }
  35. public static bool DoEmployeeRosters()
  36. {
  37. var employees = DbFactory.NewProvider(Logger.Main).Query(null,
  38. Columns.None<Employee>().Add(x => x.ID).Add(x => x.Roster)).ToObjects<Employee>();
  39. var employeesToSave = new List<Employee>();
  40. var rosterTemplateItems = new List<EmployeeRosterItem>();
  41. foreach (var employee in employees)
  42. {
  43. if (employee.Roster.IsNullOrWhiteSpace()) continue;
  44. var rosterItems = Serialization.Deserialize<List<EmployeeRosterItem>>(employee.Roster) ?? new();
  45. employee.Roster = "";
  46. foreach (var item in rosterItems)
  47. {
  48. item.Employee.ID = employee.ID;
  49. rosterTemplateItems.Add(item);
  50. }
  51. employeesToSave.Add(employee);
  52. }
  53. DbFactory.NewProvider(Logger.Main).Save(employeesToSave);
  54. DbFactory.NewProvider(Logger.Main).Save(rosterTemplateItems);
  55. return true;
  56. }
  57. public override bool Update()
  58. {
  59. return DoTemplates() && DoEmployeeRosters();
  60. }
  61. }
  62. }