Пример #1
0
        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);
        }