private void AddAggregates(ListResult result, NodeTree nodeTree)
        {
            foreach (Node node in nodeTree.Nodes.Where(n => n.Data != null && this.IsAggregateValue(n.Metadata)))
            {
                int bufferIndex = this.Buffer.GetAggregateIndex(node.Identity);

                AggregateWriter writer = new AggregateWriter(node)
                {
                    Attribute = new AggregateAttribute(node.Identity.Name, aggregateIndex: bufferIndex, listIndex: null),
                    Value     = this.CreateDataReader(result, node)
                };

                result.Aggregates.Add(writer);
            }

            foreach (Node node in nodeTree.Items.Where(n => this.IsAggregateList(n.Metadata)))
            {
                int bufferIndex = this.Buffer.GetListIndex(node.Metadata);

                AggregateWriter writer = new AggregateWriter(node)
                {
                    Attribute = new AggregateAttribute(node.Metadata.Parent.Identity.Name, aggregateIndex: null, listIndex: bufferIndex),
                };

                result.Aggregates.Add(writer);
            }
        }
Exemple #2
0
        protected override async Task <OrderCompletedEvent> Handle(CompleteOrderCommand command)
        {
            var order = AggregateWriter.GetById(command.OrderId);

            var orderCompletedEvent = new OrderCompletedEvent(order.Id);

            return(orderCompletedEvent);
        }
        protected override async Task <OrderPutDownEvent> Handle(PutDownOrderCommand command)
        {
            var order = AggregateWriter.GetById(command.OrderId);

            // Check order state

            var orderPutDowndEvent = new OrderPutDownEvent(command.OrderId);

            return(orderPutDowndEvent);
        }
        protected override async Task <SupplementaryEvidenceReceivedEvent> Handle(RegisterSupplementaryEvidenceCommand command)
        {
            var order = AggregateWriter.GetById(command.OrderId);

            // Check order state

            var supplementaryEvidenceReceivedEvent = new SupplementaryEvidenceReceivedEvent(command.OrderId, command.SupplementaryEvidence);

            return(supplementaryEvidenceReceivedEvent);
        }
Exemple #5
0
        protected override async Task <OrderPickedUpEvent> Handle(PickupOrderCommand command)
        {
            var order = AggregateWriter.GetById(command.OrderId);

            // Check order state

            var orderPickupdEvent = new OrderPickedUpEvent(command.OrderId, command.OwnerId);

            return(orderPickupdEvent);
        }
        protected override async Task <OrderFilledEvent> Handle(FillOrderCommand command)
        {
            var order = AggregateWriter.GetById(command.OrderId);

            // Check order state

            var orderFilldEvent = new OrderFilledEvent(command.OrderId, command.RFQId, command.Price, command.Quantity);

            return(orderFilldEvent);
        }
        protected override async Task <OrderRejectedEvent> Handle(RejectOrderCommand command)
        {
            var order = AggregateWriter.GetById(command.OrderId);

            // Check order state

            var orderRejectdEvent = new OrderRejectedEvent(command.OrderId, command.Reason);

            return(orderRejectdEvent);
        }
Exemple #8
0
        protected override async Task <RFQCancelledEvent> Handle(CancelRFQCommand command)
        {
            var rfq = AggregateWriter.GetById(command.RFQIdentitier);

            if (rfq == null)
            {
                // invlid request what to do here?
            }

            QuoteProvider.CancelRFQ(command.RFQIdentitier);

            var rFQCancelledEvent = new RFQCancelledEvent(command.RFQIdentitier);

            return(rFQCancelledEvent);
        }
Exemple #9
0
        protected override async Task <RFQRaisedEvent> Handle(RaiseRFQCommand command)
        {
            var rfq = AggregateWriter.GetById(command.RFQIdentitier);

            if (rfq != null)
            {
                // already processing, what to do here?
            }

            var rFQRaisedEvent = new RFQRaisedEvent(command.Instrument, command.RFQIdentitier, command.CounterParties, command.Requested);

            // Save the creation
            await base.SaveEvent(rFQRaisedEvent);

            //  and then SubmitRequest
            QuoteProvider.SubmitRFQ(command.RFQIdentitier, command.OrderId, command.CounterParties, command.Instrument, 110.25M);

            return(rFQRaisedEvent);
        }