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); }
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()); }
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.")); }
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); }
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); }
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.")); }