Пример #1
0
        public async Task <IActionResult> PutOrder(int id, [FromBody] GetOrderForUpdateDto getOrderForUpdateDto)
        {
            try
            {
                await _orderService.UpdateOrder(id,
                                                getOrderForUpdateDto);

                return(Ok());
            }
            catch (ArgumentException e)
            {
                return(StatusCode(400, e.Message));
            }
        }
Пример #2
0
        public async Task <ActionResult <Order> > PostOrder([FromBody] GetOrderForUpdateDto getOrderForUpdateDto)
        {
            try
            {
                await _orderService.AddOrder(getOrderForUpdateDto.CustomerId,
                                             getOrderForUpdateDto.Status,
                                             getOrderForUpdateDto.Comment,
                                             getOrderForUpdateDto.ProductsDto);

                return(Ok());
            }
            catch (ArgumentException e)
            {
                return(StatusCode(400, e.Message));
            }
        }
Пример #3
0
        public async Task <Order> UpdateOrder(int orderId, GetOrderForUpdateDto getOrderForUpdateDto)
        {
            var order = await _repositoryManager.Order.GetOrderWithProductOrders(orderId);

            order.CustomerId = getOrderForUpdateDto.CustomerId;
            order.Comment    = getOrderForUpdateDto.Comment;
            order.Status     = getOrderForUpdateDto.Status;
            foreach (var productOrder in order.ProductOrders)
            {
                var product = await _repositoryManager.Product.GetProductAsync(productOrder.ProductId);

                product.Quantity += productOrder.Quantity;
                product.ProductOrders.Remove(productOrder);
            }
            await _repositoryManager.SaveAsync();

            foreach (var ordersDto in getOrderForUpdateDto.ProductsDto)
            {
                var product = await _repositoryManager.Product.GetProductAsync(ordersDto.ProductId);

                if (product.Quantity < ordersDto.Quantity)
                {
                    throw new ArgumentException("Available only " + product.Quantity + " of " + product.Name);
                }
                product.Quantity -= ordersDto.Quantity;
                product.ProductOrders.Add(new ProductOrders
                {
                    Order    = order,
                    Quantity = ordersDto.Quantity
                });
            }

            await _repositoryManager.SaveAsync();

            return(order);
        }