private static DashboardCheckpoint GetPreviousCheckpoint( IList <DashboardCheckpoint> checkpoints, DashboardCheckpoint checkpoint) { int prevIndex = checkpoints.IndexOf(checkpoint) - 1; return(prevIndex > 0 ? checkpoints[prevIndex] : null); }
private static DashboardCheckpoint GetNextCheckpoint( IList <DashboardCheckpoint> checkpoints, DashboardCheckpoint checkpoint) { int nextIndex = checkpoints.IndexOf(checkpoint) + 1; return(checkpoints.Count() > nextIndex ? checkpoints[nextIndex] : null); }
private static void RemoveExpected( string personId, string happeningId, DashboardCheckpoint checkpoint) { var happening = QueryModelRepository.Dashboard.Happenings[happeningId]; var next = GetNextCheckpoint(happening.Checkpoints, checkpoint); if (next != null) { next.Expected.Remove(personId); } }
private void AddExpectedAt(string happeningId, DateTimeOffset lastExit, string personId, DashboardCheckpoint currentCheckpoint) { var happening = QueryModelRepository.Dashboard.Happenings[happeningId]; var next = GetNextCheckpoint(happening.Checkpoints, currentCheckpoint); if (next == null || next.CheckpointType == CheckpointType.Start) { return; } var speed = this.calculator.Calculate(happening.Checkpoints.OrderBy(a => 1), personId); // Calculate speed to estimate expected at var expectedTime = lastExit.Add(TimeSpan.FromHours((double)next.DistanceFromPrevious / speed.WeightedSpeed)); next.AddExpected(personId, expectedTime); }
public void AddCheckpoint(DashboardCheckpoint cp) { this.Checkpoints.Add(cp); this.Checkpoints.Sort((x, y) => x.Order.CompareTo(y.Order)); }