예제 #1
0
        /// <summary>
        /// Enter invoice address and place order
        /// </summary>
        /// <returns></returns>
        public ActionResult CheckOut()
        {
            var invAdr = new InvoiceAddressVM();

            // If logged in, get address from Identity user

            if (User.Identity.IsAuthenticated)
            {
                var context = new AppDbContext();
                var usid    = User.Identity.GetUserName();
                var us      = context.Users.FirstOrDefault(x => x.UserName == usid);

                if (us != null)
                {
                    invAdr.FirstName   = us.FirstName;
                    invAdr.LastName    = us.LastName;
                    invAdr.Email       = us.Email;
                    invAdr.PhoneNumber = us.PhoneNumber;
                    invAdr.Country     = us.Country;
                    invAdr.City        = us.City;
                    invAdr.Address     = us.Address;
                    invAdr.PostalCode  = us.PostalCode;
                }
            }

            return(View(invAdr));
        }
예제 #2
0
        public ActionResult SubmitOrder([Bind(Include = "FirstName, LastName, Email, PhoneNumber, Country, City, Address, PostalCode")] InvoiceAddressVM a)

        {
            // Create Order

            decimal  orderTotal = 0;
            decimal  rowAmount  = 0;
            DateTime wDate;

            var context = new AppDbContext();

            var order = new Order();

            order.OrderDate = DateTime.Now;
            wDate           = order.OrderDate;
            order.Total     = 0;
            var cId = Session["SessId"] as string;

            order.CartId = cId;
            order.Email  = a.Email;
            context.Orders.Add(order);
            var affectedRows = context.SaveChanges();


            // Get order id from Order table

            int wOrderId = 0;
            var orders   = context.Orders.ToList().Select(x => new Order
            {
                CartId  = x.CartId,
                OrderId = x.OrderId,
            }).ToList();

            foreach (var item in orders)
            {
                if (item.CartId == cId && item.OrderId > wOrderId)
                {
                    wOrderId = item.OrderId;
                }
            }


            // --------------------------------------------------
            // Save OrderId

            if (Session["OrderId"] == null)
            {
                Session.Add("OrderId", wOrderId);
            }
            // --------------------------------------------------


            if (wOrderId != 0)
            {
                var carts = context.Carts.ToList().Select(x => new Cart
                {
                    CartId      = x.CartId,
                    ItemId      = x.ItemId,
                    Price       = x.Price,
                    Quantity    = x.Quantity,
                    DateCreated = x.DateCreated,
                }).ToList();

                if (carts != null)
                {
                    foreach (var item in carts)
                    {
                        if (item.CartId == cId)
                        {
                            var od = new OrderDetail();
                            od.OrderId   = wOrderId;
                            od.ItemId    = item.ItemId;
                            od.Quantity  = item.Quantity;
                            od.UnitPrice = item.Price;

                            // add to ordertotal
                            rowAmount  = item.Price * item.Quantity;
                            orderTotal = orderTotal + rowAmount;

                            context.OrderDetails.Add(od);
                            affectedRows = context.SaveChanges();
                        }
                    }

                    // update total amount in Order table
                    //  or = context.Orders.FirstOrDefault(x => x.CartId == cId);
                    var or = context.Orders.FirstOrDefault(x => x.OrderId == wOrderId);

                    if (or != null)
                    {
                        or.Total = orderTotal;
                        context.SaveChanges();
                    }
                }


                // create or update Invoice Address

                var iAdr = new InvoiceAddress();

                iAdr.FirstName   = a.FirstName;
                iAdr.LastName    = a.LastName;
                iAdr.Email       = a.Email;
                iAdr.PhoneNumber = a.PhoneNumber;
                iAdr.Country     = a.Country;
                iAdr.City        = a.City;
                iAdr.Address     = a.Address;
                iAdr.PostalCode  = a.PostalCode;

                // --------------------------------------------------
                // Save Email address
                // Used as key in Invoice Address table

                if (Session["Email"] == null)
                {
                    string wem = a.Email;
                    Session.Add("Email", wem);
                }
                // --------------------------------------------------

                var ia = context.InvoiceAddresses.FirstOrDefault(x => x.Email == a.Email);

                if (ia == null)
                {
                    context.InvoiceAddresses.Add(iAdr);
                    affectedRows = context.SaveChanges();
                }
                else
                {
                    context.SaveChanges();
                }
            }


            //return View("CheckOut", a);
            return(RedirectToAction("OrderConfirm", "Shop"));
        }