コード例 #1
0
        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);
            }
        }
コード例 #2
0
ファイル: HomeController.cs プロジェクト: Aviatore/shop
        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);
            }
        }
コード例 #3
0
        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);
        }
コード例 #4
0
 public void Update(T item)
 {
     db.Set <T>().Attach(item);
     db.Entry(item).State = EntityState.Modified;
 }
コード例 #5
0
        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()
            }));
        }