Beispiel #1
0
        private ProjectionPart CreateProjection(string typeName, IEnumerable <string> properties)
        {
            var projectionItem = _contentManager.New("ProjectionPage");
            var queryItem      = _contentManager.New("Query");
            var projectionPart = projectionItem.As <ProjectionPart>();
            var queryPart      = queryItem.As <QueryPart>();

            _contentManager.Create(queryItem);

            projectionPart.Record.QueryPartRecord = queryPart.Record;
            _contentManager.Create(projectionItem);

            var layoutRecord = new LayoutRecord {
                Category = "Html", Type = "ngGrid"
            };

            queryPart.Record.Layouts.Add(layoutRecord);
            projectionPart.Record.LayoutRecord = layoutRecord;

            var filterGroup = new FilterGroupRecord();

            queryPart.Record.FilterGroups.Clear();
            queryPart.Record.FilterGroups.Add(filterGroup);
            var filterRecord = new FilterRecord {
                Category = "Content",
                Type     = "ContentTypes",
                Position = filterGroup.Filters.Count,
                State    = string.Format("<Form><ContentTypes>{0}</ContentTypes></Form>", typeName)
            };

            filterGroup.Filters.Add(filterRecord);

            UpdateLayoutProperties(typeName, layoutRecord, properties);
            return(projectionPart);
        }
        public FilterRecord CreateFilter(string category, string type, string state, FilterGroupRecord filterGroup)
        {
            FilterRecord filterRecord = new FilterRecord();

            filterRecord.FilterGroupRecord = filterGroup;
            filterRecord.Category          = category;
            filterRecord.Type  = type;
            filterRecord.State = state;
            this.filterRepository.Create(filterRecord);

            return(filterRecord);
        }
Beispiel #3
0
        private int CreateQuery(string entityType)
        {
            var queryPart   = _contentManager.New <QueryPart>("Query");
            var filterGroup = new FilterGroupRecord();

            queryPart.Record.FilterGroups.Add(filterGroup);
            var filterRecord = new FilterRecord {
                Category = "Content",
                Type     = "ContentTypes",
                Position = filterGroup.Filters.Count,
                State    = GetContentTypeFilterState(entityType)
            };

            filterGroup.Filters.Add(filterRecord);
            _contentManager.Create(queryPart);
            return(queryPart.Id);
        }
Beispiel #4
0
        public IEnumerable <JObject> Post(string id, FilterViewModel model)
        {
            var pluralService = PluralizationService.CreateService(new CultureInfo("en-US"));

            if (pluralService.IsPlural(id))
            {
                id = pluralService.Singularize(id);
            }

            var groupRecord = new FilterGroupRecord();

            _filterGroupRepository.Create(groupRecord);
            _entityFilterRepository.Create(new EntityFilterRecord {
                EntityName        = id,
                FilterGroupRecord = groupRecord,
                Title             = model.Title
            });

            foreach (var filter in model.Filters)
            {
                if (filter.FormData.Length == 0)
                {
                    continue;
                }
                var record = new FilterRecord {
                    Category = id + "ContentFields",
                    Type     = filter.Type,
                };
                var dictionary = new Dictionary <string, string>();
                foreach (var data in filter.FormData)
                {
                    if (dictionary.ContainsKey(data.Name))
                    {
                        dictionary[data.Name] += "&" + data.Value;
                    }
                    else
                    {
                        dictionary.Add(data.Name, data.Value);
                    }
                }
                record.State = FormParametersHelper.ToString(dictionary);
                groupRecord.Filters.Add(record);
            }

            return(Get(id));
        }
Beispiel #5
0
        public QueryPart CreateProjectActivityStreamQuery()
        {
            var query = this.GetQuery(QueryNames.ProjectActivityStreamQueryName);

            if (query != null)
            {
                return(query.As <QueryPart>());
            }

            query = this.contentManager.Create("Query");
            query.As <TitlePart>().Title = QueryNames.ProjectActivityStreamQueryName;
            this.contentManager.Publish(query);
            QueryPart queryPart = query.As <QueryPart>();
            var       attachToProjectFilterGroup = queryPart.Record.FilterGroups.FirstOrDefault();

            // AttachToProject
            string       state = string.Format(CultureInfo.InvariantCulture, "<Form><Description></Description><Project_Id>{0}</Project_Id></Form>", "{AttachToProject.ProjectId}");
            FilterRecord attachToProjectFilterRecord = this.CreateFilter(AttachToProjectFilter.CategoryName, AttachToProjectFilter.IdFilterType, state, attachToProjectFilterGroup);

            this.filterRepository.Flush();

            var projectFilterGroup = new FilterGroupRecord {
                QueryPartRecord = queryPart.Record
            };

            queryPart.Record.FilterGroups.Add(projectFilterGroup);
            this.filterGroupRepository.Create(projectFilterGroup);

            // project ContentType filter
            this.CreateContentTypeFilter(ContentTypes.ProjectContentType, projectFilterGroup);

            state = string.Format(CultureInfo.InvariantCulture, "<Form><Description></Description><Project_Id>{0}</Project_Id></Form>", "{Project.ProjectId}");
            this.CreateFilter(ProjectFilter.CategoryName, ProjectFilter.IdFilterType, state, projectFilterGroup);
            this.filterGroupRepository.Flush();
            this.filterRepository.Flush();

            return(queryPart);
        }
