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)); }