示例#1
0
        public async Task <OrderConfirmation> Neworder(CreateOrderDto model)
        {
            // Call asynchronous network methods in a try/catch block to handle exceptions
            try
            {
                HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, OrderResource)
                {
                    Content = new StringContent(JsonConvert.SerializeObject(model), Encoding.UTF8, "application/json")
                };

                HttpResponseMessage response = await _httpClient.SendAsync(request);

                if (response.IsSuccessStatusCode)
                {
                    var confirmation =
                        JsonConvert.DeserializeObject <OrderConfirmation>(await response.Content.ReadAsStringAsync());

                    return(confirmation);
                }
            }
            catch (HttpRequestException e)
            {
                _logger.Error("Error: {@error}", e.Message);
            }

            return(new OrderConfirmation()
            {
                OrderSucess = false
            });
        }
        public IActionResult Checkout(OrderViewModel orderViewModel)
        {
            if (ModelState.IsValid)
            {
                var createOrderViewModel = new CreateOrderDto
                {
                    OrderViewModel = orderViewModel,
                    OrderItems     = _cartService.TransformCart().Items
                                     .Select(o => new OrderItem
                    {
                        Id       = o.Key.Id,
                        Price    = o.Key.Price,
                        Quantity = o.Value
                    })
                                     .Select(o => o.ToDto()).ToList()
                };

                var orderResult = _orderService.CreateOrder(
                    createOrderViewModel, User.Identity.Name);
                _cartService.RemoveAll();

                return(RedirectToAction("OrderConfirmed",
                                        new { id = orderResult.Id }));
            }

            var detailsViewModel = new OrderDetailsViewModel
            {
                OrderViewModel = orderViewModel,
                CartViewModel  = _cartService.TransformCart()
            };

            return(View("Details", detailsViewModel));
        }
示例#3
0
        public IActionResult Post([FromForm] CreateOrderDto dto)
        {
            try
            {
                _createOrder.Execute(dto);
                return(Ok());
            }
            catch (EntityNotFoundException e)
            {
                return(NotFound(e.Message));
            }
            catch (EntityMissmatchException e)
            {
                if (e.Message.Contains("count"))
                {
                    return(BadRequest(e.Message));
                }

                return(UnprocessableEntity(e.Message));
            }
            catch (ProductNotAvailableException e)
            {
                return(BadRequest(e.Message));
            }
            catch (InvalidInputException e)
            {
                return(BadRequest(e.Message));
            }
            catch (Exception e)
            {
                return(StatusCode(500, e.Message));
            }
        }
        public async Task AddBadRequestStatus()
        {
            //Arrange
            var userManager = GetMockUserManager();

            User user = new User {
                Id = 1, UserName = "******"
            };
            CreateOrderDto createOrder = new CreateOrderDto {
                Reference = "430000"
            };
            ReferenceToAddOrderDto reference = new ReferenceToAddOrderDto {
                Reference = "430000"
            };
            Plan plan = new Plan {
                Id = 5, Reference = "430000"
            };

            userManager.Setup(x => x.FindByIdAsync("1")).Returns(Task.FromResult(user));
            warehouseMock.Setup(x => x.GetOrders("bc1")).Returns(Task.FromResult(GetPlans()));
            mapperMock.Setup(x => x.Map <Plan>(createOrder)).Returns(plan);
            warehouseMock.Setup(x => x.Add(plan));
            warehouseMock.Setup(x => x.SaveAll()).Returns(Task.FromResult(false));

            PlanController controller = new PlanController(warehouseMock.Object, mapperMock.Object, userManager.Object);

            //Act
            var action = await controller.AddOrder("bc1", 1, reference, 2) as BadRequestObjectResult;

            //Arrange
            Assert.Equal(400, action.StatusCode);
        }
示例#5
0
        public async Task <IActionResult> Basket(CreateOrderDto createOrderDto)
        {
            if (!ModelState.IsValid)
            {
                int userId = Convert.ToInt32(User.FindFirst("UserId").Value);
                createOrderDto.UserAddresses = await _userAddressService.GetListAsync(userId);

                return(View(createOrderDto));
            }
            IDataResult <CartDTO> cart = await _cartService.GetCart();

            if (cart.IsSuccess)
            {
                Order result = await _orderService.CreateOrder(cart.Data, createOrderDto);

                if (result.Id != 0)
                {
                    TempData["ToastModel"] = result.Id.ToString();
                }
                else
                {
                    TempData["ToastModel"] = "Bir Hata ile karşılaşıldı !";
                }
            }
            else
            {
                TempData["ToastModel"] = "Sepette Ürün Bulunamadı !";
            }
            return(RedirectToAction(nameof(PaymentResult), "Cart"));
        }
