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