コード例 #1
0
        public async Task <LeagueSessionSchedule> AddScheduleAsync(LeagueSessionSchedule newLeagueSessionSchedule, CancellationToken ct = default)
        {
            this._dbContext.LeagueSessions.Add(newLeagueSessionSchedule);
            await this._dbContext.SaveChangesAsync(ct);

            return(newLeagueSessionSchedule);
        }
コード例 #2
0
        public async Task <bool> UpdateSessionScheduleAsync(LeagueSessionSchedule leagueSessionScheduleToUpdate, CancellationToken ct = default)
        {
            if (!await LeagueSessionScheduleExists(leagueSessionScheduleToUpdate.Id, ct))
            {
                return(false);
            }

            this._dbContext.LeagueSessions.Update(leagueSessionScheduleToUpdate);
            await this._dbContext.SaveChangesAsync(ct);

            return(true);
        }
コード例 #3
0
        public static LeagueSessionScheduleViewModel Convert(LeagueSessionSchedule sessionSchedule)
        {
            LeagueSessionScheduleViewModel model = new LeagueSessionScheduleViewModel();

            model.Active        = sessionSchedule.Active;
            model.ByeWeeks      = sessionSchedule.ByeWeeks;
            model.GamesDays     = GameDayConverter.ConvertList(sessionSchedule.GamesDays);
            model.Id            = sessionSchedule.Id;
            model.LeagueID      = sessionSchedule.LeagueID;
            model.Matches       = MatchConverter.ConvertList(sessionSchedule.Matches);
            model.NumberOfWeeks = sessionSchedule.NumberOfWeeks;
            model.SessionEnd    = sessionSchedule.SessionEnd;
            model.SessionStart  = sessionSchedule.SessionStart;
            model.TeamsSessions = sessionSchedule.TeamsSessions == null ? null : TeamSessionConverter.ConvertList(sessionSchedule.TeamsSessions.ToList());

            return(model);
        }
コード例 #4
0
        public async Task <bool> UpdateSessionScheduleAsync(LeagueSessionScheduleViewModel updatedSession, CancellationToken ct = default(CancellationToken))
        {
            LeagueSessionSchedule sessionToUpdate = await this._sessionScheduleRepository.GetLeagueSessionScheduleByIdAsync(updatedSession.Id, ct);

            if (sessionToUpdate == null)
            {
                return(false);
            }

            sessionToUpdate.Active        = updatedSession.Active;
            sessionToUpdate.ByeWeeks      = updatedSession.ByeWeeks;
            sessionToUpdate.LeagueID      = updatedSession.LeagueID ?? sessionToUpdate.LeagueID;
            sessionToUpdate.NumberOfWeeks = updatedSession.NumberOfWeeks;
            sessionToUpdate.SessionEnd    = updatedSession.SessionEnd;
            sessionToUpdate.SessionStart  = updatedSession.SessionStart;

            return(await this._sessionScheduleRepository.UpdateSessionScheduleAsync(sessionToUpdate, ct));
        }
コード例 #5
0
        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));
        }