示例#6
0
        public async Task <IActionResult> CreateOrder([FromBody] CreateOrderDto model)
        {
            var order = _mapper.Map <Order>(model);

            foreach (var container in order.ProductsContainers)
            {
                container.OrderId = order.Id;
                container.Order   = order;
                container.Product = await _productRepository.GetByIdAsync(container.ProductId);
            }

            order.TotalPrice = _orderService.CalculateTotalPrice(order);

            var insertResult = await _orderRepository.InsertAsync(order);

            await _emailSender.SendEmailAsync(
                (HttpContext.RequestServices.GetService(typeof(IConfiguration)) as IConfiguration)?["EmailCredential:Email"],
                order.Email,
                "Info",
                MailsContainer.GetMailForCreateOrder(order));

            if (insertResult >= 1)
            {
                return(Ok("Success"));
            }

            return(BadRequest("Can't insert order"));
        }
示例#7
0
        public async Task CreateOrder([FromRoute] string userName, [FromBody] OrderProductDto dto)
        {
            HttpClient client = _httpClientFactory.CreateClient();

            client.BaseAddress = new Uri("https://localhost:5001/");
            var requestDto = new CreateOrderDto
            {
                Count = dto.Count,
                Item  = dto.Item
            };
            HttpResponseMessage response = await client.PostAsJsonAsync("api/OrderManager", requestDto);

            if (!response.IsSuccessStatusCode)
            {
                throw new Exception("Order failed");
            }

            int        orderId = Convert.ToInt32(await response.Content.ReadAsStringAsync());
            List <int> orderList;

            if (!_userManager.TryGetValue(userName, out orderList))
            {
                orderList = new List <int>();
                _userManager[userName] = orderList;
            }
            orderList.Add(orderId);
        }
示例#8
0
        public IActionResult Create(CreateOrderDto createOrderDto)
        {
            if (createOrderDto.BookIds.Count == 0)
            {
                return(BadRequest(ModelState));
            }


            if (ModelState.IsValid)
            {
                var response = _ordersService.Create(createOrderDto.ToDomainModel());
                if (!response)
                {
                    return(BadRequest(ModelState));
                }
                else
                {
                    return(Ok());
                }
            }
            else
            {
                return(BadRequest(ModelState));
            }
        }
示例#9
0
        public ActionResult CreateOrder(CreateOrderDto input)
        {
            var order = new PurchaseOrder
            {
                DateTime = input.Date,
                VendorId = input.VendorId,
                Discount = input.Discount,
                Items    = new List <LineItem>()
            };

            input.Items.ForEach(x =>
            {
                order.Items.Add(new LineItem
                {
                    ProductId = x.ProductId,
                    Quantity  = x.Quantity,
                    UnitPrice = x.UnitPrice
                });
            });

            var db = new ApplicationDbContext();

            db.PurchaseOrders.Add(order);
            db.SaveChanges();

            return(Json(new { sucess = true }));
        }
        public async Task <IActionResult> PostOrder([FromBody] CreateOrderDto orderdto)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }
            var orderObj = _mapper.Map <Order>(orderdto);

            try
            {
                await _orders.Add(orderObj);
            }
            catch (DbUpdateException)
            {
                if (!await OrderExists(orderObj.Id))
                {
                    return(NotFound());
                }
                else
                {
                    return(BadRequest());
                }
            }
            return(CreatedAtAction("GetOrder", new { id = orderObj.Id }, orderObj));
        }
        public void Execute(CreateOrderDto request)
        {
            _validator.ValidateAndThrow(request);

            var order = new Order
            {
                Address   = request.Address,
                UserId    = request.UserId,
                OrderDate = request.OrderDate
            };

            foreach (var item in request.Items)
            {
                var book = _context.Books.Find(item.BookId);
                book.Quantity -= item.Quantity;

                order.OrderLines.Add(new OrderLine
                {
                    BookId   = item.BookId,
                    Quantity = item.Quantity,
                    Name     = book.Title,
                    Price    = book.Price,
                    OrderId  = order.Id
                });
            }

            _context.Orders.Add(order);
            _context.SaveChanges();
        }
        public OrderDto CreateOrder(CreateOrderDto createOrderDto,
                                    string userName)
        {
            var response = Post($"{ServiceAddress}/{userName}", createOrderDto);

            return(response.Content.ReadAsAsync <OrderDto>().Result);
        }
