Ejemplo n.º 1
0
        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());
        }
Ejemplo n.º 2
0
        public CheckoutView CreateCheckoutView(List <ShoppingCart> shoppingCarts)
        {
            CheckoutView checkoutView = new CheckoutView();

            checkoutView.ShoppingCarts   = shoppingCarts;
            checkoutView.CustomerAddress = new CustomerAddress();
            return(checkoutView);
        }
Ejemplo n.º 3
0
        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));
        }
Ejemplo n.º 4
0
        // 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));
        }
Ejemplo n.º 6
0
        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));
        }
Ejemplo n.º 7
0
        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);
        }
Ejemplo n.º 8
0
        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);
        }