コード例 #1
0
        public void ProcessMessage(IProcessHandlerContext <AcceptOrderProcessCommand> context)
        {
            if (context.Stream.IsEmpty)
            {
                return;
            }

            context.Stream.AddEvent(ChangeStatus("Order Accepted"));

            var command = new CreateOrderCommand
            {
                OrderNumber   = _initialized.OrderNumber,
                OrderDate     = _initialized.DateRegistered,
                CustomerName  = _customerAssigned.CustomerName,
                CustomerEMail = _customerAssigned.CustomerEMail
            };

            foreach (var itemAdded in _items)
            {
                command.Items.Add(new MessageOrderItem
                {
                    Description = itemAdded.Description,
                    Price       = itemAdded.Price
                });
            }

            context.Send(command);

            context.Publish(new OrderProcessAcceptedEvent
            {
                OrderProcessId = CorrelationId
            });
        }
コード例 #2
0
        public void ProcessMessage(IProcessHandlerContext <RegisterOrderProcessCommand> context)
        {
            var message = context.Message;

            context.Stream.AddEvent(Initialize());
            context.Stream.AddEvent(AssignCustomer(message.CustomerName, message.CustomerEMail));
            context.Stream.AddEvent(AssignTargetSystem(message.TargetSystem, message.TargetSystemUri));
            context.Stream.AddEvent(ChangeStatus("Cooling Off"));

            foreach (var quotedProduct in message.QuotedProducts)
            {
                context.Stream.AddEvent(
                    AddItem(quotedProduct.ProductId, quotedProduct.Description, quotedProduct.Price));
            }

            context.Publish(new OrderProcessRegisteredEvent
            {
                OrderProcessId  = CorrelationId,
                QuotedProducts  = message.QuotedProducts,
                CustomerName    = message.CustomerName,
                CustomerEMail   = message.CustomerEMail,
                OrderNumber     = _initialized.OrderNumber,
                OrderDate       = _initialized.DateRegistered,
                OrderTotal      = Total,
                Status          = _statusChanged.Status,
                StatusDate      = _statusChanged.StatusDate,
                TargetSystem    = message.TargetSystem,
                TargetSystemUri = message.TargetSystemUri
            });

            context.Send(new AcceptOrderProcessCommand
            {
                OrderProcessId = CorrelationId
            }, c => c.Defer(DateTime.Now.AddSeconds(10)).Local().WithCorrelationId(CorrelationId.ToString("N")));
        }
コード例 #3
0
        public void ProcessMessage(IProcessHandlerContext <CompleteOrderProcessCommand> context)
        {
            context.Stream.AddEvent(ChangeStatus("Completed"));

            context.Publish(new OrderProcessCompletedEvent
            {
                OrderProcessId = CorrelationId
            });
        }
コード例 #4
0
        public void ProcessMessage(IProcessHandlerContext <ArchiveOrderProcessCommand> context)
        {
            if (!CanArchive)
            {
                context.Publish(new ArchiveOrderProcessRejectedEvent
                {
                    OrderProcessId = context.Message.OrderProcessId,
                    Status         = Status
                });

                return;
            }

            context.Stream.AddEvent(ChangeStatus("Order Archived"));

            context.Publish(new OrderProcessArchivedEvent
            {
                OrderProcessId = context.Message.OrderProcessId
            });
        }
コード例 #5
0
        public void ProcessMessage(IProcessHandlerContext <CancelOrderProcessCommand> context)
        {
            if (!CanCancel)
            {
                context.Publish(new CancelOrderProcessRejectedEvent
                {
                    OrderProcessId = context.Message.OrderProcessId,
                    Status         = Status
                });

                return;
            }

            context.Stream.Remove();

            context.Publish(new OrderProcessCancelledEvent
            {
                OrderProcessId = context.Message.OrderProcessId
            });
        }