onCommandProcessed method

  1. @override
Future<void> onCommandProcessed(
  1. Command command,
  2. List<Event> events
)

Send response after successful command processing

Implementation

@override
Future<void> onCommandProcessed(Command command, List<Event> events) async {
  await super.onCommandProcessed(command, events);

  if (!_isInActorSystem()) return;

  final sender = _capturedSenders[command.commandId];
  if (sender == null) return;

  for (final event in events) {
    if (event is InvoicePaidEvent) {
      sender.tell(InvoiceStatusMessage(
        invoiceId: event.invoiceId,
        status: InvoiceStatus.paid,
        paidAt: event.paidAt,
        txid: event.txid,
        statusMessage: 'Invoice marked as paid',
      ));
    } else if (event is InvoiceCancelledEvent) {
      sender.tell(InvoiceStatusMessage(
        invoiceId: event.invoiceId,
        status: InvoiceStatus.cancelled,
        statusMessage: 'Invoice cancelled',
      ));
    } else if (event is InvoiceExpiredEvent) {
      sender.tell(InvoiceStatusMessage(
        invoiceId: event.invoiceId,
        status: InvoiceStatus.expired,
        statusMessage: 'Invoice expired',
      ));
    }
  }
}