public static async Task <IActionResult> updatetokblitzteam([HttpTrigger(AuthorizationLevel.Function, "put", Route = Constants.Version + "/" + "updatetokblitzteam/" + "{id}")] HttpRequest req, ILogger log, ExecutionContext context, string id) { string requestBody = await new StreamReader(req.Body).ReadToEndAsync(); tokblitzTeamClass newItem = JsonConvert.DeserializeObject <tokblitzTeamClass>(requestBody); try { tokblitzTeamClass game = await Api <tokblitzTeamClass> .GetItemAsync(id, Constants.PkRequest(id)); tokblitzTeamClass holder = new tokblitzTeamClass(); if (newItem.Id != null || newItem.Id != "") { tokblitzTeamClass itemtoupdate = TeamClassUpdater <tokblitzTeamClass> .TeamUpdater(newItem, game); var result = await Api <tokblitzTeamClass> .UpdateItemAsyncSaveGames(game.Id, itemtoupdate, Constants.PkRequest(game.Id)); return(new OkObjectResult(result)); } else { return(new BadRequestResult()); } } catch (Exception e) { return(new BadRequestObjectResult(e.Message)); } }
public static async Task <IActionResult> insertTeam([HttpTrigger(AuthorizationLevel.Function, "post", Route = Constants.Version + "/" + "insertteam")] HttpRequest req, ILogger log, ExecutionContext context) { string requestBody = await new StreamReader(req.Body).ReadToEndAsync(); tokblitzTeamClass getrequest = JsonConvert.DeserializeObject <tokblitzTeamClass>(requestBody); getrequest.UserId = getrequest.Id + "-tokblitzteam"; getrequest.Id = getrequest.Id + Guid.NewGuid(); var item = await Api <tokblitzTeamClass> .CreateItemAsyncGames(getrequest, Constants.PkRequest(getrequest.Id)); return(new OkResult()); }
// updates the value of team fields public static tokblitzTeamClass TeamUpdater(tokblitzTeamClass newItem, tokblitzTeamClass oldItem) { if (newItem.Country == null || newItem.Country == "") { newItem.Country = oldItem.Country; } if (newItem.State == null || newItem.State == "") { newItem.State = oldItem.State; } if (newItem.Name == null || newItem.Name.Equals("")) { newItem.Name = oldItem.Name; } if (newItem.TeamImage == null || newItem.TeamImage.Equals("")) { newItem.TeamImage = oldItem.TeamImage; } if (newItem.UserId == null || newItem.UserId.Equals("")) { newItem.UserId = oldItem.UserId; } // updates points if not null or 0 if (newItem.TeamPoints.Equals(null) || newItem.TeamPoints == 0) { newItem.TeamPoints = oldItem.TeamPoints; } else { newItem.TeamPoints = (oldItem.TeamPoints + newItem.TeamPoints); } // calculates wins if (newItem.Wins.Equals(null) || newItem.Wins == 0) { newItem.Wins = oldItem.Wins; } else { newItem.Wins = (oldItem.Wins + newItem.Wins); } // calculates losses if (newItem.Losses.Equals(null) || newItem.Losses == 0) { newItem.Losses = oldItem.Losses; } else { newItem.Losses = (oldItem.Losses + newItem.Losses); } // calculates strikes used if (newItem.StrikesUsed.Equals(null) || newItem.StrikesUsed == 0) { newItem.StrikesUsed = oldItem.StrikesUsed; } else { newItem.StrikesUsed = (oldItem.StrikesUsed + newItem.StrikesUsed); } //calculates and update total seconds if (newItem.TotalSeconds.Equals(null) || newItem.TotalSeconds == 0) { newItem.TotalSeconds = oldItem.TotalSeconds; } else { newItem.TotalSeconds = (oldItem.TotalSeconds + newItem.TotalSeconds); } //calculates and update total games played if (newItem.GamesPlayed.Equals(null) || newItem.GamesPlayed == 0) { newItem.GamesPlayed = oldItem.GamesPlayed; } else { newItem.GamesPlayed = (oldItem.GamesPlayed + newItem.GamesPlayed); } return(newItem); }
public static async Task <IActionResult> TokBlitzRaceGameOver( [HttpTrigger(AuthorizationLevel.Function, "post", Route = Constants.Version + "/tokblitzracegameover")] HttpRequest req, [SignalR(HubName = "multiplayer")] IAsyncCollector <SignalRMessage> signalRMessages, ILogger log) { //Read query info string requestBody = await new StreamReader(req.Body).ReadToEndAsync(); var info = JsonConvert.DeserializeObject <TokBlitzRace>(requestBody); bool forfeit = false; if (info.ForfeitingPlayer != null) { info.Loser = info.ForfeitingPlayer; info.LoserId = info.ForfeiterId; info.Winner = (info.ForfeitingPlayer.PlayerNumber == 1) ? info.Players[0]: info.Players[1]; info.WinnerId = info.Winner.ConnectionId; forfeit = true; } else { if (info.FinishedFirst.PlayerNumber == 1) { info.Player1Points += Constants.FINISHED_FIRST_BONUS; if (info.Player1PointsPerRound != null) { info.Player1PointsPerRound.Add(Constants.FINISHED_FIRST_BONUS); } } else if (info.FinishedFirst.PlayerNumber == 2) { info.Player2Points += Constants.FINISHED_FIRST_BONUS; if (info.Player2PointsPerRound != null) { info.Player2PointsPerRound.Add(Constants.FINISHED_FIRST_BONUS); } } info.Winner = (info.Player1Points > info.Player2Points) ? info.Players[0] : info.Players[1]; info.WinnerId = info.Winner.ConnectionId; info.Loser = (info.Player1Points > info.Player2Points) ? info.Players[1] : info.Players[0]; info.LoserId = info.Loser.ConnectionId; if (info.Player1Points == info.Player2Points) { info.Winner = new GamePlayer() { PlayerNumber = 0, UserId = "Tie", UserName = "******", UserPhoto = "Tie" } } ; } // update the points and others tokblitzTeamClass getwinner = new tokblitzTeamClass(); getwinner.Id = info.Winner.ConnectionId; getwinner.GamesPlayed = 1; getwinner.Wins = 1; getwinner.TeamPoints = 2; tokblitzTeamClass getloser = new tokblitzTeamClass(); getloser.Id = info.Loser.ConnectionId; getloser.GamesPlayed = 1; getloser.Losses = 1; getloser.TeamPoints = (forfeit == true) ? 0 : 1; tokblitzTeamClass getwinnerOld = await Api <tokblitzTeamClass> .GetItemAsync(getwinner.Id, Constants.PkRequest(getwinner.Id)); tokblitzTeamClass getwinnerTosend = TeamClassUpdater <tokblitzTeamClass> .TeamUpdater(getwinner, getwinnerOld); tokblitzTeamClass getLoserOld = await Api <tokblitzTeamClass> .GetItemAsync(getloser.Id, Constants.PkRequest(getloser.Id)); tokblitzTeamClass getLoserTosend = TeamClassUpdater <tokblitzTeamClass> .TeamUpdater(getloser, getLoserOld); await Api <tokblitzTeamClass> .UpdateItemAsyncSaveGames(getwinner.Id, getwinnerTosend, Constants.PkRequest(getwinner.Id)); await Api <tokblitzTeamClass> .UpdateItemAsyncSaveGames(getloser.Id, getLoserTosend, Constants.PkRequest(getloser.Id)); // creates a rematch record after the game RematchRecord rematchRecord = new RematchRecord(); Guid newId; newId = Guid.NewGuid(); rematchRecord.Id = newId.ToString(); rematchRecord.Pk = newId.ToString(); rematchRecord.Player1ConnectionId = info.Players[0].ConnectionId.ToString(); rematchRecord.Player2ConnectionId = info.Players[1].ConnectionId.ToString(); rematchRecord.Player1Id = info.Players[0].UserId.ToString(); rematchRecord.Player2Id = info.Players[1].UserId.ToString(); await signalRMessages.AddAsync( new SignalRMessage { Target = "tokblitzracegameover", Arguments = new[] { info } }); await StatsFunctions.IncrementDayCounter(1); await Api <TokBlitzRace> .CreateItemAsync(info, Constants.PkRequest(info.Id)); await Api <RematchRecord> .CreateItemAsync(rematchRecord, Constants.PkRequest(rematchRecord.Id)); await signalRMessages.AddAsync( new SignalRMessage { Target = "rematch_record", Arguments = new[] { rematchRecord } }); return(new OkObjectResult(info)); }