Esempio n. 1
0
        public Order CreateOrder(OrderViewModel OrderModel, CartViewModel CartModel, string UserName)
        {
            var user = _UserManager.FindByNameAsync(UserName).Result;

            using (var transaction = _db.Database.BeginTransaction())
            {
                var order = new Order
                {
                    Name    = OrderModel.Name,
                    Address = OrderModel.Address,
                    Phone   = OrderModel.Phone,
                    User    = user,
                    Date    = DateTime.Now
                };

                _db.Orders.Add(order);

                foreach (var(product_model, quantity) in CartModel.Items)
                {
                    var product = _db.Products.FirstOrDefault(p => p.Id == product_model.Id);
                    if (product is null)
                    {
                        throw new InvalidOperationException($"Товар с идентификатором id:{product_model.Id} отсутствует в БД");
                    }

                    var order_item = new OrderItem
                    {
                        Order    = order,
                        Price    = product.Price,
                        Quantity = quantity,
                        Product  = product
                    };

                    _db.OrderItems.Add(order_item);
                }

                _db.SaveChanges();
                transaction.Commit();
                return(order);
            }
        }