def receive = { case CreateInvoice(invoiceId) => process(createInvoice(invoiceId)) { invoice => emitter("listeners") sendEvent InvoiceCreated(invoiceId) } case AddInvoiceItem(invoiceId, expectedVersion, invoiceItem) => process(addInvoiceItem(invoiceId, expectedVersion, invoiceItem)) { invoice => emitter("listeners") sendEvent InvoiceItemAdded(invoiceId, invoiceItem) } case SetInvoiceDiscount(invoiceId, expectedVersion, discount) => process(setInvoiceDiscount(invoiceId, expectedVersion, discount)) { invoice => emitter("listeners") sendEvent InvoiceDiscountSet(invoiceId, discount) } case SendInvoiceTo(invoiceId, expectedVersion, to) => process(sendInvoiceTo(invoiceId, expectedVersion, to)) { invoice => emitter("listeners") sendEvent InvoiceSent(invoiceId, invoice, to) } case InvoicePaymentReceived(invoiceId, amount) => process(payInvoice(invoiceId, None, amount)) { invoice => emitter("listeners") sendEvent InvoicePaid(invoiceId) } }
|