public async Task <IActionResult> AllByUserId() { ApplicationUser user = await this.userManager.GetUserAsync(this.User); AllOrdersByUserIdListViewModel viewModel = new AllOrdersByUserIdListViewModel { Orders = this.ordersService.GetAllByUserId <AllOrdersByUserIdViewModel>(user.Id), }; return(this.View(viewModel)); }
public async Task <IActionResult> Charge(string stripeEmail, string stripeToken) { ApplicationUser user = await this.userManager.GetUserAsync(this.User); AllOrdersByUserIdListViewModel viewModel = new AllOrdersByUserIdListViewModel { Orders = this.ordersService.GetAllByUserId <AllOrdersByUserIdViewModel>(user.Id), }; var customers = new CustomerService(); var charges = new ChargeService(); var customer = customers.Create(new CustomerCreateOptions { Email = stripeEmail, Source = stripeToken, }); var charge = charges.Create(new ChargeCreateOptions { Amount = (int)viewModel.Orders.Sum(o => o.CoursePrice) * 100, Description = "Sample Charge", Currency = "usd", Customer = customer.Id, }); foreach (var course in viewModel.Orders.Select(o => o.CourseId)) { await this.coursesService.EnrollAsync(course, user.Id); } foreach (var course in viewModel.Orders.Select(o => o.CourseId)) { await this.ordersService.DeleteAsync(course, user.Id); } return(this.Redirect($"/Courses/AllByUser/{user.Id}")); }