Exemplo n.º 1
0
            public async Task <CreateOrderOutputModel> Handle(CreateOrderCommand command, CancellationToken cancellationToken)
            {
                var userId = command.AssigneeId ?? CurrentUser.UserId;

                OrderFactory
                .WithAssignee(userId)
                .WithTableId(command.TableId);

                List <OrderItem> orderItems = new List <OrderItem>();

                foreach (var item in command.Items)
                {
                    Dish dish = await DishRepository.GetDishById(item.DishId, cancellationToken);

                    orderItems.Add(new OrderItem(dish, item.Note));
                }

                OrderFactory.WithItems(orderItems);

                Order newOrder = OrderFactory.Build();
                await OrderRepository.Save(newOrder, cancellationToken);

                return(new CreateOrderOutputModel(newOrder.Id));
            }