Beispiel #1
0
        public PagedResponse <TEntity> ExecuteCustomListQuery <TEntity, TRequest, TSortColumn>(TRequest request,
                                                                                               Dictionary <TSortColumn, Expression <Func <TEntity, object> > > sortDictionary,
                                                                                               Expression <Func <TEntity, bool> > func = null,
                                                                                               IQueryInclude <TEntity> include         = null)
            where TEntity : AuditableEntity
            where TRequest : SortablePageableRequest <TSortColumn>, IRequest
            where TSortColumn : struct
        {
            Logger.LogTrace($"Entering execute of custom list query: {typeof(TEntity).Name}. By user {Username}");
            var response = new PagedResponse <TEntity>();

            if (request.IsRequestInvalid(response, ContextInfo))
            {
                return(response);
            }
            var query = new GetMultipleWithFuncQuery <TRequest, TEntity, TSortColumn>(func)
            {
                ContextRequest = WrapRequest(request),
                SortDictionary = sortDictionary,
                QueryInclude   = include
            };
            var result = Repository.ExecuteQuery(query);

            response.Merge(result);

            return(response);
        }
Beispiel #2
0
        public static PagedResponse <K> OnOk <TEntity, K>(this PagedResponse <TEntity> response, Func <PagedResponse <K> > func)
        {
            if (response.NotOk)
            {
                var other = new PagedResponse <K>();
                other.Merge(response);
                return(other);
            }

            return(func());
        }
Beispiel #3
0
        public static PagedResponse <K> Map <TEntity, K>(this PagedResponse <TEntity> response, Func <IEnumerable <TEntity>, IEnumerable <K> > func)
        {
            var dtoResponse = new PagedResponse <K>();

            dtoResponse.Merge(response);
            if (dtoResponse.NotOk)
            {
                return(dtoResponse);
            }

            dtoResponse.Payload = func(response.Payload);

            return(dtoResponse);
        }
Beispiel #4
0
        public static PagedResponse <BasicInfo <long> > ToPagedBasicInfoResponse <T>(this PagedResponse <T> response, string propertyName)
            where T : IEntity
        {
            var dtoResponse = new PagedResponse <BasicInfo <long> >();

            dtoResponse.Merge(response);
            if (dtoResponse.NotOk || response.Payload == null)
            {
                return(dtoResponse);
            }

            dtoResponse.Meta.Merge(response.Meta);
            dtoResponse.Payload = response.Payload.Select(x => new BasicInfo <long>
            {
                Id   = x.Id,
                Name = typeof(T).GetProperty(propertyName).GetValue(x).ToString()
            }).OrderBy(x => x.Id);

            return(dtoResponse);
        }
Beispiel #5
0
        public PagedResponse <TResult> ExecuteCustomListQuery <TQuery, TRequest, TResult>(TRequest request)
            where TRequest : IRequest
            where TQuery : BaseListQuery <TRequest, TResult>, new()
        {
            Logger.LogTrace($"Entering execute of custom list query: {typeof(TQuery).Name}. By user {Username}");
            var response = new PagedResponse <TResult>();

            if (request.IsRequestInvalid(response, ContextInfo))
            {
                return(response);
            }
            var query = new TQuery {
                ContextRequest = WrapRequest(request)
            };
            var result = Repository.ExecuteQuery(query);

            response.Merge(result);

            return(response);
        }
Beispiel #6
0
        public PagedResponse <TEntity> GetMultiple <TRequest, TEntity, TSortColumn>(TRequest request,
                                                                                    GetMultipleQuery <TRequest, TEntity, TSortColumn> query)
            where TRequest : SortablePageableRequest <TSortColumn>, IRequest
            where TEntity : AuditableEntity
            where TSortColumn : struct
        {
            Logger.LogTrace($"GetMultiple of {typeof(TEntity).Name}. By user {Username} ");
            var response = new PagedResponse <TEntity>();

            if (request.IsRequestInvalid(response, ContextInfo))
            {
                return(response);
            }

            query.ContextRequest = WrapRequest(request);
            var result = Repository.ExecuteQuery(query);

            response.Merge(result);


            return(response);
        }