Пример #1
0
        public Response <long> Save <T, TRequest>(TRequest request, IQueryInclude <T> includeQuery = null)
            where T : AuditableEntity, new()
            where TRequest : SaveRequest
        {
            Logger.LogTrace($"{(request.IsNew ? $"Entering Save new {typeof(T).Name} " : $"Entering Save {typeof(T).Name} with id: {request.Id}")}. By user {Username}");
            var response = new Response <long>();

            if (request.IsRequestInvalid(response, ContextInfo))
            {
                return(response);
            }
            var mapper = ContainerFactory.GetMap <T, ContextRequest <TRequest> >()
                         ?? new DefaultMapping <T, TRequest>();


            var command = new SaveEntityCommand <T, TRequest>
            {
                WrappedRequest = WrapRequest(request),
                IncludeQuery   = includeQuery,
                MapAction      = (x, y) => mapper.Map(x, y)
            };
            var result = Repository.ExecuteCommand(command);

            response.Merge(result);

            return(response);
        }
Пример #2
0
 protected CoreManager(DomainRepository repository,
                       IQueryInclude <TEntity> queryInclude, Dictionary <TSortColumn, Expression <Func <TEntity, object> > > sortDictionary,
                       ILogger <CoreManager <TEntity, TRequest, TSortColumn> > logger)
     : base(repository, logger)
 {
     _queryInclude   = queryInclude;
     _sortDictionary = sortDictionary;
 }
Пример #3
0
        public static IQueryable <T> ApplyTracking <T>(this IQueryable <T> query, IQueryInclude queryObj) where T : class
        {
            if (queryObj.IsTracking)
            {
                return(query);
            }

            return(query.AsNoTracking <T>());
        }
Пример #4
0
        public virtual Response <string> GetJSON(IdPartialRequest request, IQueryInclude <TEntity> includeQuery = null)
        {
            var response     = new Response <string>();
            var queryInclude = new QueryInclude <TEntity>(request);

            var result = Get(request, queryInclude.IsValid ? queryInclude : includeQuery ?? _queryInclude);

            response.Merge(result);

            return(response);
        }
Пример #5
0
        public Response <T> Get <T>(IdRequest request, IQueryInclude <T> includeQuery = null) where T : DeletableEntity
        {
            Logger.LogTrace($"Entering Get {typeof(T).Name} by id: {request.Id}. By user {Username}");
            var query = new GetQuery <T, IdRequest>
            {
                IncludeQuery = includeQuery
            };

            query.QueryFilters.Add(new IsActiveAndByIdFilter <T>(request.Id, true));

            return(Get(request, query));
        }
Пример #6
0
        public virtual TEntity GetById(TKey id, IQueryInclude queryObj = null)
        {
            if (queryObj == null)
            {
                return(_dbSet.Find(id));
            }

            IQueryable <TEntity> query = _dbSet;

            query = query.ApplyTrackingInclude(queryObj);

            return(query.SingleOrDefault(x => x.Id.Equals(id)));
        }
Пример #7
0
        public virtual IEnumerable <TEntity> GetAll(IQueryInclude queryObj = null)
        {
            if (queryObj == null)
            {
                return(_dbSet);
            }

            IQueryable <TEntity> query = _dbSet;

            query = query.ApplyTrackingInclude(queryObj);

            return(query);
        }
Пример #8
0
        public virtual PagedResponse <TEntity> GetMultiple(TRequest request,
                                                           IQueryInclude <TEntity> queryInclude,
                                                           List <IQueryFilter <TEntity> > queryFilters = null)
        {
            var query = new GetMultipleQuery <TRequest, TEntity, TSortColumn>
            {
                QueryInclude   = queryInclude ?? _queryInclude,
                QueryFilters   = queryFilters ?? QueryFilters(request),
                SortDictionary = _sortDictionary,
                ContextRequest = WrapRequest(request)
            };

            return(GetMultiple(request, query));
        }
Пример #9
0
        public static IQueryable <T> ApplyInclude <T>(this IQueryable <T> query, IQueryInclude queryObj) where T : class
        {
            if (string.IsNullOrWhiteSpace(queryObj.IncludeProperties))
            {
                return(query);
            }

            foreach (var includeProperty in queryObj.IncludeProperties.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries))
            {
                query = query.Include <T>(includeProperty);
            }

            return(query);
        }
