Update_7_31.cs 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. using Comal.Classes;
  2. using FastReport.DevComponents.DotNetBar;
  3. using InABox.Core;
  4. using InABox.Database;
  5. using System;
  6. using System.Collections.Generic;
  7. using System.Linq;
  8. using System.Text;
  9. using System.Threading.Tasks;
  10. namespace PRS.Shared
  11. {
  12. public class Update_7_31 : DatabaseUpdateScript
  13. {
  14. public override VersionNumber Version => new VersionNumber(7, 31);
  15. private static void Migrate<T>()
  16. where T : Entity, IPersistent, IPostable, new()
  17. {
  18. List<T> items;
  19. do
  20. {
  21. items = DbFactory.Provider.Query<T>(
  22. new Filter<T>(x => x.PostedStatus).IsEqualTo(null),
  23. new Columns<T>(x => x.ID).Add(x => x.PostedStatus), top: 1000).ToObjects<T>().ToList();
  24. foreach (var item in items)
  25. {
  26. item.PostedStatus = PostedStatus.NeverPosted;
  27. item.OriginalValues.TryAdd("PostedStatus", null);
  28. }
  29. DbFactory.Provider.Save(items);
  30. Logger.Send(LogType.Information, "", $"{items.Count} {typeof(T).Name}s processed");
  31. } while (items.Count > 0);
  32. }
  33. public override bool Update()
  34. {
  35. Migrate<Bill>();
  36. Migrate<Invoice>();
  37. Migrate<PurchaseOrder>();
  38. Migrate<TimeSheet>();
  39. return true;
  40. }
  41. }
  42. }