//GET: Orders/PaymentUpdate/5 public async Task <IActionResult> CompletePayment(int id, OrderPaymentViewModel vm) { //Gets Order var order = await _context.Order.Include(o => o.OrderProducts).FirstOrDefaultAsync(o => o.OrderId == id); var OrderProducts = await _context.OrderProduct.Include(o => o.Product).Where(o => o.OrderId == id).ToListAsync(); order.DateCompleted = DateTime.Now; order.PaymentTypeId = vm.Order.PaymentTypeId; //Loops through products, decrements their quantity, and updates database foreach (OrderProduct singleOrderProduct in OrderProducts) { singleOrderProduct.Product.Quantity = singleOrderProduct.Product.Quantity - 1; _context.Update(singleOrderProduct.Product); } ModelState.Remove("Order.UserId"); ModelState.Remove("Order.User"); if (ModelState.IsValid) { _context.Update(order); await _context.SaveChangesAsync(); return(RedirectToAction(nameof(Confirmation))); } return(View(vm)); }
public async Task <IActionResult> Edit(int id, OrderPaymentViewModel vm) { ModelState.Remove("FinalOrder.User"); ModelState.Remove("FinalOrder.UserId"); ApplicationUser user = await GetCurrentUserAsync(); if (ModelState.IsValid) { try { vm.FinalOrder.UserId = user.Id; _context.Update(vm.FinalOrder); await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!OrderExists(vm.FinalOrder.OrderId)) { return(NotFound()); } else { throw; } } ViewData["Orderzzz"] = vm.FinalOrder; return(View("Views/Orders/SuccessfulCheckout.cshtml")); } vm.ThePaymentTypes = new SelectList(_context.PaymentType.Where(c => c.UserId == user.Id), "PaymentTypeId", "AccountNumber"); return(View(vm)); }
public IActionResult Payment(OrderPaymentViewModel vm) { if (ModelState.IsValid) { Planet planet = _planetService.GetSingle(p => p.PlanetId == vm.PlanetId); planet.IsSold = 1; _planetService.Update(planet); return(RedirectToAction("Placed", "Order", new { planetId = planet.PlanetId })); } return(View(vm)); }
public IActionResult Payment(int planetId) { Planet planet = _planetService.GetSingle(p => p.PlanetId == planetId); OrderPaymentViewModel vm = new OrderPaymentViewModel { Name = planet.Name, TotalPrice = planet.Price, PlanetId = planet.PlanetId }; return(View(vm)); }
public ActionResult OrderHistory(string username) { if (_service.GetOrders(username) == null) { return(RedirectToAction("Basket", username)); } var order = _service.GetOrders(username); var orderViewModel = Mapper.Map <OrderViewModel>(order); var orderPayment = new OrderPaymentViewModel { Order = orderViewModel }; return(View(orderPayment)); }
public ActionResult Order(string username) { if (!_service.GetAll(false).Any(x => x.IsConfirmed)) { return(RedirectToAction("Basket", username)); } var order = _service.GetOrders(username); var orderViewModel = Mapper.Map <OrderViewModel>(order); var orderPayment = new OrderPaymentViewModel { Order = orderViewModel }; return(View(orderPayment)); }
// GET: Orders/Edit/5 public async Task <IActionResult> Edit(int?id) { //if (id == null) //{ // return NotFound(); //} //var order = await _context.Order.FindAsync(id); //if (order == null) //{ // return NotFound(); //} //ViewData["PaymentTypeId"] = new SelectList(_context.PaymentType, "PaymentTypeId", "AccountNumber", order.PaymentTypeId); //ViewData["UserId"] = new SelectList(_context.ApplicationUsers, "Id", "Id", order.UserId); //return View(order); if (id == null) { return(NotFound()); } var currentOrder = await _context.Order.FindAsync(id); if (currentOrder == null) { return(NotFound()); } ApplicationUser user = await GetCurrentUserAsync(); currentOrder.UserId = user.Id; currentOrder.DateCompleted = DateTime.Now; OrderPaymentViewModel vm = new OrderPaymentViewModel() { FinalOrder = currentOrder, ThePaymentTypes = new SelectList(_context.PaymentType.Where(c => c.UserId == user.Id), "PaymentTypeId", "AccountNumber") }; return(View(vm)); }
public IActionResult ViewPayment(string id) { if (string.IsNullOrEmpty(id)) { return(RedirectToAction("Index", "Order")); } else { Order order = _db.Orders.Where(e => e.Id.Equals(id) && e.Deleted == false).FirstOrDefault(); AspUserService aspUser = new AspUserService(_db, this); if (order == null) { return(RedirectToAction("Index", "Order")); } else { if (order.Vendor.Owner != aspUser.User) { return(RedirectToAction("Index", "Order")); } else { List <Payment> payments = new List <Payment>(); foreach (Payment item in order.Payments.Where(e => e.Deleted == false)) { payments.Add(item); } OrderPaymentViewModel model = new OrderPaymentViewModel() { SelectedVendor = order.Vendor, Order = order, Payments = payments }; return(View(model)); } } } }
public IActionResult SuccessOrder(OrderPaymentViewModel model) { var str = HttpContext.Session.GetString("Order"); var data = JsonConvert.DeserializeObject <OrderSubmitViewModel>(str); var webRoot = _env.WebRootPath; var pathToFile = _env.WebRootPath + Path.DirectorySeparatorChar.ToString() + "Templates" + Path.DirectorySeparatorChar.ToString() + "EmailTemplate" + Path.DirectorySeparatorChar.ToString() + "SendOrder.html"; var subject = "Thank for your order."; var builder = new BodyBuilder(); using (StreamReader SourceReader = System.IO.File.OpenText(pathToFile)) { builder.HtmlBody = SourceReader.ReadToEnd(); } var tour = _tourRepository.GetTourById(data.IdTour); string messageBody = string.Format(builder.HtmlBody, subject, String.Format("{0:dddd, d MMMM yyyy}", DateTime.Now), data.Firstname + " " + data.Lastname, data.Email, tour.Name, tour.Countries, tour.DepartureTown, tour.Period, String.Format("{0:dddd, d MMMM yyyy}", data.DateDeparture), model.CardHolder, model.CardNumber ); _emailSender.SendEmailAsync(data.Email, subject, messageBody); return(View()); }
// GET: Orders/CompletePayment/5 //Gets order and payment types for payment completion dropdown list in view public async Task <IActionResult> CompletePayment(int id) { var user = await GetCurrentUserAsync(); var order = await _context.Order.FirstOrDefaultAsync(o => o.OrderId == id); var paymentTypes = await _context.PaymentType.Where(p => p.UserId == user.Id).ToListAsync(); //Creates dropdown for payment types var viewModel = new OrderPaymentViewModel() { Order = order, PaymentTypes = paymentTypes.Select(c => new SelectListItem { Value = c.PaymentTypeId.ToString(), Text = c.AccountNumber }).ToList() }; return(View(viewModel)); }