Пример #10
0
 public IEnumerable <ProductCategory> Get(Expression <Func <ProductCategory, bool> > predicate, IQueryInclude queryObj = null)
 {
     throw new NotImplementedException();
 }
        protected bool NotAny <T>(DomainRepository repository, Expression <Func <T, bool> > predicate, IQueryInclude <T> queryInclude = null) where T : AuditableEntity, new()
        {
            var query = new CheckPredicateQuery <T>(true)
            {
                ContextRequest = new ContextRequest <EmptyRequest>(UserContext),
                Predicate      = predicate,
                QueryInclude   = queryInclude
            };
            var queryResult = repository.ExecuteQuery(query);

            return(queryResult.Status == HttpStatusCode.OK && queryResult.Value);
        }
Пример #12
0
        public virtual IEnumerable <TEntity> Get(Expression <Func <TEntity, bool> > predicate, IQueryInclude queryObj = null)
        {
            IQueryable <TEntity> query = _dbSet;

            query = query.ApplyFilter(predicate);

            if (queryObj == null)
            {
                return(query);
            }

            query = query.ApplyTrackingInclude(queryObj);

            return(query);
        }
Пример #13
0
        public Response <TEntity> ExecuteCustomQuery <TEntity, TRequest>(TRequest request, Expression <Func <TEntity, bool> > func, IQueryInclude <TEntity> include = null)
            where TRequest : IRequest
            where TEntity : AuditableEntity
        {
            Logger.LogTrace($"Entering execute of custom query: {typeof(TEntity).Name}. By user {Username}");
            var response = new Response <TEntity>();

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

            var query = new GetWithFuncQuery <TEntity, TRequest>(func)
            {
                ContextRequest = WrapRequest(request)
                ,
                IncludeQuery = include
            };
            var result = Repository.ExecuteQuery(query);

            response.Merge(result);

            return(response);
        }
 public static IQueryInclude <TEntity, TProperty> ThenInclude <TEntity, TPreviousProperty, TProperty>(this IQueryInclude <TEntity, ICollection <TPreviousProperty> > query, Expression <Func <TPreviousProperty, TProperty> > propToExpand) where TEntity : class
 {
     return(new QueryInclude <TEntity, TProperty>(EntityFrameworkQueryableExtensions.ThenInclude(query.GetQuery(), propToExpand)));
 }
Пример #15
0
        public virtual Response <bool> SaveMultiple <TSaveRequest>(List <TSaveRequest> request, IQueryInclude <TEntity> includeQuery = null, bool stopOnFirstInvalidRequest = false)
            where TSaveRequest : SaveRequest
        {
            if (request == null)
            {
                return(Response <bool> .BadRequest());
            }

            var response = new Response <bool>();

            foreach (var t in request)
            {
                t.IsRequestInvalid(response, ContextInfo);
                if (response.NotOk && stopOnFirstInvalidRequest)
                {
                    return(response);
                }
            }

            if (response.Messages.Any())
            {
                return(response);
            }

            request.ForEach(x =>
            {
                response.Merge(Save(x, includeQuery));
            });
            response.Payload = !response.Messages.Any();
            return(response);
        }
Пример #16
0
        public static IQueryable <T> ApplyTrackingInclude <T>(this IQueryable <T> query, IQueryInclude queryObj) where T : class
        {
            query = ApplyTracking(query, queryObj);

            query = ApplyInclude(query, queryObj);

            return(query);
        }
Пример #17
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);
        }
Пример #18
0
 public ProductCategory GetById(int id, IQueryInclude queryObj = null)
 {
     throw new NotImplementedException();
 }
Пример #19
0
 public virtual Response <TEntity> Get(IdRequest request, IQueryInclude <TEntity> includeQuery)
 {
     return(base.Get(request, includeQuery ?? _queryInclude));
 }
Пример #20
0
 public IEnumerable <ProductCategory> GetAll(IQueryInclude queryObj = null)
 {
     throw new NotImplementedException();
 }
Пример #21
0
 public virtual Response <long> Save <TSaveRequest>(TSaveRequest request, IQueryInclude <TEntity> includeQuery = null)
     where TSaveRequest : SaveRequest
 {
     return(base.Save(request, includeQuery ?? _queryInclude));
 }