Пример #1
0
        private void InitQueryItem(QueryItemDefData item)
        {
            var queryData = item as QueryDefData;

            if (queryData != null)
            {
                queryData.DocDef = queryData.DocumentId != null
                    ? _docDefRepo.Find(queryData.DocumentId ?? Guid.Empty)
                    : null;
            }
            else
            {
                var sourceData = item as QuerySourceDefData;
                if (sourceData != null)
                {
                    sourceData.DocDef = sourceData.DocumentId != null
                        ? _docDefRepo.DocDefById((Guid)sourceData.DocumentId)
                        : null;

                    sourceData.Query = sourceData.QueryId != null?FindQuery((Guid)sourceData.QueryId) : null;
                }
                else
                {
                    var conditionData = item as QueryConditionDefData;
                    if (conditionData != null)
                    {
                        Guid id;
                        if (!String.IsNullOrEmpty(conditionData.LeftSourceName))
                        {
                            if (Guid.TryParse(conditionData.LeftSourceName.Trim(), out id))
                            {
                                conditionData.LeftSourceId = id;

                                conditionData.LeftQuery = FindQuery(id);
                            }
                        }
                        if (!String.IsNullOrEmpty(conditionData.RightSourceName))
                        {
                            if (Guid.TryParse(conditionData.RightSourceName.Trim(), out id))
                            {
                                conditionData.RightSourceId = id;

                                conditionData.RightQuery = FindQuery(id);
                            }
                        }
                    }
                }
            }

            if (item.Items != null)
            {
                foreach (var sub in item.Items)
                {
                    InitQueryItem(sub);
                }
            }
        }
Пример #2
0
        private void AddToCache(QueryItemDefData result)
        {
            ObjectCache <QueryItemDefData> cache;

            if (!QueryDefCache.TryGetValue(DataContext.Name, out cache))
            {
                cache = new ObjectCache <QueryItemDefData>();
                QueryDefCache.TryAdd(DataContext.Name, cache);
            }
            cache.Add(result, result.Id);
        }
Пример #3
0
        private static string Serialize(QueryItemDefData item)
        {
            var serializer = new XmlSerializer(typeof(QueryItemDefData));

            using (var stream = new MemoryStream())
            {
                serializer.Serialize(stream, item);
                stream.Position = 0;
                using (var reader = new StreamReader(stream))
                    return(reader.ReadToEnd());
            }
        }
Пример #4
0
        public QueryItemDefData CheckItemChildrenPermissions(QueryItemDefData item, PermissionSet permissions)
        {
            if (item == null)
            {
                return(null);
            }

            if (item.Permissions == null)
            {
                return(item);
            }
            if (permissions == null)
            {
                return(item.Permissions.Items.Count > 0 ? null : item);
            }

            if (!permissions.IsSupersetOf(item.Permissions))
            {
                return(null);
            }

            if (item.Items == null)
            {
                return(item);
            }

            var removedItems = new List <QueryItemDefData>();

            foreach (var child in item.Items)
            {
                if (!permissions.IsSupersetOf(child.Permissions))
                {
                    removedItems.Add(child);
                }
                else
                {
                    CheckItemChildrenPermissions(child, permissions);
                }
            }

            foreach (var removing in removedItems)
            {
                item.Items.Remove(removing);
            }

            return(item);
        }
Пример #5
0
//        private

        private void AddQuerySourceChildren(QueryItemDefData result, Guid parentId)
        {
            if (result == null)
            {
                return;
            }

            if (result.Items == null)
            {
                result.Items = new List <QueryItemDefData>();
            }

            var en = DataContext.GetEntityDataContext().Entities;

            var children = en.Object_Defs_View
                           .Where(o => o.Parent_Id == parentId && (o.Deleted == null || o.Deleted == false))
                           .OrderBy(o => o.Order_Index).Select(o => o.Id).ToList();

            foreach (var childId in children)
            {
                var querySource = en.Object_Defs.OfType <Query_Source>().FirstOrDefault(c => c.Id == childId);
                if (querySource != null)
                {
                    var sub = CreateQuerySource(querySource);
                    if (sub != null)
                    {
                        result.Items.Add(sub);
                    }
                }

                var queryCondition = en.Object_Defs.OfType <Condition>().FirstOrDefault(c => c.Id == childId);
                if (queryCondition != null)
                {
                    var sub = CreateQueryCondition(queryCondition);
                    if (sub != null)
                    {
                        result.Items.Add(sub);
                    }
                }
            }
        }
Пример #6
0
 private QueryItemDefData Clone(QueryItemDefData item)
 {
     return(Deserialize(Serialize(item)));
 }
Пример #7
0
        public QueryItemDefData CheckItemPermissions(QueryItemDefData item)
        {
            var initItem = CheckItemChildrenPermissions(item, GetPermissions());

            return(initItem);
        }