public void SubmitChanges(Receipt document,BasicConfig config) { int sequence = 0; var envelope = new CommandEnvelope(); envelope.Initialize(document); List<DocumentCommand> commandsToExecute = document.GetDocumentCommandsToExecute(); CreateCommand createCommand; //= commandsToExecute.OfType<CreateCommand>().First(); if (TryGetCreateCommand(commandsToExecute, out createCommand)) { envelope.CommandsList.Add(new CommandEnvelopeItem(++sequence, createCommand)); // _commandRouter.RouteDocumentCommand(createCommand); _auditLogWFManager.AuditLogEntry("Receipt", string.Format("Created Receipt: {0}; for invoice: {1}", document.Id, document.InvoiceId)); } List<AfterCreateCommand> lineItemCommands; if (TryGetAfterCreateCommands(commandsToExecute, out lineItemCommands)) { foreach (var item in lineItemCommands) { envelope.CommandsList.Add(new CommandEnvelopeItem(++sequence, item)); // _commandRouter.RouteDocumentCommand(item); var _item = item as AddReceiptLineItemCommand; _auditLogWFManager.AuditLogEntry("Receipt", string.Format( "Added Product type: {0}; Quantity: {1}; for Invoice: {2};", _item.LineItemType, _item.Value, document.InvoiceId)); } } ConfirmCommand confirmCommand; if (TryGetConfirmCommand(commandsToExecute, out confirmCommand)) { envelope.CommandsList.Add(new CommandEnvelopeItem(++sequence, confirmCommand)); // _commandRouter.RouteDocumentCommand(confirmCommand); _auditLogWFManager.AuditLogEntry("Receipt", string.Format("Confirmed Receipt: {0}; for Invoice: {1}", document.Id, document.InvoiceId)); // _notifyService.SubmitRecieptNotification(document); } _commandEnvelopeRouter.RouteCommandEnvelope(envelope); document.CallClearCommands(); }