Ejemplo n.º 1
0
        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;
            }
        }
Ejemplo n.º 2
0
 public async Task UpdateEventStatus(IncomingEvent newIncomingEvent)
 {
     this._context.Entry(newIncomingEvent).State = EntityState.Modified;
     await this._context.SaveChangesAsync();
 }
Ejemplo n.º 3
0
        public async Task PersistIncomingEvent(IncomingEvent incomingEvent)
        {
            await this._context.IncomingEvents.AddAsync(incomingEvent);

            await this._context.SaveChangesAsync();
        }