//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));
        }
Example #3
0
 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));
 }
Example #4
0
        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));
        }
Example #5
0
        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));
        }
Example #6
0
        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));
        }
Example #8
0
        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));
        }