public UserActivityLogServiceUnitTests()
        {
            this._userActivityRepository = new  Mock <IRepository <UserActivityLogItem> >();
            this._errorLoggerRepository  = new Mock <IRepository <ErrorLogItem> >();

            this._errorLoggerService = new Mock <IErrorLogger <ErrorLogItem> >();

            _userActivityLogService = new UserActivityLogService(
                this._userActivityRepository.Object, this._errorLoggerService.Object);
        }
Пример #2
0
        protected override async Task ExecuteAsync(CancellationToken cancellationToken)
        {
            using (var scope = scopeFactory.CreateScope())
            {
                try
                {
                    var    dbContext  = scope.ServiceProvider.GetRequiredService <ApplicationDbContext>();
                    string connString = dbContext.Database.GetDbConnection().ConnectionString;
                    var    userRepo   = new UserActivityRepository(connString);
                    var    errorRepo  = new ErrorRepository(connString);

                    var errorLogger        = new ErrorLoggerService(errorRepo);
                    var userActivityLogger = new UserActivityLogService(
                        userRepo,
                        errorLogger);


                    while (!cancellationToken.IsCancellationRequested)
                    {
                        if (await this._errorLogItems.QueueIsEmpty(cancellationToken) &&
                            await this._userActivityLogItems.QueueIsEmpty(cancellationToken))
                        {
                            await Task.Delay(TimeSpan.FromSeconds(10), cancellationToken);
                        }
                        else
                        {
                            if (await this._userActivityLogItems.QueueIsEmpty(cancellationToken) == false)
                            {
                                var item = await this._userActivityLogItems.DequeueAsync(cancellationToken);

                                await userActivityLogger.LogThisActivity((UserActivityLogItem)item);
                            }
                            if (await this._errorLogItems.QueueIsEmpty(cancellationToken) == false)
                            {
                                var item = await this._errorLogItems.DequeueAsync(cancellationToken);

                                errorLogger.LogError((ErrorLogItem)item);
                            }
                        }
                    }
                }
                catch (Exception e)
                {
                    StopAsync(cancellationToken);
                }
            }
        }