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);
        }
Example #3
0
        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;
        }