Example #1
0
 public IntegrationEventService(ICapPublisher eventBus, WolfDbContext dbContext,
                                ILogger <IntegrationEventService> logger)
 {
     _eventBus  = eventBus ?? throw new ArgumentNullException(nameof(eventBus));
     _dbContext = dbContext ?? throw new ArgumentNullException(nameof(dbContext));
     _logger    = logger ?? throw new ArgumentNullException(nameof(logger));
 }
        /// <summary>
        ///
        /// </summary>
        /// <param name="context"></param>
        /// <param name="env"></param>
        /// <param name="logService"></param>
        /// <returns></returns>
        public static async Task SeedAsync(WolfDbContext context, IHostingEnvironment env, ILogService logService)
        {
            try
            {
                await using (context)
                {
                    await context.CreateTable <IdentityType>();

                    await context.CreateTable <UserSafetyType>();

                    await context.CreateTable <VerifyState>();

                    await context.CreateTable <Gender>();

                    await context.CreateTable <UserState>();
                }
            }
            catch (Exception ex)
            {
            }
        }
 public TransactionBehaviour(IUnitOfWork unitOfWork, ILogger <TransactionBehaviour <TRequest, TResponse> > logger)
 {
     _dbContext = unitOfWork as WolfDbContext ?? throw new ArgumentException(nameof(WolfDbContext));
     _logger    = logger ?? throw new ArgumentException(nameof(ILogger));
 }
Example #4
0
        public static async Task DispatchDomainEventsAsync <T>(this IMediator mediator, WolfDbContext ctx)
        {
            var domainEntities = ctx.ChangeTracker
                                 .Entries <AggregateRootWork <T> >()
                                 .Where(x => x.Entity.DomainEvents != null && x.Entity.DomainEvents.Any());

            var domainEvents = domainEntities
                               .SelectMany(x => x.Entity.DomainEvents)
                               .ToList();

            domainEntities.ToList()
            .ForEach(entity => { entity.Entity.ClearDomainEvents(); });

            var tasks = domainEvents
                        .Select(async domainEvent =>
            {
                await mediator.Publish(domainEvent);
            });

            await Task.WhenAll(tasks);
        }