Exemplo n.º 1
0
        public AdminEditViewModel GetQueryViewModel(QueryPart query) {
            var viewModel = new AdminEditViewModel {
                Id = query.Id,
                Name = query.Name
            };

            #region Load Filters

            var filterGroupEntries = new List<FilterGroupEntry>();
            foreach (var group in query.FilterGroups) {
                var filterEntries = group.Filters
                    .Select(filter => new FilterEntry {
                        Category = filter.Category,
                        Type = filter.Type,
                        FilterRecordId = filter.Id,
                        DisplayText = filter.Description
                    }).ToList();

                filterGroupEntries.Add(new FilterGroupEntry {Id = group.Id, Filters = filterEntries});
            }

            viewModel.FilterGroups = filterGroupEntries;

            #endregion

            #region Load Sort criterias

            var sortCriterionEntries = new List<SortCriterionEntry>();
            var allSortCriteria = _projectionManager.DescribeSortCriteria()
                .SelectMany(x => x.Descriptors).ToList();

            foreach (var sortCriterion in query.SortCriteria.OrderBy(s => s.Position)) {
                var category = sortCriterion.Category;
                var type = sortCriterion.Type;

                var f = allSortCriteria.FirstOrDefault(x => category == x.Category && type == x.Type);
                if (f != null) {
                    sortCriterionEntries.Add(
                        new SortCriterionEntry {
                            Category = f.Category,
                            Type = f.Type,
                            SortCriterionRecordId = sortCriterion.Id,
                            DisplayText = String.IsNullOrWhiteSpace(sortCriterion.Description) ? f.Display(new SortCriterionContext {State = FormParametersHelper.ToDynamic(sortCriterion.State)}).Text : sortCriterion.Description
                        });
                }
            }

            viewModel.SortCriteria = sortCriterionEntries;

            #endregion

            #region Load Layouts

            var layoutEntries = new List<LayoutEntry>();
            var allLayouts = _projectionManager.DescribeLayouts().SelectMany(x => x.Descriptors).ToList();
            foreach (var layout in query.Layouts) {
                var category = layout.Category;
                var type = layout.Type;

                var f = allLayouts.FirstOrDefault(x => category == x.Category && type == x.Type);
                if (f != null) {
                    layoutEntries.Add(
                        new LayoutEntry {
                            Category = f.Category,
                            Type = f.Type,
                            LayoutRecordId = layout.Id,
                            DisplayText = String.IsNullOrWhiteSpace(layout.Description) ? f.Display(new LayoutContext {State = FormParametersHelper.ToDynamic(layout.State)}).Text : layout.Description
                        });
                }
            }

            viewModel.Layouts = layoutEntries;

            #endregion

            return viewModel;
        }
Exemplo n.º 2
0
 public ProjectionEditViewModel()
 {
     QueryViewModel = new AdminEditViewModel();
     LayoutViewModel = new LayoutEditViewModel();
     AllFields = new List<ContentPartFieldDefinition>();
 }