public static GetGridRecordsResponse GetGridRecordPage(this DynamicGridViewModel gridViewModel, QueryDefinition query) { query.Top = gridViewModel.CurrentPageCeiling + 1; var sortExpression = gridViewModel.GetLastSortExpression(); if (sortExpression != null) { if (!sortExpression.FieldName.Contains(".")) { query.Sorts.Insert(0, gridViewModel.GetLastSortExpression()); } else { //if we have a sort on a field in a linked field //we need to add the sort to the appropriate join in the query var splitName = sortExpression.FieldName.Split('.'); var matchingJoins = query.Joins.Where(j => j.Alias != null && j.Alias == splitName[0]); if (matchingJoins.Any()) { matchingJoins.First().Sorts.Add(new SortExpression(splitName[1], sortExpression.SortType)); } } } var records = gridViewModel.RecordService.RetreiveAll(query); records.PopulateEmptyLookups(gridViewModel.RecordService, null); var hasMoreRows = records.Count() > gridViewModel.CurrentPageCeiling; records = records.Skip(gridViewModel.CurrentPageFloor).Take(gridViewModel.PageSize).ToArray(); return(new GetGridRecordsResponse(records, hasMoreRows)); }
public static GetGridRecordsResponse GetGridRecordPage(this DynamicGridViewModel gridViewModel, QueryDefinition query, IEnumerable <string> notInList = null) { if (gridViewModel.LoadingViewModel != null) { gridViewModel.LoadingViewModel.LoadingMessage = "Running Query"; } notInList = notInList ?? new string[0]; var sortExpression = gridViewModel.GetLastSortExpression(); if (sortExpression != null) { if (!sortExpression.FieldName.Contains(".")) { query.Sorts.Insert(0, gridViewModel.GetLastSortExpression()); } else { //if we have a sort on a field in a linked field //we need to add the sort to the appropriate join in the query var splitName = sortExpression.FieldName.Split('.'); var matchingJoins = query.Joins.Where(j => j.Alias != null && j.Alias == splitName[0]); if (matchingJoins.Any()) { matchingJoins.First().Sorts.Add(new SortExpression(splitName[1], sortExpression.SortType)); } } } IEnumerable <IRecord> records = null; if (!notInList.Any()) { query.Top = gridViewModel.CurrentPageCeiling + 1; records = gridViewModel.RecordService.RetreiveAll(query); } else { var recordList = new List <IRecord>(); gridViewModel.RecordService.ProcessResults(query, (r) => { recordList.AddRange(r.Where(t => !notInList.Contains(t.Id))); return(!(recordList.Count() > gridViewModel.CurrentPageCeiling)); }); records = recordList; } records.PopulateEmptyLookups(gridViewModel.RecordService, null); var hasMoreRows = records.Count() > gridViewModel.CurrentPageCeiling; records = records.Skip(gridViewModel.CurrentPageFloor).Take(gridViewModel.PageSize).ToArray(); if (gridViewModel.LoadingViewModel != null) { gridViewModel.LoadingViewModel.LoadingMessage = "Please Wait While Loading"; } return(new GetGridRecordsResponse(records, hasMoreRows)); }
public static GetGridRecordsResponse GetGridRecordPage(this DynamicGridViewModel gridViewModel, QueryDefinition query) { query.Top = gridViewModel.CurrentPageCeiling + 1; if (gridViewModel.GetLastSortExpression() != null) { query.Sorts.Insert(0, gridViewModel.GetLastSortExpression()); } var records = gridViewModel.RecordService.RetreiveAll(query); var hasMoreRows = records.Count() > gridViewModel.CurrentPageCeiling; records = records.Skip(gridViewModel.CurrentPageFloor).Take(gridViewModel.PageSize).ToArray(); return(new GetGridRecordsResponse(records, hasMoreRows)); }
public static GetGridRecordsResponse GetGridRecordPage(this DynamicGridViewModel gridViewModel, IEnumerable <Condition> conditions, IEnumerable <SortExpression> sorts) { var sortList = sorts == null ? new List <SortExpression>() : sorts.ToList(); if (gridViewModel.GetLastSortExpression() != null) { sortList.Insert(0, gridViewModel.GetLastSortExpression()); } var records = gridViewModel.RecordService.GetFirstX(gridViewModel.RecordType, gridViewModel.CurrentPageCeiling + 1, null, conditions, sortList); var hasMoreRows = records.Count() > gridViewModel.CurrentPageCeiling; records = records.Skip(gridViewModel.CurrentPageFloor).Take(gridViewModel.PageSize).ToArray(); return(new GetGridRecordsResponse(records, hasMoreRows)); }
public GetGridRecordsResponse GetGridRecords(bool ignorePages) { if (DynamicGridViewModel.HasPaging && !ignorePages) { var conditions = new[] { new Condition(LinkedRecordLookup, ConditionType.Equal, RecordForm.RecordId) }; return(DynamicGridViewModel.GetGridRecordPage(conditions, null)); } else { var lastSortExpression = DynamicGridViewModel.GetLastSortExpression(); var records = GetRecordService().GetLinkedRecords(LinkedRecordType, RecordForm.RecordType, LinkedRecordLookup, RecordForm.RecordId).ToList(); if (lastSortExpression != null) { RecordComparer.SortList(records, lastSortExpression); } return(new GetGridRecordsResponse(records)); } }
public static GetGridRecordsResponse GetGridRecord(this DynamicGridViewModel gridViewModel, IEnumerable <IRecord> allRecords, bool ignorePaging) { var hasMoreRows = allRecords.Count() > gridViewModel.CurrentPageCeiling; var sortExpression = gridViewModel.GetLastSortExpression(); if (sortExpression != null) { var sortField = sortExpression.FieldName; var newList = new List <IRecord>(); foreach (var item in allRecords) { var value1 = item.GetField(sortField); if (value1 == null) { newList.Insert(0, item); continue; } foreach (var item2 in newList) { var value2 = item2.GetField(sortField); if (value2 == null) { continue; } else if (!(value1 is Enum) && value1 is IComparable) { if (((IComparable)value1).CompareTo(value2) < 0) { newList.Insert(newList.IndexOf(item2), item); break; } else { continue; } } var sortString1 = value1.ToString(); var sortString2 = value2.ToString(); if (value1 is Enum) { sortString1 = ((Enum)value1).GetDisplayString(); } if (value2 is Enum) { sortString2 = ((Enum)value2).GetDisplayString(); } if (String.Compare(sortString1, sortString2, StringComparison.Ordinal) < 0) { newList.Insert(newList.IndexOf(item2), item); break; } } if (!newList.Contains(item)) { newList.Add(item); } } if (sortExpression.SortType == SortType.Descending) { newList.Reverse(); } allRecords = newList; } if (!ignorePaging) { allRecords = allRecords.Skip(gridViewModel.CurrentPageFloor).Take(gridViewModel.PageSize).ToArray(); } return(new GetGridRecordsResponse(allRecords, hasMoreRows)); }