Update_7_54.cs 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  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. public class Update_7_54 : DatabaseUpdateScript
  11. {
  12. public override VersionNumber Version => new VersionNumber(7, 54);
  13. private KanbanStatus CalculateStatus(string? category)
  14. {
  15. if (String.IsNullOrWhiteSpace(category) || category.Equals("Open"))
  16. return KanbanStatus.Open;
  17. if(category.Equals("In Progress"))
  18. return KanbanStatus.InProgress;
  19. if (category.Equals("Waiting"))
  20. return KanbanStatus.Waiting;
  21. if (category.Equals("Complete"))
  22. return KanbanStatus.Complete;
  23. return KanbanStatus.Open;
  24. }
  25. public override bool Update()
  26. {
  27. var kanbans = DbFactory.Provider.Query(
  28. typeof(Kanban),
  29. new Filter<Kanban>("Category").IsNotEqualTo(""),
  30. new Columns<Kanban>(x => x.ID).Add(x => x.Status).Add("Category")
  31. ).ToList<Kanban>();
  32. foreach(var kanban in kanbans)
  33. {
  34. var newStatus = CalculateStatus(CoreUtils.GetPropertyValue(kanban,"Category") as String);
  35. if (kanban.Status != newStatus)
  36. kanban.Status = newStatus;
  37. CoreUtils.SetPropertyValue(kanban, "Category", "");
  38. }
  39. DbFactory.Provider.Save(kanbans);
  40. return true;
  41. }
  42. }