Esempio n. 1
0
        public async Task <DtoOrderGetWithDetails> PostOrder([FromBody] DtoOrderPost dtoOrder)
        {
            var item = await queryProcessor.Create(dtoOrder);

            var order = autoMapper.Map <DtoOrderGetWithDetails>(item);

            return(order);
        }
Esempio n. 2
0
        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);
        }