Beispiel #6
0
        public int Count()
        {
            IHqlQuery hqlQuery = HqlQuery();
            //hqlQuery.Where(x => x.Named("a"), y => y.Eq("UserName", "admin"));
            QueryRecord       record = new QueryRecord();
            FilterGroupRecord group  = new FilterGroupRecord();
            var state = new
            {
                Description = "test",
                Operator    = "Equals",
                Value       = "phoenix"
            };

            group.Filters.Add(new FilterRecord()
            {
                Category     = "UserEntity",
                PropertyName = "UserName",
                State        = JsonConvert.SerializeObject(state)
            });
            record.FilterGroups.Add(group);
            _hqlQueryManager.GetQuery(hqlQuery, record);

            return(hqlQuery.Count());
        }
Beispiel #7
0
        protected FilterRecord CreateContentTypeFilter(string contnetType, FilterGroupRecord filterGroup)
        {
            string state = string.Format(CultureInfo.InvariantCulture, "<Form><Description></Description><ContentTypes>{0}</ContentTypes></Form>", contnetType);

            return(this.CreateFilter("Content", "ContentTypes", state, filterGroup));
        }
Beispiel #8
0
        public int EditPost(int id, ProjectionEditViewModel viewModel, IEnumerable <string> pickedFileds)
        {
            ListViewPart   listViewPart;
            ProjectionPart projectionPart;
            QueryPart      queryPart;

            if (id == 0)
            {
                listViewPart = _contentManager.New <ListViewPart>("ListViewPage");
                listViewPart.ItemContentType = viewModel.ItemContentType;
                queryPart = _contentManager.New <QueryPart>("Query");

                var layout = new LayoutRecord {
                    Category    = "Html",
                    Type        = "ngGrid",
                    Description = "DefaultLayoutFor" + queryPart.Name,
                    Display     = 1
                };

                queryPart.Layouts.Add(layout);
                projectionPart = listViewPart.As <ProjectionPart>();
                projectionPart.Record.LayoutRecord    = layout;
                projectionPart.Record.QueryPartRecord = queryPart.Record;

                var filterGroup = new FilterGroupRecord();
                queryPart.Record.FilterGroups.Add(filterGroup);
                var filterRecord = new FilterRecord {
                    Category = "Content",
                    Type     = "ContentTypes",
                    Position = filterGroup.Filters.Count,
                    State    = GetContentTypeFilterState(viewModel.ItemContentType)
                };
                filterGroup.Filters.Add(filterRecord);

                _contentManager.Create(queryPart.ContentItem);
                _contentManager.Create(projectionPart.ContentItem);
            }
            else
            {
                listViewPart   = _contentManager.Get <ListViewPart>(id, VersionOptions.Latest);
                projectionPart = listViewPart.As <ProjectionPart>();
                var queryId = projectionPart.Record.QueryPartRecord.Id;
                queryPart = _contentManager.Get <QueryPart>(queryId, VersionOptions.Latest);
            }

            if (pickedFileds == null)
            {
                pickedFileds = new List <string>();
            }

            listViewPart.VisableTo = viewModel.VisableTo;
            listViewPart.As <TitlePart>().Title = viewModel.DisplayName;
            listViewPart.IsDefault = viewModel.IsDefault;
            queryPart.Name         = "Query for Public View";

            projectionPart.Record.ItemsPerPage = viewModel.PageRowCount;
            //Post Selected Fields
            var layoutRecord = projectionPart.Record.LayoutRecord;

            layoutRecord.Properties.Clear();

            var          category    = viewModel.ItemContentType + "ContentFields";
            const string settingName = "CoeveryTextFieldSettings.IsDispalyField";

            try {
                UpdateLayoutProperties(viewModel.ItemContentType, ref layoutRecord, category, settingName, pickedFileds);
            }
            catch (Exception exception) {
                Services.Notifier.Add(NotifyType.Error, T(exception.Message));
            }
            layoutRecord.State = GetLayoutState(queryPart.Id, layoutRecord.Properties.Count, layoutRecord.Description);
            // sort
            queryPart.SortCriteria.Clear();
            if (!string.IsNullOrEmpty(viewModel.SortedBy))
            {
                var sortCriterionRecord = new SortCriterionRecord {
                    Category    = category,
                    Type        = viewModel.SortedBy,
                    Position    = queryPart.SortCriteria.Count,
                    State       = GetSortState(viewModel.SortedBy, viewModel.SortMode),
                    Description = viewModel.SortedBy + " " + viewModel.SortMode
                };
                queryPart.SortCriteria.Add(sortCriterionRecord);
            }
            return(listViewPart.Id);
        }