public async Task <string> GetWinner() { decimal winnerScore = 0; var playerBank = new AllBankRecords(); var winner = new AllBankRecords(); var connectedPlayers = cache.Get <AllPlayers>("ConnectedPlayers"); if (connectedPlayers != null) { foreach (var players in connectedPlayers.Players) { Dictionary <string, decimal> stockPrice = new Dictionary <string, decimal>(); stockPrice.Add(String.Format(players.PlayerName, 1.ToString()), 1); Dictionary <string, decimal> score = new Dictionary <string, decimal>(); score.Add(String.Format(players.PlayerName, 1.ToString()), 1); score[players.PlayerName] = GetStockValue(players.PlayerName); stockPrice[players.PlayerName] = score[players.PlayerName]; playerBank = cache.Get <AllBankRecords>(players.PlayerName + "_Bank"); if (winnerScore < playerBank.Accounts.Balance + stockPrice[players.PlayerName]) { winnerScore = playerBank.Accounts.Balance + stockPrice[players.PlayerName]; winner = playerBank; } } } return("Winner :" + winner.Accounts.PlayerName + " Score :" + Decimal.Round(winnerScore)); }
public async Task <AllBankRecords> Deposit(BankTransaction transaction) { var playerAccount = cache.Get <AllBankRecords>(transaction.PlayerName + "_Bank"); var turn = cache.Get <Clock>(transaction.PlayerName + "_Clock"); if (playerAccount == null) { throw new Exception("No bank account exists for provided player"); } var clock = new Clock(); clock.PlayerName = turn.PlayerName; var gameStatus = this.clockService.PlayerTurn(clock); if (gameStatus == Constants.gameOver) { throw new Exception("Game Over"); } playerAccount.Accounts.Balance += transaction.Price; transaction.Status = Constants.deposit; var bankRecords = new AllBankRecords() { }; bankRecords = playerAccount; bankRecords.BankTransactions.Add(transaction); bankRecords.CurrentTurn = turn.PlayerTurn + 1; cache.Set(transaction.PlayerName + "_Bank", bankRecords, Constants.cacheTime); return(bankRecords); }
public async Task <BankAccount> CreateBankAccount(BankAccount bank) { var players = new Players(); players.PlayerName = bank.PlayerName; var status = gameService.CreatePlayer(players); if (status == "Created") { var Bank = cache.Get <BankAccount>(bank.PlayerName + "_Bank"); if (Bank != null) { if (Bank.PlayerName == bank.PlayerName) { throw new Exception("Account name already exists"); } } var clock = new Clock(); clock.PlayerName = bank.PlayerName; clock.PlayerTurn = 0; this.clockService.CreateClock(clock); BankAccount newPlayer = new BankAccount() { }; newPlayer.PlayerName = bank.PlayerName; newPlayer.Balance = bank.Balance; var bankRecords = new AllBankRecords() { }; bankRecords.Accounts = newPlayer; cache.Set(newPlayer.PlayerName + "_Bank", bankRecords, Constants.cacheTime); return(newPlayer); } return(null); }
public AllBankRecords GetWinner() { decimal Score = 0; AllBankRecords Winner = new AllBankRecords(); var connectedPlayers = cache.Get<AllPlayers>("ConnectedPlayers"); if (connectedPlayers != null) { foreach (var players in connectedPlayers.Players) { var playerBank = cache.Get<AllBankRecords>(players.PlayerName + "_Bank"); if (Score < playerBank.Accounts.Balance) { Score = playerBank.Accounts.Balance; Winner = playerBank; } } } return Winner; }