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); }
/// <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); }
/// <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); }