public Order MapBackToEntity(OrderCreationalModel model) { return(new Order { CustomerId = model.CustomerId, OrderStatus = model.OrderStatus, Comment = model.Comment }); }
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))); }
// 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; } } }