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 }); } }