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); } } }
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); }
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()); } }
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); }
// 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); } } } }
private QueryItemDefData Clone(QueryItemDefData item) { return(Deserialize(Serialize(item))); }
public QueryItemDefData CheckItemPermissions(QueryItemDefData item) { var initItem = CheckItemChildrenPermissions(item, GetPermissions()); return(initItem); }