示例#13
0
        public async Task <Order> CreateAsync(CreateOrderDto model)
        {
            var order = new Order
            {
                CustomerId = model.CustomerId,
                EmployeeId = model.EmployeeId
            };

            var details = model.OrderDetailDto.
                          Select(d => new OrderDetail()
            {
                OrderId   = d.OrderId,
                ProductId = d.ProductId,
                UnitPrice = d.UnitPrice,
                Quantity  = d.Quantity,
                Discount  = d.Discount
            });

            order.OrderDetails = details.ToList <OrderDetail>();

            _uow.Add(order);
            await _uow.CommitAsync();

            return(order);
        }
        public CreateOrderResponse Create(CreateOrderDto createOrderDto)
        {
            //get by ids
            var books = booksService.GetByIds(createOrderDto.BookIds);

            //create new order object
            var newOrder = new Order
            {
                Name       = createOrderDto.Name,
                Address    = createOrderDto.Address,
                Email      = createOrderDto.Email,
                Phone      = createOrderDto.Phone,
                BookOrders = createOrderDto.BookIds.Select(x => new BookOrders {
                    BookId = x
                }).ToList(),
                FullPrice = books.Sum(x => x.Price),
                OrderCode = Helper.RandomString(6)
            };

            //save
            ordersRepository.Create(newOrder);

            var response = new CreateOrderResponse();

            response.OrderCode = newOrder.OrderCode;
            return(response);
        }
示例#15
0
        public async Task CreateShouldSaveNew()
        {
            var dto = new CreateOrderDto()
            {
                CustomerId     = _random.Next().ToString().PadLeft(5),
                EmployeeId     = _random.Next(),
                OrderDetailDto = new List <OrderDetailDto>()
                {
                    new OrderDetailDto()
                    {
                        ProductId = _random.Next(),
                        Quantity  = (short)_random.Next(),
                        UnitPrice = _random.Next(),
                        Discount  = _random.Next(1)
                    }
                }
            };
            var result = await _query.CreateAsync(dto);

            result.CustomerId.Should().Be(dto.CustomerId);
            result.EmployeeId.Should().Be(dto.EmployeeId);
            result.OrderDetails.Count().Should().Be(1);

            _uow.Verify(x => x.Add(result));
            _uow.Verify(x => x.CommitAsync());
        }
示例#16
0
        public virtual async Task <Order> GenerateAsync(CreateOrderDto input, Dictionary <Guid, ProductDto> productDict, Dictionary <string, object> orderExtraProperties)
        {
            var orderLines = new List <OrderLine>();

            foreach (var orderLine in input.OrderLines)
            {
                orderLines.Add(await GenerateNewOrderLineAsync(orderLine, productDict));
            }

            var productTotalPrice = orderLines.Select(x => x.TotalPrice).Sum();

            var order = new Order(
                id: _guidGenerator.Create(),
                tenantId: _currentTenant.Id,
                storeId: input.StoreId,
                customerUserId: _currentUser.GetId(),
                currency: await GetStoreCurrencyAsync(input.StoreId),
                productTotalPrice: productTotalPrice,
                totalDiscount: orderLines.Select(x => x.TotalDiscount).Sum(),
                totalPrice: productTotalPrice,
                refundedAmount: 0,
                customerRemark: input.CustomerRemark);

            foreach (var orderExtraProperty in orderExtraProperties)
            {
                order.SetProperty(orderExtraProperty.Key, orderExtraProperty.Value);
            }

            order.SetOrderLines(orderLines);

            order.SetOrderNumber(await _orderNumberGenerator.CreateAsync(order));

            return(order);
        }
示例#17
0
        public IActionResult Create(CreateOrderDto createOrderDto)
        {
            try
            {
                if (ModelState.IsValid)
                {
                    var response = _ordersService.Create(createOrderDto.ToModel());

                    if (response.IsSuccessfull)
                    {
                        return(Ok(response.Message));
                    }
                    else
                    {
                        ModelState.AddModelError("", response.Message);
                        //return BadRequest(ModelState);
                    }
                }
                return(BadRequest(ModelState));
            }
            catch (Exception)
            {
                return(StatusCode(500));
            }
        }
