// private readonly ObserverSubscriptionManager<ISalesOrdersObserver> _subscribers = new ObserverSubscriptionManager<ISalesOrdersObserver>(); public Task Create(CreateSalesOrderMessage message) { if (AlreadyExists()) { throw new Exception("Already exists"); } _salesOrder = new SalesOrder(message.SalesOrderKey, message.CustomerKey, message.WarehouseKey); // _subscribers.Notify(x => x.Notify(message.SalesOrderKey)); return(TaskDone.Done); }
public async Task Execute(CreateSalesOrderCommand command) { var message = new CreateSalesOrderMessage(command.SalesOrderKey, command.CustomerKey, command.WarehouseKey); var salesOrderGrain = GrainFactory.GetGrain <ISalesOrderGrain>(command.SalesOrderKey); // var referenceList = await SalesOrdersObserverFactory.CreateObjectReference(new SalesOrderListObserver()); // var referenceDashboard = await SalesOrdersObserverFactory.CreateObjectReference(new OrdersDashboardObserver()); // await salesOrderGrain.Subscribe(referenceList); // await salesOrderGrain.Subscribe(referenceDashboard); await salesOrderGrain.Create(message); var customerGrain = GrainFactory.GetGrain <ICustomerGrain>(command.CustomerKey); var tax = await customerGrain.GetSaleTax(); await salesOrderGrain.AssignTax(tax); // await salesOrderGrain.Unsubscribe(referenceDashboard); // await salesOrderGrain.Unsubscribe(referenceList); _subscribers.Notify(x => x.Notify(message.SalesOrderKey)); }