public ActionResult GetUsers(DataGridViewMetaData metaData) { IEnumerable <UserViewModel> data = _messageService.Dispatch(new GetUsersQuery()); data = _dataGridViewService.ApplyMetaData(data, ref metaData); return(Json(new { metaData, data })); }
public void DataGridViewService_Pages_Correctly_First_Page() { var service = new DataGridViewService(); var metaData = new DataGridViewMetaData() { rowsPerPage = 25 }; var result = service.ApplyMetaData(GenerateList(), ref metaData).ToList(); result.Should().HaveCount(25); }
public void DataGridViewService_Updates_MetaData() { var service = new DataGridViewService(); var metaData = new DataGridViewMetaData() { rowsPerPage = 25 }; service.ApplyMetaData(GenerateList(), ref metaData).ToList(); metaData.totalRows.Should().Be(137); }
public void DataGridViewService_Sorts_By_Id_For_Missing_SortOrder() { var service = new DataGridViewService(); var metaData = new DataGridViewMetaData() { rowsPerPage = 25 }; var result = service.ApplyMetaData(GenerateList(), ref metaData).ToList(); result.Select(i => i.Id).Should().BeInAscendingOrder(); }
public void DataGridViewService_Sorts_By_Id_For_Invalid_Property() { var service = new DataGridViewService(); var metaData = new DataGridViewMetaData() { sortColumn = "Wrong", rowsPerPage = 25 }; var result = service.ApplyMetaData(GenerateList(), ref metaData).ToList(); result.Select(i => i.Id).Should().BeInAscendingOrder(); }
public void DataGridViewService_Sorts_Correctly() { var service = new DataGridViewService(); var metaData = new DataGridViewMetaData() { sortColumn = "Name", rowsPerPage = 25 }; var result = service.ApplyMetaData(GenerateList(), ref metaData).ToList(); result.Select(i => i.Name).Should().BeInAscendingOrder(); }
public JsonResult GetInvoiceGridItems(DataGridViewMetaData metaData) { var totalItems = 1254; // Random total count var items = GenerateInvoiceGridItems().Take(totalItems); var totals = new InvoiceGridItemViewModel() { InvoiceAmount = items.Sum(i => i.InvoiceAmount), InvoiceOpenAmount = items.Sum(i => i.InvoiceOpenAmount) }; if (metaData == null || metaData.rowsPerPage == 0) { metaData = new DataGridViewMetaData() { sortColumn = null, sortDescending = false, totalRows = totalItems, rowsPerPage = 25, page = 0 }; } // Sorting if (metaData.sortColumn != null) { var property = typeof(InvoiceGridItemViewModel).GetProperty(metaData.sortColumn); if (property != null) { if (metaData.sortDescending) { items = items.OrderByDescending(i => property.GetValue(i)); } else { items = items.OrderBy(i => property.GetValue(i)); } } } // Paging items = items.Skip(metaData.page * metaData.rowsPerPage).Take(metaData.rowsPerPage); return(Json(new { metaData = metaData, data = items, totals = totals })); }
private IEnumerable <TViewModel> Sort <TViewModel>(IEnumerable <TViewModel> query, DataGridViewMetaData metaData) where TViewModel : ViewModel { Func <TViewModel, object> orderBy = null; if (metaData.sortColumn != null) { var property = typeof(TViewModel).GetProperty(metaData.sortColumn); if (property != null) { orderBy = i => property.GetValue(i); } } if (orderBy == null) { orderBy = i => i.Id; } if (metaData.sortDescending) { return(query.OrderByDescending(orderBy)); } else { return(query.OrderBy(orderBy)); } }
public IEnumerable <TViewModel> ApplyMetaData <TViewModel>(IEnumerable <TViewModel> query, ref DataGridViewMetaData metaData) where TViewModel : ViewModel { metaData = GetMetaData(query, metaData); return(Page(Sort(query, metaData), metaData)); }
private DataGridViewMetaData GetMetaData <TViewModel>(IEnumerable <TViewModel> query, DataGridViewMetaData metaData) where TViewModel : ViewModel { return(new DataGridViewMetaData() { sortColumn = metaData.sortColumn, sortDescending = metaData.sortDescending, page = metaData.page, rowsPerPage = metaData.rowsPerPage, totalRows = query.Count() }); }
private IEnumerable <TViewModel> Page <TViewModel>(IEnumerable <TViewModel> query, DataGridViewMetaData metaData) where TViewModel : ViewModel { return(query.Skip(metaData.page * metaData.rowsPerPage).Take(metaData.rowsPerPage)); }