|
|
|
@ -139,24 +139,28 @@ app.get('/api/seasons/:id', async (req, res) => { |
|
|
|
const seasonDetails = await Season.findOne({_id: id}); |
|
|
|
const seasonRaceDetails = await Race.find({season: id}); |
|
|
|
for (let i = 0; i < seasonRaceDetails.length; i++) { |
|
|
|
let raceRecord = seasonRaceDetails[i]; |
|
|
|
let modableRace = remapRaceInfo(raceRecord); |
|
|
|
let seasonRace = seasonRaceDetails[i]; |
|
|
|
let modableRace = remapRaceInfo(seasonRace); |
|
|
|
|
|
|
|
const fastestTimesMap = new Map(); |
|
|
|
const raceResults = await RaceResult.find('racer', { 'race._id': raceRecord._id }); |
|
|
|
const raceResults = await RaceResult.find({race: seasonRace._id}); |
|
|
|
|
|
|
|
raceResults.forEach(result => { |
|
|
|
const racerId = result.racer._id; |
|
|
|
const timeInSeconds = result.timeInSeconds; |
|
|
|
const timeInMilliseconds = result.timeInMilliseconds; |
|
|
|
|
|
|
|
if (!fastestTimesMap.has(racerId) || timeInSeconds < fastestTimesMap.get(racerId)) { |
|
|
|
fastestTimesMap.set(racerId, timeInSeconds); |
|
|
|
if (!fastestTimesMap.has(racerId) || timeInMilliseconds < fastestTimesMap.get(racerId)) { |
|
|
|
fastestTimesMap.set(racerId, {"racer":racer, "timeInMilliseconds":timeInMilliseconds}); |
|
|
|
} |
|
|
|
}); |
|
|
|
|
|
|
|
modableRace.results = Array.from(fastestTimesMap.entries()).map(([racerId, timeInSeconds]) => ({ |
|
|
|
fastestTimesMap.forEach((values, key) =>{ |
|
|
|
modableRace.results.push({"racer":values.racer, "timeInMilliseconds":values.timeInMilliseconds, "position":0}) |
|
|
|
}) |
|
|
|
|
|
|
|
modableRace.results = Array.from(fastestTimesMap.entries()).map(([racerId, timeInMilliseconds]) => ({ |
|
|
|
racerId, |
|
|
|
timeInSeconds |
|
|
|
timeInMilliseconds |
|
|
|
})); |
|
|
|
|
|
|
|
// This is wrong it will get only the racers the in last race it processes.
|
|
|
|
|