public OrderTransactionViewModel MappingToOrder(CartCustomerViewModel cart, AddressViewModel address)
        {
            var order = new OrderTransactionViewModel
            {
                TotalValue   = cart.TotalValue,
                Items        = cart.Items,
                Discount     = cart.Discount,
                VoucherUsage = cart.VoucherUsage,
                VoucherCode  = cart.Voucher?.Code
            };

            if (address != null)
            {
                order.Address = new AddressViewModel
                {
                    Street       = address.Street,
                    Number       = address.Number,
                    Neighborhood = address.Neighborhood,
                    ZipCode      = address.ZipCode,
                    Complement   = address.Complement,
                    City         = address.City,
                    State        = address.State
                };
            }

            return(order);
        }
예제 #2
0
        public async Task <IActionResult> Checkout(OrderTransactionViewModel orderTransaction)
        {
            if (!ModelState.IsValid)
            {
                return(View("Payment", _salesBffService.MappingToOrder(
                                await _salesBffService.GetCart(), null)));
            }

            var response = await _salesBffService.Checkout(orderTransaction);

            if (HasErrorsInResponse(response))
            {
                var cart = await _salesBffService.GetCart();

                if (cart.Items.Count == 0)
                {
                    return(RedirectToAction("Index", "Cart"));
                }

                var orderMap = _salesBffService.MappingToOrder(cart, null);
                return(View("Payment", orderMap));
            }

            return(RedirectToAction("OrderCompleted"));
        }
        public async Task <ResponseErrorResult> Checkout(OrderTransactionViewModel orderTransaction)
        {
            var orderContent = GetContent(orderTransaction);

            var response = await _httpClient.PostAsync("/sales/order/", orderContent);

            if (!CheckErrorsResponse(response))
            {
                return(await DeserializeObjectResponse <ResponseErrorResult>(response));
            }

            return(ReturnOk());
        }
예제 #4
0
 public IActionResult GenerateOrderWishList([Bind("TransactionInfoId , Street , PostalCode , City , IBAN , Email")] OrderTransactionViewModel orderTransactionViewModel)
 {
     if (ModelState.IsValid)
     {
         ShoppingCart shoppingCart = ShoppingCartService.ShoppingCartWishList(User, _db);
         if (shoppingCart.ShoppingCartItems.Count > 0)
         {
             if (OrderService.OrderShoppingCart(shoppingCart, orderTransactionViewModel, _db, User))
             {
                 OrderService.SendConfirmEmail(shoppingCart, orderTransactionViewModel).Wait();
                 WishListService.RemoveWishList(User, _db);
                 return(Redirect("/"));
             }
         }
     }
     return(BadRequest("Something went wrong while generating your order , we are very sorry for this."));
 }
예제 #5
0
        public static async Task SendConfirmEmail(ShoppingCart shoppingCart, OrderTransactionViewModel orderTransactionViewModel)
        {
            string htmlText = "<table> <tr> <th>Name</th> <th>Platform</th> <th>Amount</th><th>Price</th></tr>";

            foreach (var item in shoppingCart.ShoppingCartItems)
            {
                htmlText += $"<tr> <td>{item.Inventory.Product.Name}</td> <td>{item.Inventory.GamePlatform.PlatformName}</td><td>{item.Amount}</td><td>€{item.Amount * item.Inventory.Price}</td></tr>";
            }
            htmlText += "</table>";
            string apiKey = "";
            var    client = new SendGridClient(apiKey);
            var    msg    = new SendGridMessage()
            {
                From             = new EmailAddress("", "Game Now"),
                Subject          = "Order",
                PlainTextContent = "We have received your order.",
                HtmlContent      = "<h1>We received ur order</h1>" + htmlText + "<h1>Your order is being processed as we speak </h1>"
            };

            msg.AddTo(new EmailAddress(orderTransactionViewModel.Email, "Test User"));
            var response = await client.SendEmailAsync(msg);
        }
예제 #6
0
        public static bool OrderShoppingCart(ShoppingCart shoppingCart, OrderTransactionViewModel orderTransactionViewModel, WebshopDbContext db, ClaimsPrincipal user)
        {
            Order order = new Order()
            {
                City       = orderTransactionViewModel.City,
                Date       = DateTime.Now,
                PostalCode = orderTransactionViewModel.PostalCode,
                Street     = orderTransactionViewModel.Street,
            };

            if (user.Identity.IsAuthenticated)
            {
                string guidString = user.Claims.Where(claim => claim.Type == ClaimTypes.Sid).Select(s => s.Value)
                                    .SingleOrDefault();
                if (Guid.TryParse(guidString, out Guid userId))
                {
                    order.UserId = userId;
                }
            }
            List <OrderItem> orderItems = new List <OrderItem>();

            foreach (var item in shoppingCart.ShoppingCartItems)
            {
                OrderItem orderItem = new OrderItem()
                {
                    Amount      = item.Amount,
                    InventoryId = item.InventoryId,
                    PriceBought = item.Inventory.Price,
                };
                orderItems.Add(orderItem);
                db.OrderItem.Add(orderItem);
            }
            order.OrderItems = orderItems;
            order.StatusId   = 1;
            db.Order.Add(order);
            db.SaveChanges();
            return(true);
        }
예제 #7
0
        public async Task <IActionResult> GenerateOrder([Bind("TransactionInfoId , Street , PostalCode , City , IBAN , Email")] OrderTransactionViewModel orderTransactionViewModel)
        {
            if (ModelState.IsValid)
            {
                if (Request.Cookies.TryGetValue("ShoppingCart", out string value))
                {
                    if (ShoppingCartService.CookieToShoppingCart(value, out ShoppingCartCookie shoppingCartCookie))
                    {
                        ShoppingCart shoppingCart = await ShoppingCartService.CookieToShoppingCartAsync(shoppingCartCookie, _db);

                        if (shoppingCart.ShoppingCartItems.Count > 0)
                        {
                            if (OrderService.OrderShoppingCart(shoppingCart, orderTransactionViewModel, _db, User))
                            {
                                OrderService.SendConfirmEmail(shoppingCart, orderTransactionViewModel).Wait();
                                Response.Cookies.Delete("ShoppingCart");
                                return(Redirect("/"));
                            }
                        }
                    }
                }
            }
            return(BadRequest("Something went wrong while generating your order , we are very sorry for this."));
        }