예제 #1
0
 public IActionResult Pay()
 {
     try {
         List <ProductViewModel> products = GetProducts();
         DateTime datePlaced = DateTime.Now;
         string   email      = User.Identity.Name;
         //create order
         OrderViewModel order = new OrderViewModel();
         order.DatePlaced = datePlaced;
         order.UserEmail  = email;
         order.Id         = _ordersService.AddOrder(order);
         foreach (var item in products)
         {
             OrderDetailsViewModel orderDetailsViewModel = new OrderDetailsViewModel();
             orderDetailsViewModel.Order    = _mapper.Map <Order>(order);
             orderDetailsViewModel.Product  = _mapper.Map <Product>(item);
             orderDetailsViewModel.Price    = item.Price;
             orderDetailsViewModel.Quantity = item.Quantity;
             _orderDetailsService.AddOrderDetails(orderDetailsViewModel);
         }
         HttpContext.Session.SetString(SessionKeyName, "");
         TempData["feedback"] = ("Payment was successful");
         _logger.LogInformation("User payed successfully");
     }
     catch (Exception e)
     {
         TempData["error"] = ("Error occured while paying! We will look into it!");
         _logger.LogError("Error occurred " + e.Message);
         return(RedirectToAction("Error", "Home"));
     }
     return(RedirectToAction("Index"));
 }
예제 #2
0
        public IActionResult AddingToCart(Guid productId)
        {
            var  username     = User.Identity.Name;
            Guid orderId      = _orderDetailsService.GetOrderId(username);
            bool orderDetails = _orderDetailsService.AddOrderDetails(orderId, productId);

            if (orderDetails == false)
            {
                TempData["warning"] = "Product was Out of stock!";
                return(RedirectToAction("Index", "Products"));
            }

            TempData["feedback"] = "Product was added successfully !";
            return(RedirectToAction("OrderDetails"));
        }
예제 #3
0
        public IActionResult checkout(OrderViewModel data, Guid ordid, Guid prodId, string email)
        {
            try
            {
                email = User.Identity.Name;

                _ordersService.AddOrder(data, email);
                _orderDetailsService.AddOrderDetails(ordid, prodId, email);
                TempData["feedback"] = "Checking out succesful"; //change wherever we are using viewdata to use tempdata
                return(RedirectToAction("Index"));
            }
            catch (Exception)
            {
                return(RedirectToAction("Error", "home"));
            }
        }
예제 #4
0
 public async Task <IActionResult> OrderNow(List <OrderDTo> orders)
 {
     try
     {
         var   claimsIdentity = _httpContextAccessor.HttpContext.User.Claims;
         var   userId         = claimsIdentity.FirstOrDefault(x => x.Type == "UserId").Value;
         var   email          = claimsIdentity.FirstOrDefault(x => x.Type == "Email").Value;
         var   statusProduct  = _statusCartsService.GetStatusCartsClient();
         var   orderId        = Guid.NewGuid();
         Order order          = new Order();
         order.UserId = Guid.Parse(userId);
         order.Id     = orderId;
         List <OrderDetails> orderDetails = new List <OrderDetails>();
         List <ProductOrder> productOrders = new List <ProductOrder>();
         var total = 0; var totalCost = 0f;
         foreach (var item in orders)
         {
             OrderDetails details = new OrderDetails()
             {
                 Id           = new Guid(),
                 OrderId      = orderId,
                 ProductId    = item.ProductId,
                 Quantity     = item.Quantity,
                 TotalCost    = item.TotalCost,
                 StatusCartId = statusProduct.Id
             };
             totalCost += item.TotalCost;
             total     += item.Quantity;
             _orderDetailsService.AddOrderDetails(details);
             orderDetails.Add(details);
         }
         order.TotalQuantity = total;
         order.TotalCost     = totalCost;
         order.Processed     = 0;
         _orderService.AddOrder(order);
         _unitOfWork.Commit();
         HttpContext.Session.Clear();
         _emailSenderService.SendEmail(email, Constants.SubjectOrder, Constants.BodyOrder);
         Statistics statistics = new Statistics()
         {
             Action      = (int)Action.Order,
             ActionName  = "Mua hàng",
             CreatedDate = DateTime.Now,
             Id          = Guid.NewGuid(),
             ModifyDate  = DateTime.Now
         };
         _statisticsService.InsertStatistics(statistics);
         return(Ok(new Result()
         {
             Message = "success", Code = (int)HttpStatusCode.OK, Data = "Đặt hàng thành công", Error = null
         }));
     }
     catch (Exception ex)
     {
         _logger.LogError("Đặt hàng thất bại: " + ex);
         return(Ok(new Result()
         {
             Message = "success", Code = (int)HttpStatusCode.OK, Data = null, Error = "Đặt hàng thất bại"
         }));
     }
 }