示例#18
0
        public void Execute(CreateOrderDto request)
        {
            _validator.ValidateAndThrow(request);
            int IdUser = actor.Id;
            var order  = new Order
            {
                UserId  = IdUser,
                Address = request.Address,
                Date    = request.OrderDate
            };

            foreach (var item in request.Items)
            {
                var product = _context.Products.Find(item.ProductId);
                product.Quantity -= item.Quantity;
                order.OrderInfo.Add(new OrderInfo
                {
                    Name      = product.Name,
                    Quantity  = item.Quantity,
                    Price     = product.Price,
                    ProductId = item.ProductId,
                });;
            }
            _context.Orders.Add(order);
            _context.SaveChanges();
        }
示例#19
0
        public IActionResult CreateOrder(CreateOrderDto dto)
        {
            if (!TryValidateModel(dto))
            {
                return(this.View(dto));
            }
            ;

            var quantity        = int.Parse(dto.Quantity);
            var productId       = dto.productId;
            var selectedTableId = dto.DisplayTable;

            var product = this._productsService.GetProductById(productId);

            var totalPrice = quantity * product.Price;

            var orderSuccessful = this._ordersService.AddOrder(selectedTableId, DateTime.Now, quantity, product.Id, totalPrice).Result;

            if (!orderSuccessful)
            {
                return(View("OrderNotCompleted"));
            }

            return(Redirect("/"));
        }
示例#20
0
        public void Execute(CreateOrderDto dto)
        {
            _validator.ValidateAndThrow(dto);

            var order = new Order
            {
                UserId    = dto.Id,
                Address   = dto.Address,
                OrderDate = dto.OrderDate
            };

            foreach (var item in dto.Items)
            {
                var product = _context.Products.Find(item.ProductId);

                product.Quantity -= item.Quantity;

                order.OrderLines.Add(new OrderLine
                {
                    ProductId = item.ProductId,
                    Quantity  = item.Quantity,
                    Name      = product.Name,
                    Price     = product.Price
                });
            }


            _context.Orders.Add(order);

            _context.SaveChanges();
        }
示例#21
0
        public IActionResult CheckOut(OrderViewModel model)
        {
            if (ModelState.IsValid)
            {
                var orderModel = new CreateOrderDto()
                {
                    OrderViewModel = model,
                    OrderItems     = new List <OrderItemDto>()
                };
                foreach (var orderItem in _cartService.TransformCart().Items)
                {
                    // Todo: студентам самостоятельно перенести в OrderItemMapper
                    orderModel.OrderItems.Add(new OrderItemDto()
                    {
                        Id       = orderItem.Key.Id,
                        Price    = orderItem.Key.Price,
                        Quantity = orderItem.Value
                    });
                }

                var orderResult = _ordersService.CreateOrder(orderModel, User.Identity.Name);

                _cartService.RemoveAll();
                return(RedirectToAction("OrderConfirmed", new { orderResult.Id }));
            }

            var detailsModel = new OrderDetailsViewModel()
            {
                CartViewModel  = _cartService.TransformCart(),
                OrderViewModel = model
            };

            return(View("Details", detailsModel));
        }
示例#22
0
        public async Task <AttrResultModel> UpdateOrder([FromBody] CreateOrderDto orderDto)
        {
            //这里如果不指定主键的话,默认会按照实体的第一个带有ID的字段为主键,建议手动指定
            var result = await client.UpdateHasValueFieldAsync <CreateOrderDto, R01_Order>(orderDto, "更新出错", "R01_OrderId");

            result = await client.UpdateAsync <CreateOrderDto, R01_Order>(orderDto, "更新出错", "R01_OrderId");

            result = await client.ExecUpdateSql <R01_Order>(null, "Update R01_Order set R01_OrderNo = 'test' where R01_OrderId = 1", "更新出错");

            OrderUpdate orderUpdate = new OrderUpdate()
            {
                C02_CustomerId    = 1,
                P01_ProductId     = 1,
                P02_ProductFlowId = 1,
                R01_OrderNo       = "11"
            };

            //生成的sql

            /*
             *  Update  tableName
             *  set  DbfieldName2 = @C02_CustomerId,
             *      DbfieldName3 = @P01_ProductId,
             *      DbfieldName4 = @P02_ProductFlowId
             *  Where  DbfieldName1 = @R01_OrderNo
             */
            result = await client.UpdateAsync(orderUpdate);

            return(result);
        }
