public async Task <Order> AddOrderAsync(Order order, string dishname, CancellationToken cancellationToken) { if (order == null) { return(null); } var contract = new OrderContract(order.RestaurantId, order.TableId, order.DishId, dishname, order.Price, DateTime.Now); await StateManager.SetStateAsync(OrderDataKey, contract, cancellationToken); await this.SetOrderStateAsync(OrderState.Ordered); order.OrderId = Id.GetGuidId(); var tableActor = new TableActorProxy().CreateActor(order.TableId); await tableActor.AddOrder(new TableOrder() { Dish = dishname, OrderId = order.OrderId, Price = order.Price }, CancellationToken.None); //Register reminder await RegisterReminderAsync( OrderStateReminder, null, TimeSpan.FromSeconds(1), TimeSpan.FromSeconds(30)); ActorEventSource.Current.ActorMessage(this, "New Order ID: {0}. Dish: {1}", Id.GetGuidId(), order.DishId); return(order); }
public async Task <Order> Create([FromBody] Order order) { if (order == null) { return(null); } try { var tableActor = new TableActorProxy().CreateActor(order.TableId); order.OrderId = Guid.NewGuid(); var dish = await new MenuServiceProxyFactory().CreateServiceProxy(order.RestaurantId).GetDishAsync(order.RestaurantId, order.DishId); order.Price = dish.Price; var orderActor = new OrderActorProxy().CreateActor(order.OrderId); await orderActor.AddOrderAsync(order, CancellationToken.None); await tableActor.AddOrder(new TableOrder() { Dish = dish.Name, OrderId = order.OrderId, Price = dish.Price }, CancellationToken.None); return(await orderActor.GetOrderAsync(CancellationToken.None)); } catch (Exception ex) { Debug.WriteLine(ex.Message); throw; } }