示例#1
0
        public async Task <int?> GetPossiblePositionForCurrentSkier(int raceId)
        {
            var current = await GetCurrentSkier(raceId);

            if (current == null)
            {
                return(null);
            }
            var lastTimeData =
                (await _timeDataDao.GetTimeDataForStartList(current.SkierId, current.RaceId))
                .OrderByDescending(td => td?.Sensor?.SensorNumber)
                .First();

            var diff = await _statService.GetDifferenceToLeader(lastTimeData);

            if (diff == null)
            {
                return(1);
            }

            var ranking = await _statService.GetFinishedSkierRanking(raceId);

            return(1 + ranking
                   ?.TakeWhile(raceRanking => (raceRanking?.TimeToLeader ?? 0) < diff.Value.TotalMilliseconds)
                   .Count());
        }