public void Handle(ExpireOrder command) { var repo = this.repositoryFactory.Invoke(); using (repo as IDisposable) { lock (lockObject) { var saga = repo.Find <RegistrationProcessSaga>(command.Id); saga.Handle(command); repo.Save(saga); } } }
public void Handle(ExpireOrder message) { if (this.State == SagaState.AwaitingPayment) { this.State = SagaState.Completed; this.AddCommand(new CancelSeatReservation { ReservationId = this.ReservationId, ConferenceId = message.ConferenceId }); this.AddCommand(new RejectOrder { OrderId = message.OrderId }); } // else ignore the message as it is no longer relevant (but not invalid) }
public void Handle(ExpireOrder command) { var repo = this.repositoryFactory.Invoke(); using (repo as IDisposable) { lock (lockObject) { var saga = repo.Query <RegistrationProcessSaga>().FirstOrDefault(x => x.OrderId == command.OrderId); if (saga != null) { saga.Handle(command); repo.Save(saga); } } } }