Exemple #1
0
        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));
        }
Exemple #2
0
        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));
        }
Exemple #3
0
        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));
        }
Exemple #5
0
        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));
        }