示例#23
0
    public virtual async Task <Money?> GetAssetCategoryBookingUnitPriceAsync(CreateOrderDto input,
                                                                             CreateOrderLineDto inputOrderLine, Currency effectiveCurrency)
    {
        var productAssetCategory = (await _productAssetCategoryAppService.GetListAsync(
                                        new GetProductAssetCategoryListDto
        {
            MaxResultCount = 1,
            StoreId = input.StoreId,
            ProductId = inputOrderLine.ProductId,
            ProductSkuId = inputOrderLine.ProductSkuId,
            AssetCategoryId = inputOrderLine.GetBookingAssetCategoryId(),
            PeriodSchemeId = inputOrderLine.GetBookingPeriodSchemeId()
        }
                                        )).Items.First();

        var productAssetCategoryPeriod =
            productAssetCategory.Periods.FirstOrDefault(x => x.PeriodId == inputOrderLine.GetBookingPeriodId());

        if (productAssetCategoryPeriod is not null)
        {
            await CheckCurrencyAsync(productAssetCategoryPeriod.Currency, effectiveCurrency);

            return(new Money(productAssetCategoryPeriod.Price, effectiveCurrency));
        }

        if (productAssetCategory.Price.HasValue)
        {
            await CheckCurrencyAsync(productAssetCategory.Currency, effectiveCurrency);

            return(new Money(productAssetCategory.Price.Value, effectiveCurrency));
        }

        return(null);
    }
示例#24
0
        public void FromCreateDto_ReturnModelToGetDtoCanConvert()
        {
            var customerGuid   = Guid.NewGuid();
            var orderGoodGuid  = Guid.NewGuid();
            var createOrderDto = new CreateOrderDto
            {
                CustomerId     = customerGuid,
                CreationDate   = new DateTime(2020, 12, 20),
                PaymentStatus  = PaymentStatus.Paid,
                DeliveryStatus = DeliveryStatus.DeliveryWaiting,
                Goods          = new List <OrderGoodDto>
                {
                    new OrderGoodDto {
                        Id = orderGoodGuid, Quantity = 12
                    }
                }
            };

            var orderConverter = new OrderConverter();
            var order          = orderConverter.FromCreateDto(createOrderDto);
            var getOrderDto    = orderConverter.ToGetDto(order);

            Assert.AreEqual(getOrderDto.Customer.Id, createOrderDto.CustomerId);
            Assert.AreEqual(getOrderDto.CreationDate, createOrderDto.CreationDate);
            Assert.AreEqual(getOrderDto.PaymentStatus, createOrderDto.PaymentStatus);
            Assert.AreEqual(getOrderDto.DeliveryStatus, createOrderDto.DeliveryStatus);
        }
示例#25
0
        public async Task <IActionResult> CreateOrder(CreateOrderDto dto)
        {
            User user = (User)await this._manager.FindByNameAsync(HttpContext.User.Identity.Name);

            Order order = new Order()
            {
                PostAddress = dto.Address,
                date        = DateTime.Now,
                Status      = Status.Opened,
                UserId      = user.Id,
                User        = user
            };

            await this._context.SaveChangesAsync();

            Bucket bucket = (from i in this._context.Buckets
                             where i.UserId.Equals(user.Id)
                             select i).ToList <Bucket>().First();

            var books = (from i in this._context.Books
                         where i.BucketId == bucket.Id
                         select i).ToList <Book>();

            books.ForEach(b =>
            {
                b.OrderId  = order.Id;
                b.Order    = order;
                b.BucketId = null;
                b.Bucket   = null;
            });

            await this._context.SaveChangesAsync();

            return(RedirectToAction("GetBucketInfo", "User"));
        }
示例#26
0
        public CreateOrderDto CreateOrder([FromBody] CreateOrderDto orderDto)
        {
            using (GameShopDBContext gameShopDBContext = new GameShopDBContext())
            {
                var GameId = gameShopDBContext.Games
                             .Where(x => x.GameName == orderDto.GameName)
                             .Select(x => x.Id).FirstOrDefault();

                var PlayerId = gameShopDBContext.Players
                               .Where(x => x.PlayerName == orderDto.PlayerName)
                               .Select(x => x.Id).FirstOrDefault();

                Order SaveOrder = new Order();
                SaveOrder.gameid        = GameId;
                SaveOrder.playerid      = PlayerId;
                SaveOrder.DiscountPrice = orderDto.DiscountPrice;

                gameShopDBContext.Orders.Add(SaveOrder);
                gameShopDBContext.SaveChanges();

                orderDto.Id = SaveOrder.Id;

                return(orderDto);
            }
        }
