Exemplo n.º 1
0
 public void GetAllRaces_NoRaces_ReturnsZero()
 {
     Assert.Empty(_raceManager.GetAllRaces());
 }
Exemplo n.º 2
0
        public JsonResult GetLastRaceResultById(int id)
        {
            _logger.LogInformation("GET /GetLastRaceResultById");
            ResponseObject.RaceResultByID raceResult = new ResponseObject.RaceResultByID
            {
                id = id,
                responseMessage = "success"
            };

            try
            {
                if (_raceManager.GetRaceState() != RaceState.Finished)
                {
                    raceResult.responseMessage = "Race is not finished.";
                    return(Json(raceResult));
                }

                Race lastRace   = _raceManager.GetAllRaces().Last();
                int  placeIndex = lastRace.GetFinishedParticipants().IndexOf(id); // -1 if not found
                Dictionary <int, List <Lap> > raceResults = _raceManager.GetCurrentRaceResults();
                bool idFound = raceResults.TryGetValue(id, out List <Lap> laps);

                if (placeIndex < 0 || !idFound)
                {
                    raceResult.responseMessage = "ID [" + id + "] was not found.";
                    return(Json(raceResult));
                }

                raceResult.place = placeIndex + 1;
                Lap      fastestLap = new Lap(0, new TimeSpan(0));
                TimeSpan totalTime  = new TimeSpan();

                for (int i = 0; i < laps.Count; i++)
                {
                    if (i == 0)
                    {
                        fastestLap        = laps[0];
                        fastestLap.Number = laps[0].Number;
                    }
                    else if (laps[i].Time < fastestLap.Time)
                    {
                        fastestLap = laps[i];
                    }
                    totalTime += laps[i].Time;
                }

                raceResult.overallTime             = totalTime.ToString();
                raceResult.overallTimeMilliseconds = totalTime.TotalMilliseconds;
                raceResult.fastestLap             = fastestLap.Time.ToString();
                raceResult.fastestLapMilliseconds = fastestLap.Time.TotalMilliseconds;
                raceResult.fastestLapNumber       = fastestLap.Number;

                return(Json(raceResult));
            }
            catch (Exception error)
            {
                _logger.LogError("RaceTimer/GetLastRaceResultById Exception: " + error.Message);

                raceResult.responseMessage = error.Message;

                return(new JsonResult(raceResult)

                {
                    StatusCode = (int)HttpStatusCode.BadRequest
                });
            }
        }