public async Task <IActionResult> Checkout(CheckoutView model) { if (!ModelState.IsValid) { return(View("Index", model)); } string user = HttpContext.Session.GetString("Id"); IQueryable <Cart> cart = from m in _context.Cart select m; cart = cart.Where(m => m.User == user); List <Cart> carts = await cart.ToListAsync(); string itemString = ""; string quantityString = ""; string priceString = ""; int total = 0; foreach (Cart c in carts) { Product p = await _context.Product.FindAsync(c.Product); itemString += p.Name + ";"; quantityString += c.Quantity + ";"; priceString += p.Price + ";"; total += c.Quantity * p.Price; } itemString = itemString.TrimEnd(';'); quantityString = quantityString.TrimEnd(';'); priceString = priceString.TrimEnd(';'); string time = String.Format("{0: dd/MM/yyyy hh:mm}", DateTime.Now); Bill bill = new Bill() { User = user, Name = model.Name, Address = model.Address, Phone = model.Phone, Email = model.Email, Code = model.Code, Note = model.Note, Items = itemString, Quantity = quantityString, Price = priceString, Discount = 0, Ship = 15, Total = total + model.Ship - model.Discount, PaymentMethod = model.PaymentMethod, Time = time, Status = 0 }; _context.Bill.Add(bill); _context.Cart.RemoveRange(carts); await _context.SaveChangesAsync(); return(View()); }
public CheckoutView CreateCheckoutView(List <ShoppingCart> shoppingCarts) { CheckoutView checkoutView = new CheckoutView(); checkoutView.ShoppingCarts = shoppingCarts; checkoutView.CustomerAddress = new CustomerAddress(); return(checkoutView); }
public async Task <IActionResult> Index() { var user = HttpContext.Session.GetString("Id"); if (String.IsNullOrEmpty(user)) { return(View("Empty")); } Account account = await _context.Account.FindAsync(user); var cart = from m in _context.Cart select m; cart = cart.Where(c => c.User == user); List <Cart> carts = await cart.ToListAsync(); if (carts.Count == 0) { return(View("Empty")); } int price = 0; List <Item> items = new List <Item>(); foreach (Cart item in carts) { Product product = await _context.Product.FindAsync(item.Product); price += product.Price * item.Quantity; Item i = new Item(); i.Name = product.Name; i.Quantity = item.Quantity; items.Add(i); } CheckoutView view = new CheckoutView() { Name = account.Name, Address = account.Address, Phone = account.Phone, Email = account.Email, Code = "", Note = "", Price = price, Ship = 15, Discount = 0, PaymentMethod = 1, Items = items }; return(View(view)); }
// GET: Checkout/Details/5 public async Task <ActionResult> DetailsAsync(int id) // send "GET api/Customer" to service, get headers of response { CheckoutView model = new CheckoutView(); HttpRequestMessage request = CreateRequestToService(HttpMethod.Get, $"api/Reservation/{id}"); HttpResponseMessage response = await Client.SendAsync(request); //// (if status code is not 200-299 (for success)) //if (!response.IsSuccessStatusCode) //{ // if (response.StatusCode == HttpStatusCode.Unauthorized) // { // return RedirectToAction("Login", "Account"); // } // return RedirectToAction("Error", "Home"); //} // get the whole response body (second await) var responseBody = await response.Content.ReadAsStringAsync(); // this is a string, so it must be deserialized into a C# object. // we could use DataContractSerializer, .NET built-in, but it's more awkward // than the third-party Json.NET aka Newtonsoft JSON. Reservation reservation = JsonConvert.DeserializeObject <Reservation>(responseBody); model.Reservation = reservation; //Get all events by customer request = CreateRequestToService(HttpMethod.Get, $"api/CustomerEvents/{reservation.CustomerId}"); response = await Client.SendAsync(request); responseBody = await response.Content.ReadAsStringAsync(); List <EventCustomer> eventsCustomer = JsonConvert.DeserializeObject <List <EventCustomer> >(responseBody); model.EventsCustomer = eventsCustomer; //Total Cost request = CreateRequestToService(HttpMethod.Get, $"api/Checkout/{id}"); response = await Client.SendAsync(request); responseBody = await response.Content.ReadAsStringAsync(); decimal cost = JsonConvert.DeserializeObject <decimal>(responseBody); model.TotalCost = cost; return(View(model)); }
public IActionResult Checkout() { if (!Util.IsLoggedIn(_cache)) { return(RedirectToAction("Login", "Customer")); } ViewModel viewModel = new ViewModel(); ViewData["CheckoutTotal"] = shoppingCart.Sum(s => s.Price); CheckoutView checkoutView = viewModel.CreateCheckoutView(shoppingCart); return(View(checkoutView)); }
public IActionResult Checkout() { if (Util.Util.IsLoggedIn(_cache)) { return(RedirectToAction("Login", "Customer")); } var x = shoppingCart.Sum(s => s.Price); ViewData["CheckoutTotal"] = x; CheckoutView checkoutView = new CheckoutView(); checkoutView.ShoppingCarts = shoppingCart; checkoutView.CustomerAddress = new CustomerAddress(); return(View(checkoutView)); }
public ActionResult Checkout(PersonalDetailsView billingDetailsView) { var shoppingCart = _cartContext.Current(); if (!ModelState.IsValid) { var checkoutView = new CheckoutView { OrderSummary = Mapper.Map<Cart, OrderSummaryView>(shoppingCart), BillingDetails = billingDetailsView }; return View(checkoutView); } // Set the billing details shoppingCart.SetBillingDetails(Mapper.Map<PersonalDetailsView, PersonalDetails>(billingDetailsView)); if (Request.IsAuthenticated) { _profileService.UpdateBillingDetails(User.Identity.Name, shoppingCart.BillingDetails); } var paymentResponse = _paymentService.ProcessPaymentForCart(shoppingCart, cancelUrl: Url.ActionAbsolute("Cancel", "Cart"), returnUrl: Url.ActionAbsolute("AuthorisePayment", "Cart")); return Redirect(paymentResponse.PaymentUrl); }
public ActionResult Checkout() { // If there are no items or shipping was not set then go back to MyCart view! var shoppingCart = _cartContext.Current(); if (!_cartContext.HasItemsInCart() || shoppingCart.ShippingCost == null) { return RedirectToAction("MyCart"); } var viewModel = new CheckoutView(); if (Request.IsAuthenticated) { // Fetch the user profile for the currently logged in user var userProfile = _profileService.GetProfile(User.Identity.Name); viewModel = Mapper.Map<UserProfile, CheckoutView>(userProfile); shoppingCart.SetUser(User.Identity.Name); } else { // Map the shipping details from the shopping cart for the guest user viewModel.ShippingDetails = Mapper.Map<PersonalDetails, PersonalDetailsView>(shoppingCart.ShippingDetails); } // Clone the shipping details to billing details ( for those that are not set already ) if (viewModel.BillingDetails == null) { viewModel.ShippingDetails.CloneInTo(viewModel.BillingDetails); } viewModel.OrderSummary = Mapper.Map<Cart, OrderSummaryView>(shoppingCart); return View(viewModel); }