/// <summary> /// Returns Result containing the unadjusted seedtime for the Swimmer in the given HeatSheetEvent for the specified SeedTimeType /// </summary> /// <param name="HeatSheetEventID"></param> /// <param name="SeedTimeType"></param> /// <returns></returns> public Result GetSeedTime(int HeatSheetEventID, int SwimmerTeamSeasonID, SeedTimeType SeedTimeType) { Result returnResult = new Result(); SwimmerTeamSeason sts = Ctx.SwimmerTeamSeasonManager.SwimmerTeamSeasonGet(SwimmerTeamSeasonID); ResultCollection results = Ctx.ResultManager.ResultGetAllByHeatSheetEventIDSwimmerID(HeatSheetEventID, sts.SwimmerID); //Returns all results for this swimmer, for the stroke & distance in the given HSE if (results.Count > 0) { switch (SeedTimeType) { case SeedTimeType.MostRecent: results.Sort("EventDate", LAAF.Common.Helper.SortDirection.Descending); returnResult = results[0]; break; case SeedTimeType.SeasonBest: Season s = Ctx.SeasonManager.SeasonGetByHeatSheetEventID(HeatSheetEventID); IEnumerable<Result> sortedResults = from r in results where r.EventDate > s.StartDate orderby r.ElapsedTime ascending select r; if (sortedResults.Count() > 0) { returnResult = ((Result)sortedResults.First()); } break; case SeedTimeType.PersonalBest: results.Sort("ElapsedTime", LAAF.Common.Helper.SortDirection.Ascending); returnResult = results[0]; break; default: break; } } //if no results are returned, return an empty result with the Swimmer's ID else { returnResult.SwimmerTeamSeasonID = sts.SwimmerTeamSeasonID; returnResult.ElapsedTime = 0D; } return returnResult; }
/// <summary> /// Returns a Dictionary<TeamID,List<Result>> object containing the seed times for the members of a team, grouped by team /// </summary> /// <param name="HeatSheetEventID"></param> /// <param name="SwimmerTeamSeasonIDs"></param> /// <param name="seedTimeType"></param> /// <returns></returns> private Dictionary<int, List<Result>> GetTeamResults(int HeatSheetEventID, List<int> SwimmerTeamSeasonIDs, SeedTimeType seedTimeType) { Dictionary<int, List<Result>> teamResults = new Dictionary<int, List<Result>>(); //get the SeedTime for each swimmer Result result = null; foreach (int swimmerTeamSeasonID in SwimmerTeamSeasonIDs) { SwimmerTeamSeason sts = Ctx.SwimmerTeamSeasonManager.SwimmerTeamSeasonGet(swimmerTeamSeasonID); result = GetSeedTime(HeatSheetEventID, swimmerTeamSeasonID, seedTimeType); result.ElapsedTime = (result.ElapsedTime > 0) ? result.ElapsedTime : 100000.0D; if (!teamResults.Keys.Contains(sts.TeamSeasonID)) { teamResults.Add(sts.TeamSeasonID, new List<Result>()); } ((List<Result>)teamResults[sts.TeamSeasonID]).Add(result); } foreach (KeyValuePair<int, List<Result>> item in teamResults) { item.Value.Sort(delegate(Result s1, Result s2) { return s1.ElapsedTime.CompareTo(s2.ElapsedTime); }); } return teamResults; }