public async Task <CompetitorStatsViewModel> GetCompetitorStatsAsync( string clubInitials, string sailor) { // sailor will usually be sailNumber but falls back to name if no number. var clubId = await _coreClubService.GetClubId(clubInitials); var comps = await _coreCompetitorService.GetCompetitorsAsync(clubId, null, true); IList <Competitor> inactiveCompetitors; var comp = comps.Where(c => c.IsActive) .FirstOrDefault(c => String.Equals(c.SailNumber, sailor, StringComparison.OrdinalIgnoreCase)); if (comp == null) { // check for inactive. comp = comps.Where(c => !c.IsActive) .FirstOrDefault(c => String.Equals(c.SailNumber, sailor, StringComparison.OrdinalIgnoreCase)); } comp ??= comps.FirstOrDefault(c => String.Equals(UrlUtility.GetUrlName(c.Name), sailor, StringComparison.OrdinalIgnoreCase)); if (comp == null) { return(null); } var vm = _mapper.Map <CompetitorStatsViewModel>(comp); vm.SeasonStats = await _coreCompetitorService.GetCompetitorStatsAsync(clubId, comp.Id); return(vm); }