public async Task <DtoOrderGetWithDetails> PostOrder([FromBody] DtoOrderPost dtoOrder) { var item = await queryProcessor.Create(dtoOrder); var order = autoMapper.Map <DtoOrderGetWithDetails>(item); return(order); }
public async Task <Order> Create(DtoOrderPost orderDto) { Order order = new Order() { CustomerID = orderDto.CustomerID, EmployeeID = orderDto.EmployeeID, ShipAddress = orderDto.ShipAddress, ShipCity = orderDto.ShipCity, ShipCountry = orderDto.ShipCountry, ShipName = orderDto.ShipName, ShippedDate = orderDto.ShippedDate, ShipPostalCode = orderDto.ShipPostalCode, ShipRegion = orderDto.ShipRegion, ShipVia = orderDto.ShipVia, OrderDate = orderDto.OrderDate, Freight = orderDto.Freight, RequiredDate = orderDto.RequiredDate }; using (var transaction = unitOfWork.BeginTransaction()) { try { unitOfWork.Add(order); await unitOfWork.CommitAsync(); foreach (var orderDetail in orderDto.Order_Details.ToList()) { unitOfWork.Add(orderDetail); } await unitOfWork.CommitAsync(); } catch (Exception) { transaction.RollBack(); } } Order resultOrder = await unitOfWork.Query <Order>().OrderBy(x => x.OrderID).LastAsync(); BackgroundJob.Enqueue(() => RefreshCache()); return(resultOrder); }