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