public async Task HandleAsync(SellOrderFinishedEvent message) { var orderProcessManager = await _processManagerRepository.FindAsync(message.AggregateId); orderProcessManager.When(message); await _processManagerRepository.Save(orderProcessManager); }
public void When(SellOrderFinishedEvent message) { switch (State) { case SellOrderProcessManagerState.WalletToppedUp: State = SellOrderProcessManagerState.OrderFinished; break; // idempotence - same message sent twice case SellOrderProcessManagerState.OrderFinished: break; default: throw new StocqresException("Invalid state for this message"); } }
private void Apply(SellOrderFinishedEvent @event) { State = OrderState.Finished; }
public async Task HandleAsync(SellOrderFinishedEvent @event) { await _projectionWriter.UpdateAsync <SellOrderProjection>(@event.AggregateId, e => { e.State = OrderState.Finished; }); }