public async Task <bool> Commit() { foreach (var entry in ChangeTracker.Entries() .Where(entry => entry.Entity.GetType().GetProperty("DataCadastro") != null)) { if (entry.State == EntityState.Added) { entry.Property("DataCadastro").CurrentValue = DateTime.Now; } if (entry.State == EntityState.Modified) { entry.Property("DataCadastro").IsModified = false; } } var sucesso = await base.SaveChangesAsync() > 0; if (sucesso) { await _mediatorHandler.PublicarEventos(this); } return(sucesso); }
public async Task <int> Commit(CancellationToken cancellationToken = default) { foreach (var entry in ChangeTracker.Entries().Where(entry => entry.Entity.GetType().GetProperty("DataCriacao") != null)) { if (entry.State == EntityState.Added) { entry.Property("DataCriacao").CurrentValue = DateTime.UtcNow; entry.Property("DataAlteracao").IsModified = false; } if (entry.State == EntityState.Modified) { entry.Property("DataAlteracao").CurrentValue = DateTime.UtcNow; entry.Property("DataCriacao").IsModified = false; } } int result = await base.SaveChangesAsync(); if (result > 0) { await _mediatorHandler.PublicarEventos(this); } return(result); }
public async Task <bool> Commit() { var sucesso = await base.SaveChangesAsync() > 0; if (sucesso) { await _mediatorHandler.PublicarEventos(this); } return(sucesso); }
public virtual async Task <bool> Commit() { var executado = await base.SaveChangesAsync() > 0; if (executado) { await _mediator.PublicarEventos(this); } return(executado); }
public async Task <bool> Commit() { var sucesso = await SaveChangesAsync() > 0; if (!sucesso) { return(false); } await _mediatorHandler.PublicarEventos(this); return(true); }
public static async Task PublicarEventos <T>(this IMediatorHandler mediator, T ctx) where T : DbContext { var domainEntities = ctx.ChangeTracker .Entries <Entity>() .Where(x => x.Entity.Notificacoes != null && x.Entity.Notificacoes.Any()); var domainEvents = domainEntities .SelectMany(x => x.Entity.Notificacoes) .ToList(); domainEntities.ToList() .ForEach(entity => entity.Entity.LimparEventos()); var tasks = domainEvents .Select(async(domainEvent) => { await mediator.PublicarEventos(domainEvent); }); await Task.WhenAll(tasks); }