public IActionResult FinishProduct(Product product)
        {
            var existingProduct = _repository.GetProductById(product.Id);

            if (existingProduct != null)
            {
                _repository.RemoveEntity(existingProduct);
            }

            product.Id = 0;
            _repository.AddEntity(product);
            if (!_repository.SaveChanges())
            {
                return(BadRequest("Cannot add the product to the database"));
            }

            return(RedirectToAction("AdminPage", "AdminPage"));
        }
        public async Task <IActionResult> SendOrder()
        {
            List <ShoppingCartItem> cart =
                SessionHelper.GetObjectFromJson <List <ShoppingCartItem> >(HttpContext.Session, "cart");

            var user = await _userManager.FindByNameAsync(User.Identity.Name);

            var order = new Order()
            {
                User        = user,
                OrderNumber = Guid.NewGuid().ToString(),
                OrderDate   = DateTime.UtcNow,
                Id          = 0
            };

            // Create the OrderItems
            var orderItems = new List <OrderItem>();

            foreach (var cartItem in cart)
            {
                var item = new OrderItem()
                {
                    Order     = order,
                    Product   = cartItem.Product,
                    Quantity  = cartItem.Quantity,
                    UnitPrice = cartItem.Product.Price,
                    Id        = 0
                };

                orderItems.Add(item);
            }

            order.Items = orderItems;
            _repository.AddEntity(order);

            if (!_repository.SaveChanges())
            {
                return(BadRequest("Cannot save the order."));
            }

            return(RedirectToAction("Index", "App"));
        }
Exemple #3
0
        public async Task <IActionResult> Post([FromBody] OrderViewModel model)
        {
            try
            {
                _logger.LogInformation($"Adding order {model} to the database.");

                if (ModelState.IsValid)
                {
                    var newOrder = _mapper.Map <OrderViewModel, Order>(model);

                    if (newOrder.OrderDate == DateTime.MinValue)
                    {
                        newOrder.OrderDate = DateTime.Now;
                    }

                    var currentUser = await _userManager.FindByNameAsync(User.Identity.Name);

                    newOrder.User = currentUser;

                    _repository.AddEntity(newOrder);
                    if (_repository.SaveChanges())
                    {
                        var savedOrderViewModel = _mapper.Map <Order, OrderViewModel>(newOrder);
                        return(Created($"api/orders/{savedOrderViewModel.OrderId}", savedOrderViewModel));
                    }
                }
                else
                {
                    return(BadRequest(ModelState));
                }
            }
            catch (Exception exception)
            {
                _logger.LogError($"Could not add the model {model} to the database. Error: {exception}");
            }

            return(BadRequest($"Could not save the new order: {model}"));
        }