private async Task <BuyMovieViewModel> GetPaymentModel(Guid id) { MovieServiceModel movieModel = await this.movieService.FindMovie(id); User user = await userManager.GetUserAsync(HttpContext.User); IList <string> roles = await userManager.GetRolesAsync(user); string role = roles.SingleOrDefault(); movieModel.Price = movieModel.Prices.SingleOrDefault(x => x.Role.Name == role).MoviePrice; UserBalanceServiceModel userBalanceModel = new UserBalanceServiceModel(); userBalanceModel = this.userBalanceService.GetUserBalance(user.Id); BuyMovieViewModel buyMovieViewModel = new BuyMovieViewModel(); buyMovieViewModel.Balance = userBalanceModel.Balance; buyMovieViewModel.MovieId = id; buyMovieViewModel.Price = movieModel.Price; buyMovieViewModel.MovieName = movieModel.Name; return(buyMovieViewModel); }
public async Task <IActionResult> Balance() { User user = await userManager.GetUserAsync(HttpContext.User); UserBalanceServiceModel userBalanceModel = new UserBalanceServiceModel(); userBalanceModel = this.userBalanceService.GetUserBalance(user.Id); return(View(userBalanceModel)); }
public async Task <IActionResult> Balance(UserBalanceServiceModel userBalanceModel) { if (!ModelState.IsValid) { return(View(userBalanceModel)); } User user = await userManager.GetUserAsync(HttpContext.User); await this.userBalanceService.AddAmount(userBalanceModel, user.Id); TempData.AddSuccessMessage($"Successfully added {userBalanceModel.Balance} BGN to your account"); return(RedirectToAction(nameof(Balance))); }
public UserBalanceServiceModel GetUserBalance(string userId) { UserMoneyBalance userBalance = this.Db.UserMoneyBalance .SingleOrDefault(x => x.UserId == userId); UserBalanceServiceModel userModel = new UserBalanceServiceModel(); if (userBalance != null) { userModel.Balance = userBalance.Balance; userModel.Id = userBalance.Id; } else { userModel.Balance = Decimal.Zero; return(userModel); } return(userModel); }
public async Task AddAmount(UserBalanceServiceModel userModel, string userId) { if (this.Db.UserMoneyBalance.Any(u => u.UserId == userId)) { UserMoneyBalance userMoneyBalance = await this.Db.UserMoneyBalance.FindAsync(userModel.Id); UserBalanceServiceModel userBalanceServiceModel = GetUserBalance(userId); userMoneyBalance.Balance = userModel.Balance + userBalanceServiceModel.Balance; this.Db.UserMoneyBalance.Update(userMoneyBalance); } else { this.Db.UserMoneyBalance.Add( new UserMoneyBalance { Balance = userModel.Balance, UserId = userId }); } await this.Db.SaveChangesAsync(); }
public async Task <IActionResult> PayFromBalance(BuyMovieViewModel buyMovieViewModel) { if (!ModelState.IsValid) { return(View(buyMovieViewModel)); } User user = await userManager.GetUserAsync(HttpContext.User); UserBalanceServiceModel userBalance = this.userBalanceService.GetUserBalance(user.Id); if (userBalance.Balance < buyMovieViewModel.Price || userBalance.Balance == 0) { TempData.AddErrorMessage("You don't have enough money in your account !"); return(RedirectToAction(nameof(PayFromBalance), new { id = buyMovieViewModel.MovieId })); } await this.movieService.BuyMovie(user.Id, buyMovieViewModel.MovieId, buyMovieViewModel.Price); TempData.AddSuccessMessage($"Your purchase was successful!"); return(RedirectToAction(nameof(MovieDetails), new { id = buyMovieViewModel.MovieId })); }