public void ProcessMessage(IHandlerContext <EMailSentEvent> context) { if (!context.TransportMessage.IsHandledHere()) { return; } OrderProcess orderProcess; using (_databaseContextFactory.Create(ProcessManagementData.ConnectionStringName)) { orderProcess = _repository.Get(new Guid(context.TransportMessage.CorrelationId)); if (orderProcess == null) { throw new ApplicationException( string.Format("Could not find an order process with correlation id '{0}'.", context.TransportMessage.CorrelationId)); } var orderProcessStatus = new OrderProcessStatus("EMail Sent"); orderProcess.AddStatus(orderProcessStatus); _repository.AddStatus(orderProcessStatus, orderProcess.Id); } context.Send(new CompleteOrderProcessCommand { OrderProcessId = orderProcess.Id }, c => c.Local()); }
public void ProcessMessage(IHandlerContext <AcceptOrderProcessCommand> context) { OrderProcess orderProcess; using (_databaseContextFactory.Create(ProcessManagementData.ConnectionStringName)) { orderProcess = _repository.Get(context.Message.OrderProcessId); if (orderProcess == null) { // Probably cancelled in the meantime. // In a production system you would probably check this against some audit mechanism. return; } var orderProcessStatus = new OrderProcessStatus("Order Accepted"); orderProcess.AddStatus(orderProcessStatus); _repository.AddStatus(orderProcessStatus, orderProcess.Id); } var createOrderCommand = new CreateOrderCommand { OrderNumber = orderProcess.OrderNumber, OrderDate = orderProcess.DateRegistered, CustomerName = orderProcess.CustomerName, CustomerEMail = orderProcess.CustomerEMail }; foreach (var orderProcessItem in orderProcess.OrderProcessItems) { createOrderCommand.Items.Add(new MessageOrderItem { Description = orderProcessItem.Description, Price = orderProcessItem.Price }); } context.Send(createOrderCommand, c => c.WithCorrelationId(orderProcess.Id.ToString())); context.Publish(new OrderProcessAcceptedEvent { OrderProcessId = orderProcess.Id }); }
public void ProcessMessage(IHandlerContext <OrderCreatedEvent> context) { if (!context.TransportMessage.IsHandledHere()) { return; } OrderProcess orderProcess; using (_databaseContextFactory.Create(ProcessManagementData.ConnectionStringName)) { orderProcess = _repository.Get(new Guid(context.TransportMessage.CorrelationId)); if (orderProcess == null) { throw new ApplicationException( string.Format("Could not find an order process with correlation id '{0}'.", context.TransportMessage.CorrelationId)); } var orderProcessStatus = new OrderProcessStatus("Order Created"); orderProcess.AddStatus(orderProcessStatus); _repository.SaveOrderId(context.Message.OrderId, orderProcess.Id); _repository.AddStatus(orderProcessStatus, orderProcess.Id); } var createInvoiceCommand = new CreateInvoiceCommand { OrderId = context.Message.OrderId, AccountContactName = orderProcess.CustomerName, AccountContactEMail = orderProcess.CustomerEMail }; foreach (var messageOrderItem in context.Message.Items) { createInvoiceCommand.Items.Add(new MessageInvoiceItem { Description = messageOrderItem.Description, Price = messageOrderItem.Price }); } context.Send(createInvoiceCommand, c => c.WithCorrelationId(orderProcess.Id.ToString())); }
public void ProcessMessage(IHandlerContext <CompleteOrderProcessCommand> context) { OrderProcess orderProcess; using (_databaseContextFactory.Create(ProcessManagementData.ConnectionStringName)) { orderProcess = _repository.Get(context.Message.OrderProcessId); var orderProcessStatus = new OrderProcessStatus("Completed"); orderProcess.AddStatus(orderProcessStatus); _repository.AddStatus(orderProcessStatus, orderProcess.Id); } context.Publish(new OrderProcessCompletedEvent { OrderProcessId = orderProcess.Id }); }
public void ProcessMessage(IHandlerContext <InvoiceCreatedEvent> context) { if (!context.TransportMessage.IsHandledHere()) { return; } OrderProcess orderProcess; using (_databaseContextFactory.Create(ProcessManagementData.ConnectionStringName)) { orderProcess = _repository.Get(new Guid(context.TransportMessage.CorrelationId)); if (orderProcess == null) { throw new ApplicationException( string.Format("Could not find an order process with correlation id '{0}'.", context.TransportMessage.CorrelationId)); } var orderProcessStatus = new OrderProcessStatus("Invoice Created"); orderProcess.AddStatus(orderProcessStatus); _repository.SaveInvoiceId(context.Message.InvoiceId, orderProcess.Id); _repository.AddStatus(orderProcessStatus, orderProcess.Id); } context.Send(new SendEMailCommand { RecipientEMail = orderProcess.CustomerEMail, HtmlBody = string.Format( "Hello {0},<br/><br/>Your order number {1} has been dispatched.<br/><br/>Regards,<br/>The Shuttle Books Team", orderProcess.CustomerName, orderProcess.OrderNumber) }); }