示例#27
0
        public async Task CheckoutOrder_ReturnNotFound_WhenCustomerIsNotFound()
        {
            // Arrange
            var mapper          = Substitute.For <IMapper>();
            var bookService     = Substitute.For <IBookService>();
            var customerService = Substitute.For <ICustomerService>();
            var orderService    = Substitute.For <IOrderService>();
            var stockService    = Substitute.For <IStockService>();
            var orderController = new OrderController(mapper, bookService, customerService, orderService, stockService);

            // Act
            var order = new CreateOrderDto()
            {
                OrderNote     = "Test Order",
                CustomerId    = -1,
                OrderProducts = new List <CreateOrderProductDto>()
                {
                    new CreateOrderProductDto()
                    {
                        BookId = 1, Quantity = 1
                    },
                    new CreateOrderProductDto()
                    {
                        BookId = 2, Quantity = 1
                    }
                }
            };

            var insertedOrder = await orderController.Checkout(order);

            // Assert
            Assert.IsType <NotFoundObjectResult>(insertedOrder);
        }
示例#28
0
 public IActionResult Post([FromBody] CreateOrderDto dto,
                           [FromServices] ICreateOrderCommand command)
 {
     dto.Id = actor.Id;
     executor.ExecuteCommand(command, dto);
     return(NoContent());
 }
示例#29
0
        protected virtual async Task <OrderLine> GenerateOrderLineAsync(CreateOrderDto input,
                                                                        CreateOrderLineDto inputOrderLine, Dictionary <Guid, ProductDto> productDict)
        {
            var product    = productDict[inputOrderLine.ProductId];
            var productSku = product.GetSkuById(inputOrderLine.ProductSkuId);

            if (!inputOrderLine.Quantity.IsBetween(productSku.OrderMinQuantity, productSku.OrderMaxQuantity))
            {
                throw new OrderLineInvalidQuantityException(product.Id, productSku.Id, inputOrderLine.Quantity);
            }

            var totalPrice = productSku.Price * inputOrderLine.Quantity;

            return(new OrderLine(
                       id: _guidGenerator.Create(),
                       productId: product.Id,
                       productSkuId: productSku.Id,
                       productModificationTime: product.LastModificationTime ?? product.CreationTime,
                       productDetailModificationTime: productSku.LastModificationTime ?? productSku.CreationTime,
                       productGroupName: product.ProductGroupName,
                       productGroupDisplayName: product.ProductGroupDisplayName,
                       productUniqueName: product.UniqueName,
                       productDisplayName: product.DisplayName,
                       skuName: productSku.Name,
                       skuDescription: await _productSkuDescriptionProvider.GenerateAsync(product, productSku),
                       mediaResources: product.MediaResources,
                       currency: productSku.Currency,
                       unitPrice: productSku.Price,
                       totalPrice: totalPrice,
                       totalDiscount: 0,
                       actualTotalPrice: totalPrice,
                       quantity: inputOrderLine.Quantity
                       ));
        }
示例#30
0
        public async void Add_Order_ShouldReturnOk()
        {
            //Arrange
            var fakeOrderService = A.Fake <IOrderService>();

            CreateOrderResponseDto expectedDto = new CreateOrderResponseDto();

            expectedDto.RawOrderResponse = "steak, potato(x2), cake";

            A.CallTo(() => fakeOrderService.Add(A <string> .Ignored))
            .Returns(Task.FromResult(expectedDto.RawOrderResponse));

            var orderController = new OrderController(fakeOrderService);

            CreateOrderDto createOrderDto = new CreateOrderDto();

            createOrderDto.RawOrder = "night, 1, 2, 2, 4";

            //Act
            var result = await orderController.Add(createOrderDto);

            var okObjectResult         = result.Result as OkObjectResult;
            var createOrderResponseDto = okObjectResult.Value as CreateOrderResponseDto;

            //Assert
            Assert.IsType <OkObjectResult>(okObjectResult);
            Assert.Equal(createOrderResponseDto.RawOrderResponse, expectedDto.RawOrderResponse);
        }