private void Set(IAbstractEntityHandler <TRequestDto, TEntity, TOut> handler)
        {
            if (!(handler is IRedisCacheQueryHandler) || handler.Context.HasErrors())
            {
                return;
            }

            using (var client = new RedisManagerPool("localhost:6379").GetClient())
                client.Set(((IRedisCacheQueryHandler)handler).RedisKey(), handler.Context.Result);
        }
示例#2
0
        private void Delete(IAbstractEntityHandler <TRequestDto, TEntity, TOut> handler)
        {
            if (!(handler is IRedisCacheCommandHandler) || handler.Context.HasErrors())
            {
                return;
            }

            using (var client = new RedisManagerPool("localhost:6379").GetClient())
                ((IRedisCacheCommandHandler)handler).RedisKeys().ForEach(key =>
                {
                    var value = client.ContainsKey(key);
                    client.Remove(key);
                    _redisContext.Keys.Remove(key);
                });
        }
        private void CreateTask(IAbstractEntityHandler <TRequestDto, TEntity, TOut> handler, string taskName)
        {
            if (!_scope.TryResolve(typeof(IAuditDefinition <>).MakeGenericType(new Type[] { typeof(TEntity) }),
                                   out var definition))
            {
                return;
            }

            var result = new object();

            if (handler.Entity != null)
            {
                result = definition.GetType()
                         .GetMethod("GetAudit")
                         .Invoke(definition, new object[] { handler.Entity });
            }

            _auditFactory.Set($"{typeof(TEntity).Name}_{taskName}", result).Wait();
            //_tasks.Add(_auditFactory.Set($"{typeof(TEntity).Name}_{taskName}", result));
        }
        private void Get(IAbstractEntityHandler <TRequestDto, TEntity, TOut> handler)
        {
            if (!(handler is IRedisCacheQueryHandler) || handler.Context.HasErrors())
            {
                return;
            }

            using (var client = new RedisManagerPool("localhost:6379").GetClient())
            {
                //IRedisCacheHandler
                var key = ((IRedisCacheQueryHandler)handler).RedisKey();
                handler.Context.Result = client.Get <TOut>(key);
                if (handler.Context.Result == null)
                {
                    return;
                }
                if (!_redisContext.Keys.Contains(key))
                {
                    _redisContext.Keys.Add(key);
                }
            }
        }
        private void CompleteAudit(IAbstractEntityHandler <TRequestDto, TEntity, TOut> handler)
        {
            //_tasks.ForEach(a => a.Wait());

            var entityAudit = _auditFactory.GetDifference(
                $"{handler.Entity.GetType().Name}_GetEntity",
                $"{handler.Entity.GetType().Name}_Execute");

            entityAudit.Wait();

            if (entityAudit.Result.Any())
            {
                handler.Context.RaiseEvent(new CreateEntityAuditEventMessage
                {
                    PropertyInformation = entityAudit.Result,
                    Entity            = handler.Entity.GetType().Name,
                    EntityId          = ((IEntity)handler.Entity).Id,
                    CreatedBy         = _applicationUserContext.Email,
                    ApplicationUserId = _applicationUserContext.Id,
                    CreatedDate       = DateTime.UtcNow.ToString(_configuration["DateTimeFormat"]),
                }, Constants.EventQueues.InternalEventsQueue
                                           );
            }
        }
 private void AuditExecute(IAbstractEntityHandler <TRequestDto, TEntity, TOut> handler)
 {
     CreateTask(handler, "Execute");
 }
 private void AuditGetEntity(IAbstractEntityHandler <TRequestDto, TEntity, TOut> handler)
 {
     CreateTask(handler, "GetEntity");
 }