Пример #1
0
        public async Task <bool> CheckLoginStatus()
        {
            if (Connector.CurrentApiToken == null || Connector.ApiTokenExpiry < DateTime.Now.AddMinutes(-2))
            {
                string      errorMessage = "";
                Parameter[] paramList    = new Parameter[2];
                paramList[0] = new Parameter("leagueKey", await SettingsUtil.GetSetting("SavedLeagueKey"), ParameterType.QueryString);
                paramList[1] = new Parameter("hashedPassword", await SettingsUtil.GetSetting("SavedHashedLeaguePassword"), ParameterType.QueryString);

                var loginResponse = this.ApiClient.Get <LoginResponse>("Login", paramList, ref errorMessage);
                if (loginResponse != null)
                {
                    Connector.CurrentApiToken = loginResponse.Login.LoginKey;
                    Connector.ApiTokenExpiry  = loginResponse.Login.Expiry;
                    Connector.League          = new League()
                    {
                        LeagueId = loginResponse.LeagueId, LeagueName = loginResponse.LeagueName, Logo = loginResponse.Logo, LeagueKey = loginResponse.LeagueKey
                    };
                    return(true);
                }
                return(false);
            }

            return(true);
        }
Пример #2
0
        public async Task <IActionResult> LoadLastSavedGamed()
        {
            string errorMsg = "";

            Parameter[] parameters = new Parameter[2];
            if (Connector.Game == null)
            {
                parameters[0] = new Parameter("apiToken", Connector.CurrentApiToken, ParameterType.QueryString);
                parameters[1] = new Parameter("id", await SettingsUtil.GetSetting("GameId"), ParameterType.QueryString);
                var oldGame = this.ApiClient.Get <Game>("Game", parameters, ref errorMsg);
                if (oldGame.SeasonId == Connector.Season.SeasonId)
                {
                    Connector.Game = oldGame;
                }
                else
                {
                    return(RedirectToAction("Index", "Game", new { errorMsg = "Last saved game does not belong to this league/season. Create a new game to continue" }));
                }
            }

            if (Connector.Game != null)
            {
                SetupConnectorAndSettingsForNewGame();
                return(RedirectToAction("Index", "Game", new { actionMsg = $"Recovered saved game!" }));
            }
            return(RedirectToAction("Index", "Game", new { errorMsg = "Error recovering game." }));
        }
Пример #3
0
        public async Task <IActionResult> CompleteGame()
        {
            if (Connector.Game != null)
            {
                if (Convert.ToInt32(await SettingsUtil.GetSetting("GameId")) == Connector.Game.GameId)
                {
                    var gameTime = await SettingsUtil.GetSetting("GameTime");

                    if (!String.IsNullOrEmpty(gameTime))
                    {
                        if (TimeSpan.Parse(gameTime) < new TimeSpan(0, 48, 0))
                        {
                            return(RedirectToAction("Index", "Game", new { errorMsg = "Game not eligible for completion" }));
                        }

                        var request = new CompleteGameRequest()
                        {
                            ApiToken  = Connector.CurrentApiToken,
                            LeagueKey = Connector.League.LeagueKey,
                            GameId    = Connector.Game.GameId
                        };

                        string errorMessage = "";
                        var    finishedGame = this.ApiClient.Post <Game>("Game/CompleteGame", JsonConvert.SerializeObject(request), ref errorMessage);

                        if (finishedGame != null)
                        {
                            Connector.Game = finishedGame;
                            return(RedirectToAction("Index", "Game", new { actionMsg = "Game has been completed and stats recorded" }));
                        }
                    }
                }
            }
            return(RedirectToAction("Index", "Game", new { errorMsg = "Erro Completing Game" }));
        }
Пример #4
0
        public async Task <IActionResult> Index()
        {
            if (!await this.CheckLoginStatus())
            {
                return(RedirectToAction("Index", "Game", new { errorMsg = "Authorization Error" }));
            }
            if (Connector.GameScreenOpen)
            {
                await this.HubContext.Clients.All.SendAsync("NewScoreboardOpened");
            }

            await this.SetupGame();

            if (Connector.Game == null)
            {
                return(RedirectToAction("Index", "Game", new { errorMsg = "No Game Currently Loaded" }));
            }

            if (Connector.Game.GameComplete)
            {
                return(RedirectToAction("Index", "Game", new { errorMsg = "Loaded game already complete." }));
            }

            var viewModel = new ScreenViewModel();

            viewModel.Game      = Connector.Game;
            viewModel.HomeTeam  = Connector.HomeTeam;
            viewModel.AwayTeam  = Connector.AwayTeam;
            viewModel.GameScore = Connector.GameScore;
            viewModel.League    = Connector.League;
            string gameTime = await SettingsUtil.GetSetting("GameTime");

            if (!String.IsNullOrEmpty(gameTime))
            {
                viewModel.GameTime = TimeSpan.Parse(gameTime);
            }
            else
            {
                viewModel.GameTime = new TimeSpan(0, 0, 0);
            }

            Connector.TimerRunning       = false;
            Connector.MediaScreenShowing = false;

            return(View(viewModel));
        }
