Advertisement
Guest User

Untitled

a guest
Nov 27th, 2015
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.63 KB | None | 0 0
  1. public List<ExpandedDependency> GetDependenciesInLockHorizon(int instanceId, DateTimeOffset now, DateTimeOffset horizon)
  2. {
  3. using (var cnt = new ApplicationDbContext())
  4. {
  5. var query = from j in cnt.Jobs
  6. join d in cnt.Dependencies on j.Id equals d.JobId
  7. join d1 in cnt.Dependencies on d.TaskBId equals d1.TaskAId into DepJoin
  8. from dep in DepJoin.DefaultIfEmpty()
  9. join t1 in cnt.Tasks on d.TaskAId equals t1.Id
  10. join t2 in cnt.Tasks on d.TaskBId equals t2.Id
  11. join t3 in cnt.Tasks on dep.TaskBId equals t3.Id into tasksjoin
  12. from tas in tasksjoin.DefaultIfEmpty()
  13. join s1 in cnt.Segments on t1.Id equals s1.TaskId
  14. join s2 in cnt.Segments on t2.Id equals s2.TaskId
  15. join s3 in cnt.Segments on tas.Id equals s3.TaskId
  16. where
  17. d.TaskA.InstanceId == instanceId &&
  18. j.Status != JobStatus.Reserved && j.Status != JobStatus.Excluded && j.Status != JobStatus.Historic && j.ValidationStatus == ValidationStatus.VALIDATED &&
  19. //!d.TaskA.AutoWorkerFixed &&
  20. s1.ActivitySubType == SubType.PREPARE && s2.ActivitySubType == SubType.REVIEW &&
  21. (
  22. (
  23. (d.TaskA.WorkerId != null && d.TaskA.Start.HasValue && d.TaskA.Start < horizon.UtcDateTime && d.TaskA.End.HasValue && d.TaskA.End > now)
  24. || (d.TaskB.WorkerId != null && d.TaskB.Start.HasValue && d.TaskB.Start < horizon.UtcDateTime && d.TaskB.End.HasValue && d.TaskB.End > now)
  25. )
  26. || (d.TaskA.AutoWorkerFixed || d.TaskB.AutoWorkerFixed || tas.AutoWorkerFixed)
  27. )
  28. group new { s1, s2 ,s3} by
  29. new
  30. {
  31. jobStatus = j.Status,
  32. jobValidationStatus = j.ValidationStatus,
  33. prepId = t1.Id,
  34. prepFixed = t1.AutoWorkerFixed,
  35. prepStart = t1.Start,
  36. revId = t2.Id,
  37. revFixed = t2.AutoWorkerFixed,
  38. revStart = t2.Start,
  39. qrId = tas.Id,
  40. qrFixed = tas.AutoWorkerFixed,
  41. qrStart = tas.Start,
  42. } into grp
  43. select new ExpandedDependency
  44. {
  45. PrepareTask = new ExpandedTask
  46. {
  47. obj = new { Id = grp.Key.prepId, AutoWorkerFixed = grp.Key.prepFixed, Start = grp.Key.prepStart },
  48. JobStatus = grp.Key.jobStatus,
  49. JobValidationStatus = grp.Key.jobValidationStatus,
  50. TaskActivities = grp.Where(g => g.s1.ActivityId.HasValue).Select(g => g.s1.ActivityId.Value).ToList()
  51. }
  52. ,
  53. ReviewTask = new ExpandedTask
  54. {
  55. obj = new { Id = grp.Key.revId, AutoWorkerFixed = grp.Key.revFixed, Start = grp.Key.revStart },
  56. JobStatus = grp.Key.jobStatus,
  57. JobValidationStatus = grp.Key.jobValidationStatus,
  58. TaskActivities = grp.Where(g => g.s2.ActivityId.HasValue).Select(g => g.s2.ActivityId.Value).ToList()
  59. },
  60. QrTask = new ExpandedTask
  61. {
  62. obj = new { Id = grp.Key.qrId, AutoWorkerFixed = grp.Key.qrFixed, Start = grp.Key.qrStart },
  63. JobStatus = grp.Key.jobStatus,
  64. JobValidationStatus = grp.Key.jobValidationStatus,
  65. TaskActivities = grp.Where(g => g.s3.ActivityId.HasValue).Select(g => g.s3.ActivityId.Value).ToList()
  66. }
  67. };
  68.  
  69. return query.ToList();
  70. }
  71. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement