JobStore.cs 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. using System;
  2. using System.Linq;
  3. using Comal.Classes;
  4. using InABox.Core;
  5. namespace Comal.Stores
  6. {
  7. internal class JobStatusStore : BaseStore<JobStatus>
  8. {
  9. protected override void BeforeSave(JobStatus entity)
  10. {
  11. base.BeforeSave(entity);
  12. var otherrows = Provider.Query(new Filter<JobStatus>(x => x.Default).IsEqualTo(true));
  13. if (entity.Default)
  14. {
  15. if (otherrows.Rows.Any())
  16. {
  17. var others = otherrows.Rows.Select(x => x.ToObject<JobStatus>()).ToArray();
  18. foreach (var other in others)
  19. other.Default = false;
  20. Provider.Save(others);
  21. }
  22. }
  23. else
  24. {
  25. if (!otherrows.Rows.Any())
  26. entity.Default = true;
  27. }
  28. }
  29. }
  30. public class JobStore : ScheduleActionStore<Job>
  31. {
  32. protected override void BeforeSave(Job entity)
  33. {
  34. base.BeforeSave(entity);
  35. if (!entity.Account.IsValid() && entity.Customer.IsValid())
  36. {
  37. Customer final = null;
  38. var customer = Provider.Load(new Filter<Customer>(x => x.ID).IsEqualTo(entity.Customer.ID)).FirstOrDefault();
  39. if (customer != null)
  40. {
  41. final = customer;
  42. if (customer.Account.IsValid())
  43. {
  44. var account = Provider.Load(new Filter<Customer>(x => x.ID).IsEqualTo(customer.Account.ID)).FirstOrDefault();
  45. if (account != null)
  46. final = account;
  47. }
  48. }
  49. entity.Account.Synchronise(final);
  50. }
  51. StoreUtils.Geocode(entity.SiteAddress);
  52. }
  53. protected override void AfterSave(Job entity)
  54. {
  55. base.AfterSave(entity);
  56. //Setout[] setouts = FindSubStore<Setout>().Load(new Filter<Setout>(x => x.JobLink.ID).IsEqualTo(entity.ID));
  57. //for (int i=0; i< setouts.Length; i++)
  58. //{
  59. // Setout setout = setouts[i];
  60. // if ((entity.Name != setout.JobLink.Name) || (entity.Number != setout.JobLink.Number))
  61. // {
  62. // setout.JobLink.Name = entity.Name;
  63. // setout.JobLink.Number = entity.Number;
  64. // FindSubStore<Setout>().Save(ref setout, "Updated Job Number/Name");
  65. // }
  66. //}
  67. //Requisition[] requis = FindSubStore<Requisition>().Load(new Filter<Requisition>(x => x.JobLink.ID).IsEqualTo(entity.ID));
  68. //for (int i = 0; i < requis.Length; i++)
  69. //{
  70. // Requisition requi = requis[i];
  71. // if ((entity.Name != requi.JobLink.Name) || (entity.Number != requi.JobLink.Number))
  72. // {
  73. // requi.JobLink.Name = entity.Name;
  74. // requi.JobLink.Number = entity.Number;
  75. // FindSubStore<Requisition>().Save(ref requi, "Updated Job Number/Name");
  76. // }
  77. //}
  78. //Kanban[] kanbans = FindSubStore<Kanban>().Load(new Filter<Kanban>(x => x.JobID).IsEqualTo(entity.ID));
  79. //for (int i = 0; i < kanbans.Length; i++)
  80. //{
  81. // Kanban kanban = kanbans[i];
  82. // if ((entity.Name != kanban.JobLink.Name) || (entity.Number != kanban.JobLink.Number))
  83. // {
  84. // kanban.JobLink.Name = entity.Name;
  85. // kanban.JobLink.Number = entity.Number;
  86. // FindSubStore<Kanban>().Save(ref kanban, "Updated Job Number/Name");
  87. // }
  88. //}
  89. //DeliveryItem[] items = FindSubStore<DeliveryItem>().Load(new Filter<DeliveryItem>(x => x.JobLink.ID).IsEqualTo(entity.ID));
  90. //for (int i = 0; i < items.Length; i++)
  91. //{
  92. // DeliveryItem item = items[i];
  93. // if ((entity.Name != item.JobLink.Name) || (entity.Number != item.JobLink.Number))
  94. // {
  95. // item.JobLink.Name = entity.Name;
  96. // item.JobLink.Number = entity.Number;
  97. // FindSubStore<DeliveryItem>().Save(ref item, "Updated Job Number/Name");
  98. // }
  99. //}
  100. }
  101. protected override void AfterDelete(Job entity)
  102. {
  103. base.AfterDelete(entity);
  104. var setoutstore = FindSubStore<Setout>();
  105. var setouts = setoutstore.Load(new Filter<Setout>(x => x.JobLink.ID).IsEqualTo(entity.ID));
  106. foreach (var setout in setouts)
  107. setoutstore.Delete(setout, "Cascaded Delete from Job");
  108. }
  109. }
  110. }