if (dm.Search != null && dm.Search.Count > 0)
{
// Searching
dataSource = DataOperations.PerformSearching(dataSource, dm.Search);
}
if (dm.Sorted != null && dm.Sorted.Count > 0)
{
// Sorting
dataSource = DataOperations.PerformSorting(dataSource, dm.Sorted);
}
else
{
var properties = typeof(TTarget).GetProperties().ToList();
// for take and skip we always need one sort prop
if (properties.Any(a => a.Name == "Id"))
{
dataSource = DataOperations.PerformSorting(dataSource, new List<Sort>() {new Sort() {Name = "Id", Direction = "ascending"}});
}
else if (properties.Any())
{
dataSource = DataOperations.PerformSorting(dataSource, new List<Sort>() {new Sort() {Name = properties.First().Name, Direction = "ascending"}});
}
else
{
throw new Exception("The grid needs at least one property in the generic model.");
}
}
if (dm.Where != null && dm.Where.Count > 0)
{
// Filtering
dataSource = DataOperations.PerformFiltering(dataSource, dm.Where, dm.Where[0].Operator);
}
int count = dataSource.Count();
if (dm.Skip != 0)
{
//Paging
dataSource = DataOperations.PerformSkip(dataSource, dm.Skip);
}
if (dm.Take != 0)
{
dataSource = DataOperations.PerformTake(dataSource, dm.Take);
}
if (dm.Group != null && dm.Group.Any())
{
var test = dataSource;
var res = DataOperations.PerformGrouping<TTarget>(test, dm.Group);
return dm.RequiresCounts ? new DataResult() {Result = res, Count = count} : (object) res;
}
|
public override object Read(DataManagerRequest dm, string key = null)
{
IEnumerable
DataSource = Orders;
DataResult DataObject = new DataResult();
. . . .. . . . .
if (dm.Skip != 0)
{
//Paging
DataSource = DataOperations.PerformSkip(DataSource, dm.Skip);
}
if (dm.Take != 0)
{
DataSource = DataOperations.PerformTake(DataSource, dm.Take);
}
if (dm.Group != null)
{
IEnumerable GroupData = Enumerable.Empty<object>();
foreach (var group in dm.Group)
{
DataSource = DataUtil.Group<Order>(DataSource, group, dm.Aggregates, 0, dm.GroupByFormatter);
}
DataObject.Result = DataSource;
DataObject.Count = count;
return dm.RequiresCounts ? DataObject : (object)DataSource;
}
return dm.RequiresCounts ? new DataResult() { Result = DataSource, Count = count } : (object)DataSource;
}
|