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); }
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." })); }
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" })); }
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)); }
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()); }
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)); }