Example #1
0
        public static TeamSessionViewModel Convert(TeamSession teamSession)
        {
            TeamSessionViewModel model = new TeamSessionViewModel()
            {
                TeamId = teamSession.TeamId,
                Team   = teamSession.Team == null ? null : TeamConverter.Convert(teamSession.Team),
                LeagueSessionScheduleId = teamSession.LeagueSessionScheduleId
            };

            return(model);
        }
        public async Task <bool> PublishSessionsSchedulesAsync(List <LeagueSessionScheduleViewModel> newLeagueSessionsSchedules, CancellationToken ct = default(CancellationToken))
        {
            List <LeagueSessionSchedule> leagueSessionOperations = new List <LeagueSessionSchedule>();

            foreach (LeagueSessionScheduleViewModel newSchedule in newLeagueSessionsSchedules)
            {
                LeagueSessionSchedule leagueSessionSchedule = new LeagueSessionSchedule()
                {
                    Active        = newSchedule.Active,
                    LeagueID      = newSchedule.LeagueID,
                    ByeWeeks      = newSchedule.ByeWeeks,
                    NumberOfWeeks = newSchedule.NumberOfWeeks,
                    SessionStart  = newSchedule.SessionStart,
                    SessionEnd    = newSchedule.SessionEnd
                };

                // create game day entry for all configured game days
                foreach (GameDayViewModel gameDay in newSchedule.GamesDays)
                {
                    GameDay newGameDay = new GameDay()
                    {
                        GamesDay = gameDay.GamesDay
                    };

                    // create game time entry for every game day
                    foreach (GameTimeViewModel gameTime in gameDay.GamesTimes)
                    {
                        GameTime newGameTime = new GameTime()
                        {
                            GamesTime = DateTimeOffset.FromUnixTimeSeconds(gameTime.GamesTime).DateTime.ToLocalTime(),
                        };

                        newGameDay.GamesTimes.Add(newGameTime);
                    }

                    leagueSessionSchedule.GamesDays.Add(newGameDay);
                }

                // update teams sessions
                foreach (TeamSessionViewModel teamSession in newSchedule.TeamsSessions)
                {
                    // retrieve the team with the corresponding id
                    Team team = await this._teamRepository.GetByIdAsync(teamSession.TeamId, ct);

                    if (team != null)
                    {
                        TeamSession newTeamSession = new TeamSession()
                        {
                            Team = team,
                            LeagueSessionSchedule = leagueSessionSchedule
                        };

                        leagueSessionSchedule.TeamsSessions.Add(newTeamSession);
                    }
                }

                // update matches for this session
                foreach (MatchViewModel match in newSchedule.Matches)
                {
                    // if match DateTime is not set do not add it to the database
                    if (match.DateTime != 0)
                    {
                        Match newMatch = new Match()
                        {
                            DateTime   = match.DateTime,
                            HomeTeamId = match.HomeTeamId,
                            AwayTeamId = match.AwayTeamId,
                            LeagueID   = match.LeagueID
                        };

                        MatchResult newMatchResult = new MatchResult()
                        {
                            LeagueId   = match.LeagueID,
                            HomeTeamId = match.HomeTeamId,
                            AwayTeamId = match.AwayTeamId
                        };

                        newMatch.MatchResult = newMatchResult;

                        leagueSessionSchedule.Matches.Add(newMatch);
                    }
                }

                leagueSessionOperations.Add(await this._sessionScheduleRepository.AddScheduleAsync(leagueSessionSchedule, ct));
            }

            // ensure all leagueSessionOperations did not return any null values
            return(leagueSessionOperations.All(op => op != null));
        }