Пример #5
0
        private async void SetupConnectorAndSettingsForNewGame()
        {
            Connector.HomeTeam = null;
            Connector.AwayTeam = null;
            var oldGameId = await SettingsUtil.GetSetting("GameId");

            if (string.IsNullOrEmpty(oldGameId))
            {
                oldGameId = "999999";
            }
            if (Convert.ToInt32(oldGameId) != Connector.Game.GameId)
            {
                await SettingsUtil.SetSetting("GameTime", "");

                await SettingsUtil.SetSetting("HomeTeamTimeouts", "5");

                await SettingsUtil.SetSetting("AwayTeamTimeouts", "5");
            }
            await SettingsUtil.SetSetting("GameId", Connector.Game.GameId.ToString());
        }
Пример #6
0
        public async Task <IActionResult> Index(string errorMsg, string actionMsg)
        {
            if (!await this.CheckLoginStatus())
            {
                return(RedirectToAction("Index", "Home", new { errorMsg = "You must join a league first." }));
            }
            if (Connector.League == null)
            {
                return(RedirectToAction("Index", "Home", new { errorMsg = "You must join a league first." }));
            }
            if (Connector.Season == null)
            {
                return(RedirectToAction("Index", "Home", new { errorMsg = "Your league must be in a season to start games" }));
            }
            var viewModel = new GameViewModel();

            viewModel.LocalAPIKey = Configuration["Local.API.Key"];
            var localIpAddress = $"{HttpContext.Request.Scheme}://{HttpContext.Request.Host}";

            viewModel.LocalAPIAddress = $"{localIpAddress}/api/";
            viewModel.League          = Connector.League;
            viewModel.Game            = Connector.Game;
            if (!string.IsNullOrEmpty(errorMsg))
            {
                viewModel.Messages.Add(new PageMessage()
                {
                    Message = errorMsg, Type = MessageType.Error
                });
            }
            if (!string.IsNullOrEmpty(actionMsg))
            {
                viewModel.Messages.Add(new PageMessage()
                {
                    Message = actionMsg, Type = MessageType.Success
                });
            }

            string errorMessage = "";

            Parameter[] parameters = new Parameter[2];
            parameters[0]            = new Parameter("apiToken", Connector.CurrentApiToken, ParameterType.QueryString);
            parameters[1]            = new Parameter("leagueKey", Connector.League.LeagueKey, ParameterType.QueryString);
            viewModel.LeagueTeamList = this.ApiClient.Get <List <Team> >("Teams/ByLeague", parameters, ref errorMessage);

            if (Connector.Game != null && viewModel.LeagueTeamList != null && viewModel.LeagueTeamList.Count > 0)
            {
                var homeTeamQuery = from team in viewModel.LeagueTeamList
                                    where team.TeamId == Connector.Game.HomeTeamId
                                    select team;
                viewModel.HomeTeam = homeTeamQuery.FirstOrDefault();
                Connector.HomeTeam = homeTeamQuery.FirstOrDefault();
                var awayTeamQuery = from team in viewModel.LeagueTeamList
                                    where team.TeamId == Connector.Game.AwayTeamId
                                    select team;
                viewModel.AwayTeam = awayTeamQuery.FirstOrDefault();
                Connector.AwayTeam = homeTeamQuery.FirstOrDefault();
            }

            if (Connector.GameScore != null)
            {
                if (Connector.GameScore.HomeTeamScore + Connector.GameScore.AwayTeamScore + Connector.GameScore.HomeTeamFouls.Sum() + Connector.GameScore.AwayTeamFouls.Sum() > 0 ||
                    !string.IsNullOrEmpty(await SettingsUtil.GetSetting("GameTime")))
                {
                    viewModel.gameHasStarted = true;
                }
            }

            viewModel.SavedGameAvailable = !string.IsNullOrEmpty(await SettingsUtil.GetSetting("GameId"));
            if (Connector.Game != null)
            {
                if (Convert.ToInt32(await SettingsUtil.GetSetting("GameId")) == Connector.Game.GameId)
                {
                    var gameTime = await SettingsUtil.GetSetting("GameTime");

                    if (!String.IsNullOrEmpty(gameTime))
                    {
                        viewModel.CompleteGameAvaialble = TimeSpan.Parse(gameTime) >= new TimeSpan(0, 48, 0);
                    }
                }
            }

            return(View(viewModel));
        }