Update_7_40.cs 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. using Comal.Classes;
  2. using InABox.Core;
  3. using InABox.Database;
  4. namespace PRS.Shared;
  5. public class Update_7_40 : DatabaseUpdateScript
  6. {
  7. public override VersionNumber Version => new VersionNumber(7, 40);
  8. public override bool Update()
  9. {
  10. UpdateRequitionItemJobLinks();
  11. return true;
  12. }
  13. private void UpdateRequitionItemJobLinks()
  14. {
  15. var requijobs = DbFactory.Provider
  16. .Query<Requisition>(null, new Columns<Requisition>(x => x.ID, x => x.JobLink.ID))
  17. .ToDictionary<Requisition, Guid, Guid>(x => x.ID, x => x.JobLink.ID);
  18. var filter = new Filter<RequisitionItem>(x => x.JobLink.ID)
  19. .IsEqualTo(Guid.Empty);
  20. var columns = new Columns<RequisitionItem>()
  21. .Add(x => x.ID)
  22. .Add(x=>x.RequisitionLink.ID)
  23. .Add(x=>x.RequisitionLink.Filled)
  24. .Add(x=>x.RequisitionLink.Archived)
  25. .Add(x => x.JobLink.ID)
  26. .Add("Job.ID");
  27. var items = DbFactory.Provider.Query(typeof(RequisitionItem), filter, columns)
  28. .Rows
  29. .Select(r => r.ToObject<RequisitionItem>())
  30. .ToArray();
  31. foreach (var item in items)
  32. {
  33. requijobs.TryGetValue(item.RequisitionLink.ID, out Guid jobid);
  34. item.JobLink.ID = jobid;
  35. CoreUtils.SetPropertyValue(item,"Job.ID", jobid);
  36. }
  37. DbFactory.Provider.Save<RequisitionItem>(items);
  38. Logger.Send(LogType.Information, "", $"{items.Length} requisition items processed");
  39. }
  40. }