public Order MapBackToEntity(OrderCreationalModel model)
 {
     return(new Order
     {
         CustomerId = model.CustomerId,
         OrderStatus = model.OrderStatus,
         Comment = model.Comment
     });
 }
Ejemplo n.º 2
0
        public async Task <IActionResult> Post([FromBody] OrderCreationalModel orderCreationalModel)
        {
            ValidationResult validationResult = _orderCreationalModelValidator.Validate(orderCreationalModel);

            if (!validationResult.IsValid)
            {
                return(BadRequest(new DataResult <int> {
                    ResponseMessageType = ResponseMessageType.Error
                }));
            }

            return(Ok(await _orderService.CreateOrder(orderCreationalModel)));
        }
Ejemplo n.º 3
0
        // Map model to order
        // Set date to order
        // Calculate total cost and OrderProduct prices
        // Insert order
        // Set orderId to orderProducts
        // Insert orderProducts
        public async Task <DataResult <int> > CreateOrder(OrderCreationalModel orderCreationalModel)
        {
            using (IDbContextTransaction transaction = await _orderRepository.BeginTransactionAsync())
            {
                try
                {
                    Order order = _orderMapper.MapBackToEntity(orderCreationalModel);
                    order.OrderDate = DateTime.UtcNow;

                    order = await _orderRepository.AddAsync(order);

                    await _orderRepository.SaveAsync();

                    foreach (OrderProductModel orderProductModel in orderCreationalModel.OrderProductModels)
                    {
                        Result orderProductAddResult = await AddOrderProductAsync(order, orderProductModel);

                        if (orderProductAddResult.ResponseMessageType == ResponseMessageType.Error)
                        {
                            await transaction.RollbackAsync();

                            return(new DataResult <int>
                            {
                                ResponseMessageType = ResponseMessageType.Error
                            });
                        }
                    }

                    _orderRepository.Update(order);
                    await _orderRepository.SaveAsync();

                    await transaction.CommitAsync();

                    return(new DataResult <int>
                    {
                        Data = order.Id,
                        ResponseMessageType = ResponseMessageType.Success
                    });
                }
                catch (Exception)
                {
                    await transaction.RollbackAsync();

                    throw;
                }
            }
        }