Esempio n. 1
0
        public void PurchaseByWallet()
        {
            User user = usersTable.GetUserByEmail(User.Identity.Name !) !;
            Game game = gamesTable.GetGameByUrl(cartTable.GetItemFor(user.Email) !) !;

            var price       = game.GameInfo.Price;
            var discount    = price * (decimal)game.GameInfo.Discount;
            var resultPrice = price - discount;

            if (resultPrice > 0)
            {
                usersTable.UpdateUserBalance(user, -resultPrice);
            }

            var success = usersTable.AddGameToLibrary(user, game);

            if (success)
            {
                EmailService emailService = new EmailService();
                emailService.SendTransactionCommitEmail(new TransactionInfo {
                    UserEmail             = user.Email,
                    UserName              = user.Name,
                    AccountIdentifier     = GenerateAccountIdentifier(user.Email),
                    TransactionIdentifier = GenerateNewTransactionIdentifier(),
                    GameDeveloper         = game.Developer,
                    GameTitle             = game.Name,
                    ResultPrice           = resultPrice
                });
            }
        }