Esempio n. 1
0
        // Generic query message handlers
        public async Task <QueryCountResult> Handle(GetCountQuery <T> request, CancellationToken cancellationToken)
        {
            // Drop an AuditLogEvent onto the mediator, to dispatch a request to update the system audit log. Again, we're not going to wait for the outcome of this event. Just fire and forget.
            string        dataAccessTypeString = string.Format("Get{0}Count", typeof(T).Name);
            var           dataAccessType       = (DataAccessType)Enum.Parse(typeof(DataAccessType), dataAccessTypeString);
            AuditLogEvent auditLogNotification = new AuditLogEvent(_currentUser.UserName, Guid.Empty, dataAccessType);
            await _mediator.Publish(auditLogNotification);

            // Call the GetCount method to retrieve the client count.
            var result = await GetCount();

            if (result.ResultType == ResultType.OkForQuery)
            {
                // Return the result list identifier
                return(new QueryCountResult(result.Count));
            }
            else
            {
                if (result.ResultType == ResultType.AccessDenied)
                {
                    // Drop an AuditLogEvent onto the mediator to indicate that this action was denied
                    AuditLogEvent accessDeniedAuditEntry = new AuditLogEvent(_currentUser.UserName, Guid.Empty, dataAccessType, true);
                    await _mediator.Publish(accessDeniedAuditEntry);
                }

                // Query returned a non-success result, so return the result, and the errors
                return(new QueryCountResult(result.ResultType));
            }
        }
Esempio n. 2
0
        public virtual async Task <int> Handle(GetCountQuery <TDto> request, CancellationToken cancellationToken)
        {
            var query = ctx.Set <TDal>().AsNoTracking();

            query = query.ApplyFilterData(request.Filters, CreateWherePredicate);
            int count = await query.CountAsync(cancellationToken);

            return(count);
        }
Esempio n. 3
0
        /// <summary>
        /// пример - получение кол-ва блогов учитывая фильтр
        /// </summary>
        public int GetBlogCount(BlogFilter filter)
        {
            var query = new GetCountQuery <Blog>(_db)
            {
                Spec = filter
            };

            return(query.GetResult());
        }
Esempio n. 4
0
            public async Task <bool> Validate(int value, CancellationToken cancellationToken)
            {
                var query = new GetCountQuery <TDto>()
                {
                    Filters = new List <Filter>
                    {
                        new Filter(nameof(IHasIntegerId.Id), "=", value.ToString())
                    }
                };
                int count = await mediator.Send(query, cancellationToken);

                return(count > 0);
            }
Esempio n. 5
0
        public async Task Validate(string value, CustomContext context, CancellationToken cancellationToken)
        {
            string columnName = GetColumnName(context);

            var query = new GetCountQuery <TDto>()
            {
                Filters = new List <Filter>()
            };

            query.Filters.Add(new Filter(columnName, "=", value.Trim()));

            int count = await mediator.Send(query, cancellationToken);

            if (count > 0)
            {
                context.AddFailure($"{columnName} must be unique. Value {value} has been already used!");
            }
        }
Esempio n. 6
0
        public async Task Validate(TDto value, CustomContext context, CancellationToken cancellationToken)
        {
            var query = new GetCountQuery <TDto>()
            {
                Filters = new List <Filter>()
            };

            List <string> columnNames = new List <string>();

            foreach (var selector in selectors)
            {
                string columnName = GetColumnName(selector);
                columnNames.Add(columnName);
                query.Filters.Add(new Filter(columnName, "=", selector.Compile().Invoke(value)));
            }

            int count = await mediator.Send(query, cancellationToken);

            if (count > 0)
            {
                context.AddFailure($"n-tuple ({string.Join(", ", columnNames)}) must be unique.");
            }
        }
        public virtual async Task <Items <T> > GetAll([FromQuery] LoadParams loadParams, [FromServices] IMediator mediator, [FromServices] IMapper mapper)
        {
            var filters      = FilterStringParser.Parse(loadParams.Filter);
            var result       = new Items <T>();
            var countRequest = new GetCountQuery <T>
            {
                Filters = filters
            };

            result.Count = await mediator.Send(countRequest);

            if (result.Count > 0)
            {
                var dataRequest = new GetItemsQuery <T>
                {
                    Paging  = mapper.Map <LoadParams, PagingData>(loadParams),
                    Sort    = CreateSort(loadParams),
                    Filters = filters
                };
                result.Data = await mediator.Send(dataRequest);
            }
            return(result);
        }