Пример #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 DocDef FindControlAttributeDocDef(BizControl control, DocDef parentDocDef, Guid attrId)
        {
            var docControl = control as BizDocumentControl;

            if (docControl != null)
            {
                if (docControl.AttributeDefId != null)
                {
                    var docControlAttrDef = parentDocDef.Attributes.FirstOrDefault(a => a.Id == (Guid)docControl.AttributeDefId);
                    if (docControlAttrDef != null && docControlAttrDef.DocDefType != null)
                    {
                        var docDef = _docDefRepo.Find(docControlAttrDef.DocDefType.Id);
                        if (docDef != null)
                        {
                            if (docDef.Attributes.FirstOrDefault(a => a.Id == attrId) != null)
                            {
                                return(docDef);
                            }

                            if (docControl.Children != null)
                            {
                                foreach (var child in control.Children)
                                {
                                    var attrDocDef = FindControlAttributeDocDef(child, docDef, attrId);
                                    if (attrDocDef != null)
                                    {
                                        return(attrDocDef);
                                    }
                                }
                            }
                        }
                    }
                }
            }
            else
            {
                var docList = control as BizDocumentListForm;
                if (docList != null)
                {
                    if (docList.AttributeDefId != null)
                    {
                        var docListAttrDef = parentDocDef.Attributes.FirstOrDefault(a => a.Id == (Guid)docList.AttributeDefId);
                        if (docListAttrDef != null && docListAttrDef.DocDefType != null)
                        {
                            var docDef = _docDefRepo.Find(docListAttrDef.DocDefType.Id);
                            if (docDef != null)
                            {
                                if (docDef.Attributes.FirstOrDefault(a => a.Id == attrId) != null)
                                {
                                    return(docDef);
                                }

                                if (docList.Children != null)
                                {
                                    foreach (var child in control.Children)
                                    {
                                        var attrDocDef = FindControlAttributeDocDef(child, docDef, attrId);
                                        if (attrDocDef != null)
                                        {
                                            return(attrDocDef);
                                        }
                                    }
                                }
                            }
                        }
                    }
                    else
                    {
                        var dlForm = docList.TableForm ??
                                     (docList.FormId != null ? _formRepo.FindTableForm((Guid)docList.FormId) : null);

                        if (dlForm != null && dlForm.DocumentDefId != null)
                        {
                            var docDef = _docDefRepo.Find((Guid)dlForm.DocumentDefId);
                            if (docDef != null)
                            {
                                if (docDef.Attributes.FirstOrDefault(a => a.Id == attrId) != null)
                                {
                                    return(docDef);
                                }

                                if (dlForm.Children != null)
                                {
                                    foreach (var child in dlForm.Children)
                                    {
                                        var attrDocDef = FindControlAttributeDocDef(child, docDef, attrId);
                                        if (attrDocDef != null)
                                        {
                                            return(attrDocDef);
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
                else
                {
                    var tableColumn = control as BizTableColumn;
                    if (tableColumn != null && tableColumn.AttributeDefId != null)
                    {
                        var tableColumnAttrDef = parentDocDef.Attributes.FirstOrDefault(a => a.Id == (Guid)tableColumn.AttributeDefId);
                        if (tableColumnAttrDef != null && tableColumnAttrDef.DocDefType != null)
                        {
                            var docDef = _docDefRepo.Find(tableColumnAttrDef.DocDefType.Id);
                            if (docDef != null)
                            {
                                if (docDef.Attributes.FirstOrDefault(a => a.Id == attrId) != null)
                                {
                                    return(docDef);
                                }

                                if (tableColumn.Children != null)
                                {
                                    foreach (var child in tableColumn.Children)
                                    {
                                        var attrDocDef = FindControlAttributeDocDef(child, docDef, attrId);
                                        if (attrDocDef != null)
                                        {
                                            return(attrDocDef);
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
            return(null);
        }