예제 #1
0
        private static DashboardCheckpoint GetPreviousCheckpoint(
            IList <DashboardCheckpoint> checkpoints, DashboardCheckpoint checkpoint)
        {
            int prevIndex = checkpoints.IndexOf(checkpoint) - 1;

            return(prevIndex > 0 ? checkpoints[prevIndex] : null);
        }
예제 #2
0
        private static DashboardCheckpoint GetNextCheckpoint(
            IList <DashboardCheckpoint> checkpoints, DashboardCheckpoint checkpoint)
        {
            int nextIndex = checkpoints.IndexOf(checkpoint) + 1;

            return(checkpoints.Count() > nextIndex ? checkpoints[nextIndex] : null);
        }
예제 #3
0
        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);
            }
        }
예제 #4
0
        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);
        }
예제 #5
0
 public void AddCheckpoint(DashboardCheckpoint cp)
 {
     this.Checkpoints.Add(cp);
     this.Checkpoints.Sort((x, y) => x.Order.CompareTo(y.Order));
 }