public Dictionary <string, List <ScheduleView> > SetupSchedule(Dictionary <Guid, TeamRosterEntity> rosters, List <DivisionEntity> divisions, List <ScheduleEntity> schedules) { var views = new Dictionary <string, List <ScheduleView> >(); foreach (var schedule in schedules) { rosters.TryGetValue(schedule.HomeRosterTeamId, out var homeTeam); rosters.TryGetValue(schedule.AwayRosterTeamId, out var awayTeam); var homeTeamName = homeTeam?.TeamName ?? "BYE"; var awayTeamName = awayTeam?.TeamName ?? "BYE"; if (homeTeamName == "BYE" || awayTeamName == "BYE") { continue; } string division; if (homeTeam != null) { division = divisions.First(x => x.LowerLimit <= homeTeam.TeamTierScore && x.UpperLimit >= homeTeam.TeamTierScore).Name; } else if (awayTeam != null) { division = divisions.First(x => x.LowerLimit <= awayTeam.TeamTierScore && x.UpperLimit >= awayTeam.TeamTierScore).Name; } else { continue; } views.TryGetValue(division, out var view); if (view == null) { views.Add(division, new List <ScheduleView> { _scheduleMapper.Map(schedule, homeTeamName, awayTeamName) }); } else { view.Add(_scheduleMapper.Map(schedule, homeTeamName, awayTeamName)); } } var divisionOrder = divisions.OrderBy(x => x.UpperLimit).Select(x => x.Name).ToList(); views = views.OrderByDescending(x => divisionOrder.IndexOf(x.Key)).ThenBy(x => x.Value.Select(y => y.WeekOf)).ToDictionary(x => x.Key, x => x.Value); return(views); }
public async Task <IEnumerable <ScheduleView> > GetTeamSchedule(Guid rosterId) { var views = new List <ScheduleView>(); //TODO: Uncomment when testing //var seasons = (await _seasonInfoRepository.GetAllSeasonsAsync()).OrderByDescending(x => x.SeasonStartDate).ToList(); //var seasonInfo = seasons[1]; //TODO: Uncomment when ready to push var seasonInfo = await _seasonInfoRepository.GetCurrentSeasonAsync(); var schedulesTask = _scheduleRepository.GetAllAsync(seasonInfo.Id); var rostersTask = _teamRosterRepository.GetAllTeamsAsync(seasonInfo.Id); var rosters = (await rostersTask).ToDictionary(x => x.Id, x => x); var schedules = (await schedulesTask).ToList(); foreach (var schedule in schedules) { if (schedule.HomeRosterTeamId != rosterId && schedule.AwayRosterTeamId != rosterId) { continue; } rosters.TryGetValue(schedule.HomeRosterTeamId, out var homeTeam); rosters.TryGetValue(schedule.AwayRosterTeamId, out var awayTeam); if (homeTeam != null && awayTeam != null) { views.Add(_scheduleMapper.Map(schedule, homeTeam.TeamName, awayTeam.TeamName)); } } return(views); }