public async Task Execute(TMessage message) { try { if (await this._dataAccess.EventHasBeenReceived(this._event.Id)) { return; } using var transaction = new TransactionScope(TransactionScopeAsyncFlowOption.Enabled); var newIncomingEvent = new IncomingEvent(this._event.Id, this._event.Name, this._event.Sender); await this._dataAccess.PersistIncomingEvent(newIncomingEvent); await this._innerHandler.Execute(message); newIncomingEvent.MarkAsProcessed(); await this._dataAccess.UpdateEventStatus(newIncomingEvent); transaction.Complete(); } catch (Exception ex) { return; } }
public async Task UpdateEventStatus(IncomingEvent newIncomingEvent) { this._context.Entry(newIncomingEvent).State = EntityState.Modified; await this._context.SaveChangesAsync(); }
public async Task PersistIncomingEvent(IncomingEvent incomingEvent) { await this._context.IncomingEvents.AddAsync(incomingEvent); await this._context.SaveChangesAsync(); }