//        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);
        }
Esempio n. 2
0
        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));
        }