public static (int, bool) AddOrderToDbOrGetId(shopContext shopContext, Order order) { int draftId = FindDraftId(shopContext, order.UserId); order.User = null; order.BillingAddress = null; order.ShippingAddress = null; order.Date = DateTime.Now; if (draftId == 0) { shopContext.Orders.Add(order); shopContext.SaveChanges(); shopContext.Entry(order).GetDatabaseValues(); return(order.OrderId, false); } else { order.OrderId = (int)draftId; order.Draft = false; shopContext.Orders.Update(order); shopContext.SaveChanges(); return((int)draftId, true); } }
public int AddToAddressDBOrGetID(Address data) { int?addressId = _dbContext.Addresses .Where(a => a.Country.Equals(data.Country) && a.City.Equals(data.City) && a.ZipCode.Equals(data.ZipCode) && a.Street.Equals(data.Street)) .Select(a => (int?)a.AddressId) .FirstOrDefault(); if (addressId.HasValue) { return(addressId.Value); } else { _dbContext.Addresses.Add(data); _dbContext.SaveChanges(); _dbContext.Entry(data).GetDatabaseValues(); return(data.AddressId); } }
public static void SaveBasketOfLoggedInUser(shopContext shopContext, List <OrderedBook> list, string authId) { int userId = GetUserIdById(shopContext, authId); var order = new Order(); order.UserId = userId; order.Draft = true; order.Date = DateTime.Now; //TODO: real addresses order.BillingAddressId = 1; order.ShippingAddressId = 1; shopContext.Orders.Add(order); shopContext.SaveChanges(); shopContext.Entry(order).GetDatabaseValues(); int orderId = order.OrderId; AddOrderedBooksToDb(shopContext, orderId, list); }
public void Update(T item) { db.Set <T>().Attach(item); db.Entry(item).State = EntityState.Modified; }
public IActionResult CheckOut(ShoppingCartViewModel scvm) { double totalPrice = scvm.TotalPrice(); if (!ModelState.IsValid) { return(View("ShoppingCart", scvm)); } Address billAdd = scvm.Order.BillingAddress; scvm.Order.BillingAddressId = AddToAddressDBOrGetID(billAdd); if (scvm.ShippingEqualBilling || scvm.Order.BillingAddress == scvm.Order.ShippingAddress) { scvm.Order.ShippingAddressId = scvm.Order.BillingAddressId; } else { Address shipAdd = scvm.Order.ShippingAddress; scvm.Order.ShippingAddressId = AddToAddressDBOrGetID(shipAdd); } User user = scvm.Order.User; int? userId = _dbContext.Users .Where(u => u.UserName.Equals(user.UserName) && u.Email.Equals(user.Email) && u.Phone.Equals(user.Phone)) .Select(u => (int?)u.UserId) .FirstOrDefault(); if (userId.HasValue) { scvm.Order.UserId = userId.Value; } else { _dbContext.Users.Add(user); _dbContext.SaveChanges(); _dbContext.Entry(user).GetDatabaseValues(); scvm.Order.UserId = user.UserId; } var order = scvm.Order; scvm.Order.User = null; scvm.Order.BillingAddress = null; scvm.Order.ShippingAddress = null; _dbContext.Orders.Add(order); _dbContext.SaveChanges(); _dbContext.Entry(order).GetDatabaseValues(); int orrderId = order.OrderId; foreach (var item in scvm.Basket) { var book = new BooksOrdered(); book.BookId = item.BookId; book.OrderId = orrderId; for (var i = 0; i < item.Quantity; i++) { _dbContext.BooksOrdereds.Add(book); } _dbContext.SaveChanges(); } return(RedirectToAction("Payment", new { orderId = orrderId, totalPrice = scvm.TotalPrice() })); }