Example #1
0
 /// <summary>
 /// Finds the entity by its prefix
 /// </summary>
 /// <typeparam name="T">The type of the entity</typeparam>
 /// <param name="baseFilterDto">The filtering DTO to make the where part</param>
 /// <param name="selector">The selector for select the attributes</param>
 /// <returns>The list of the referencedDto for the appropriate search DTO</returns>
 internal List <ReferenceDto> FindByPrefix <T>(BaseFilterDto baseFilterDto, Expression <Func <T, ReferenceDto> > selector) where T : BaseEntity
 {
     return(_modelContext.Set <T>()
            .Where(ExpressionQueryBuilder.BuildWhere <T>(baseFilterDto))
            .Select(selector)
            .ToList());
 }
Example #2
0
 internal IPagedList <T> FindPaged <T, U>(EventFilterDto eventFilterDto) where T : BaseEventDto, new() where U : BaseEvent
 {
     return(_modelContext.Set <U>()
            .Where(ExpressionQueryBuilder.BuildWhere <U>(eventFilterDto))
            .OrderBy(x => x.Start)
            .Select(x => new T()
     {
         Id = x.Id, Theme = x.Theme, Start = x.Start, End = x.End, City = x.City, CountryId = x.CountryId
     })
            .ToPagedList(eventFilterDto.Page, eventFilterDto.PageSize));
 }
Example #3
0
 /// <summary>
 /// Finds paged users.
 /// </summary>
 /// <param name="userFilterDto">The filtering DTO</param>
 /// <returns>The User DTO page</returns>
 internal IPagedList <UserDto> FindPaged(UserFilterDto userFilterDto)
 {
     return(_modelContext.Set <User>()
            .Where(ExpressionQueryBuilder.BuildWhere <User>(userFilterDto))
            .OrderBy(x => x.Surname)
            .Select(x => new UserDto()
     {
         Id = x.Id, BujinkanTitle = x.BujinkanTitle, FirstName = x.FirstName, Surname = x.Surname
     })
            .ToPagedList(userFilterDto.Page, userFilterDto.PageSize));
 }
Example #4
0
        internal ListReferenceDto FindAllReferences <T>(CategoryFilterDto categoryFilterDto) where T : Category
        {
            Dictionary <Guid, string> references = _modelContext.Set <T>()
                                                   .Where(ExpressionQueryBuilder.BuildWhere <T>(categoryFilterDto))
                                                   .OrderBy(x => x.Name)
                                                   .Select(x => new { Id = x.Id, Name = x.Name })
                                                   .ToDictionary(x => x.Id, x => x.Name);

            return(new ListReferenceDto()
            {
                References = references
            });
        }
Example #5
0
        internal ListReferenceDto FindAllReferences(BaseFilterDto baseFilterDto)
        {
            Dictionary <Guid, string> references = _modelContext.Set <Role>()
                                                   .Where(ExpressionQueryBuilder.BuildWhere <Role>(baseFilterDto))
                                                   .OrderBy(x => x.Name)
                                                   .Select(x => new { Id = x.Id, Name = x.Name })
                                                   .ToDictionary(x => x.Id, x => x.Name);

            return(new ListReferenceDto()
            {
                References = references
            });
        }
Example #6
0
 internal IPagedList <TrainingDto> FindPaged(TrainingFilterDto trainingFilterDto)
 {
     return(_modelContext.Set <Training>()
            .Where(ExpressionQueryBuilder.BuildWhere <Training>(trainingFilterDto))
            .OrderBy(x => x.Day)
            .Select(x => new TrainingDto()
     {
         Id = x.Id, Day = x.Day, Start = x.Start, End = x.End, City = x.City, UserReference = new ReferenceString()
         {
             Value = x.UserId + ":" + x.User.FirstName + " " + x.User.Surname
         }, UserId = x.UserId
     })
            .ToPagedList(trainingFilterDto.Page, trainingFilterDto.PageSize));
 }
Example #7
0
        public override string ToString()
        {
            var sb = new StringBuilder();

            sb.Append("SELECT ");

            var firstColumn = true;

            foreach (var column in SelectedColumns)
            {
                if (!firstColumn)
                {
                    sb.Append(", ");
                }
                firstColumn = false;

                sb.Append(column);
            }

            sb.AppendLine();

            sb.Append("FROM ").Append($"[{RootTableName}] AS ").Append($"[{RootTableAlias}]").AppendLine();

            foreach (var join in Joins)
            {
                sb.AppendLine(join.ToString());
            }

            var expComp = new ExpressionQueryBuilder <T>(m_owner);

            var where = expComp.Map(Where);

            where.Render(sb);

            sb.AppendLine();

            ResultOrderingModel.Render <T>(OrderBy, sb);

            if (Skip != null)
            {
                sb.AppendLine($"OFFSET {Skip} ROWS");
            }

            if (Take != null)
            {
                sb.AppendLine($"FETCH NEXT {Take} ROWS ONLY");
            }

            return(sb.ToString());
        }
Example #8
0
        public ITransformedQuery <TResult> Transform <TResult>(Expression <Func <T, TResult> > generator)
        {
            var expComp = new ExpressionQueryBuilder <T>(this);

            var seg    = expComp.Map(generator) as WhereSegment;
            var selexp = seg.GetSelectExpression();

            if (!m_selectList.Contains(selexp))
            {
                m_selectList.Add(selexp);
            }

            return(new TransformedQueryBuilder <T, TResult>(m_owner, this));
        }
Example #9
0
        public static string Render <T>(IQueryModel <T> query, IQueryBuilder <T> queryBuilder) where T : class
        {
            var sb = new StringBuilder();

            var takeRendered = false;

            sb.Append("SELECT ");

            if ((query.Skip == null) && (query.Take != null))
            {
                sb.Append($"TOP {query.Take} ");
                takeRendered = true;
            }

            var firstColumn = true;

            foreach (var column in query.SelectedColumns)
            {
                if (!firstColumn)
                {
                    sb.Append(", ");
                }
                firstColumn = false;

                sb.Append(column);
            }

            sb.AppendLine();

            sb.Append("FROM ").Append($"[{query.RootTableName}] AS ").Append($"[{query.RootTableAlias}]").AppendLine();

            foreach (var join in query.Joins)
            {
                sb.AppendLine(join.ToString());
            }

            var expComp = new ExpressionQueryBuilder <T>(queryBuilder);

            var where = expComp.Map(query.Where);

            where.Render(sb);

            sb.AppendLine();

            ResultOrderingModel.Render <T>(query.OrderBy, sb);


            if (!takeRendered)
            {
                if (query.Skip != null)
                {
                    sb.AppendLine($"OFFSET {query.Skip} ROWS");
                }

                if (query.Take != null)
                {
                    sb.AppendLine($"FETCH NEXT {query.Take} ROWS ONLY");
                }
            }

            return(sb.ToString());
        }