Пример #1
0
        protected override void Importing(QueryPart part, ImportContentContext context)
        {
            var queryElement = context.Data.Element(part.PartDefinition.Name);

            part.Record.FilterGroups.Clear();
            foreach (var item in queryElement.Element("FilterGroups").Elements("FilterGroup").Select(filterGroup =>
                                                                                                     new FilterGroupRecord {
                Filters = filterGroup.Elements("Filter").Select(filter => {
                    var category = filter.Attribute("Category").Value;
                    var type = filter.Attribute("Type").Value;
                    var state = filter.Attribute("State").Value;

                    var descriptor = _projectionManager.GetFilter(category, type);
                    if (descriptor != null)
                    {
                        state = _formManager.Import(descriptor.Form, state, context);
                    }

                    return(new FilterRecord {
                        Category = category,
                        Description = filter.Attribute("Description").Value,
                        Position = Convert.ToInt32(filter.Attribute("Position").Value),
                        State = state,
                        Type = type
                    });
                }).ToList()
            }))
            {
                part.Record.FilterGroups.Add(item);
            }

            part.Record.SortCriteria.Clear();
            foreach (var item in queryElement.Element("SortCriteria").Elements("SortCriterion").Select(sortCriterion => {
                var category = sortCriterion.Attribute("Category").Value;
                var type = sortCriterion.Attribute("Type").Value;
                var state = sortCriterion.Attribute("State").Value;

                var descriptor = _projectionManager.GetFilter(category, type);
                if (descriptor != null)
                {
                    state = _formManager.Import(descriptor.Form, state, context);
                }

                return(new SortCriterionRecord {
                    Category = category,
                    Description = sortCriterion.Attribute("Description").Value,
                    Position = Convert.ToInt32(sortCriterion.Attribute("Position").Value),
                    State = state,
                    Type = type
                });
            }))
            {
                part.Record.SortCriteria.Add(item);
            }

            part.Record.Layouts.Clear();
            foreach (var item in queryElement.Element("Layouts").Elements("Layout").Select(layout => {
                var category = layout.Attribute("Category").Value;
                var type = layout.Attribute("Type").Value;
                var state = layout.Attribute("State").Value;

                var descriptor = _projectionManager.GetFilter(category, type);
                if (descriptor != null)
                {
                    state = _formManager.Import(descriptor.Form, state, context);
                }

                return(new LayoutRecord {
                    Category = category,
                    Description = layout.Attribute("Description").Value,
                    Display = int.Parse(layout.Attribute("Display").Value),
                    DisplayType = layout.Attribute("DisplayType").Value,
                    State = state,
                    Type = type,
                    Properties = layout.Element("Properties").Elements("Property").Select(GetProperty).ToList(),
                    GroupProperty = GetProperty(layout.Element("Group").Element("Property"))
                });
            }))
            {
                part.Record.Layouts.Add(item);
            }
        }