Esempio n. 1
0
        public List <ContributorRowModel> GetItems(BsGridRepositorySettings <ContributorSearchModel> settings, List <int> ids)
        {
            this.settings = settings;

            var result = new List <ContributorRowModel>();

            // create filtered query
            var basicQuery = this.Query();

            if (ids != null && ids.Any())
            {
                basicQuery = basicQuery.Where(x => ids.Contains(x.Id));
            }
            else
            {
                basicQuery = Filter(basicQuery);
            }

            IEnumerable <ContributorRowModel> finalQuery = null;

            // order
            var orderedExcelQueryBuilder = new OrderedQueryBuilder <ContributorRowModel>(this.settings.OrderableColumns);

            orderedExcelQueryBuilder.OrderFor(x => x.Name, y => y.FirstName + " " + y.LastName);

            var orderedQuery = orderedExcelQueryBuilder.Order(basicQuery, x => x.OrderBy(y => y.StartDate));

            // map
            finalQuery = orderedQuery.Select(MapContributor_ContributorRowModel).ToList();

            result = finalQuery.ToList();

            return(result);
        }
Esempio n. 2
0
        /// <summary>
        /// Creates GridModel based on Query, OrderQuery and MapQuery
        /// </summary>
        /// <param name="settings">Requested settings</param>
        /// <returns>Grid model</returns>
        public virtual BsGridModel <TRow> ToBsGridViewModel <TValue>(BsGridBaseRepositorySettings settings, Expression <Func <TEntity, TValue> > uniqueIdSelector)
        {
            this.settings = settings;

            var result = new BsGridModel <TRow>();

            //creates basic query
            var basicQuery = this.Query();

            //add column order
            result.BaseSettings.OrderColumns = settings.OrderColumns;

            //add orderable columns
            result.BaseSettings.OrderableColumns = settings.OrderableColumns;

            this.orderedQueryBuilder = new OrderedQueryBuilder <TRow>(this.settings.OrderableColumns);

            if (this.settings.GoTo.HasValue)
            {
                this.SetNoOffsetResult(result, basicQuery, settings, uniqueIdSelector);
            }
            else
            {
                this.SetResult(result, basicQuery, settings, uniqueIdSelector);
            }

            if (settings.DetailsAll || settings.DetailsCount > 0)
            {
                for (var i = 0; i < result.Pager.CurrentPageRecords; i++)
                {
                    if (settings.HasDetails(i))
                    {
                        var row = result.Items.ElementAt(i);
                        this.FillDetails(row);
                    }
                }
            }

            //sets base settings
            result.BaseSettings = this.settings.GetBase();

            return(result);
        }
Esempio n. 3
0
        /// <summary>
        /// Creates GridModel based on Query, OrderQuery and MapQuery
        /// </summary>
        /// <param name="settings">Requested settings</param>
        /// <returns>Grid model</returns>
        public virtual BsGridModel <TRow> ToBsGridViewModel(BsGridBaseRepositorySettings settings)
        {
            this.settings = settings;

            var result = new BsGridModel <TRow>();

            //creates basic query
            var basicQuery = this.Query();

            //performs count
            var totalRecords = basicQuery.Select(x => false).Count();

            //add column order
            result.BaseSettings.OrderColumns = settings.OrderColumns;

            //add orderable columns
            result.BaseSettings.OrderableColumns = settings.OrderableColumns;

            if (totalRecords > 0)
            {
                var pager = new BsPagerModel(totalRecords, this.settings.PageSize, this.settings.Page);

                IEnumerable <TRow> finalQuery = null;

                if (totalRecords > 1)
                {
                    this.orderedQueryBuilder = new OrderedQueryBuilder <TRow>(this.settings.OrderableColumns);
                    var orderedQuery = this.OrderQuery(basicQuery);
                    var pagedQuery   = orderedQuery.Skip(pager.PageSize * (pager.CurrentPage - 1)).Take(pager.PageSize);
                    finalQuery = this.MapQuery(pagedQuery);
                }
                else
                {
                    finalQuery = this.MapQuery(basicQuery);
                }

                // get items for current page
                result.Items = finalQuery.ToList();

                //sets pager
                pager.CurrentPageRecords = result.Items.Count();
                result.Pager             = pager;

                if (settings.DetailsAll || settings.DetailsCount > 0)
                {
                    for (var i = 0; i < pager.CurrentPageRecords; i++)
                    {
                        if (settings.HasDetails(i))
                        {
                            var row = result.Items.ElementAt(i);
                            this.FillDetails(row);
                        }
                    }
                }
            }
            else
            {
                result.Items = new List <TRow>();
            }

            //sets base settings
            result.BaseSettings = this.settings.GetBase();

            return(result);
        }