Пример #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
        public SqlQueryDocSource(IAppServiceProvider provider, /*IDataContext dataContext,*/ Guid docDefId, string alias)
            : base(alias)
        {
            Provider = provider;
            //DataContext = dataContext;
            //using (var docDefRepo = new DocDefRepository(DataContext))

            _docDefRepo = Provider.Get <IDocDefRepository>();
            _mapper     = Provider.Get <IDocumentTableMapRepository>();
            _userRepo   = Provider.Get <IUserRepository>();

            Source = _docDefRepo.DocDefById(docDefId);
        }
Пример #3
0
        public BizDocumentControl CreateDocumentControl(DocumentControl docControl, DocDef def)
        {
//            if (!docControl.Attribute_DefsReference.IsLoaded) docControl.Attribute_DefsReference.Load();
//            if (docControl.Attribute_Defs == null) return null;

            AttrDef attrDef = null;

            if (def != null)
            {
                if (docControl.Attribute_Id != null)
                {
                    attrDef = def.Attributes.FirstOrDefault(a => a.Id == docControl.Attribute_Id);
                }
                else
                if (!String.IsNullOrEmpty(docControl.Attribute_Name))
                {
                    attrDef =
                        def.Attributes.FirstOrDefault(
                            a => String.Equals(a.Name, docControl.Attribute_Name ?? String.Empty, StringComparison.OrdinalIgnoreCase));
                }
            }

            var result = new BizDocumentControl
            {
                AttributeDefId = attrDef != null ? attrDef.Id : (Guid?)null,                   //docControl.Attribute_Defs.Id,
                AttributeName  = attrDef != null ? attrDef.Name : String.Empty,                // AttributeName = docControl.Attribute_Name,
                FormId         = docControl.Form_Id
            };

            if (attrDef != null && attrDef.DocDefType != null)
            {
                var nestDef = _docDefRepo.DocDefById(attrDef.DocDefType.Id);

                AddChildren(result, docControl, nestDef);
            }
            InitControl(result, docControl);

            return(result);
        }
Пример #4
0
 public Doc New(Guid docDefId)
 {
     return(New(_docDefRepo.DocDefById(docDefId)));
 }
Пример #5
0
        /// <summary>
        /// Десериализует документ
        /// </summary>
        /// <param name="xmlDoc">Строка содержащая xml сериализованного документа</param>
        /// <returns>Список Документов восстановленных из xml</returns>

        public IList <Doc> DeSerialize(string xmlDoc)
        {
            var xDocument = XDocument.Parse(xmlDoc);

            var docList = new List <Doc>();

            if (xDocument.Root == null)
            {
                return(docList);
            }

            foreach (XElement xElementDoc in xDocument.Root.Elements())
            {
                XAttribute xDocId   = xElementDoc.Attribute("Id");
                XAttribute xDocName = xElementDoc.Attribute("Name");

                if (xDocId == null && xDocName == null)
                {
                    throw new ApplicationException("Тип документа не указан");
                }

                DocDef docDef = xDocId == null?
                                _docDefRepository.DocDefByName(xDocName.Value) :
                                    _docDefRepository.DocDefById(Guid.Parse(xDocId.Value));

                var doc = new Doc
                {
                    Id         = Guid.NewGuid(),
                    DocDef     = docDef,
                    Attributes = new List <AttributeBase>()
                };


                foreach (XElement xElementAttr in xElementDoc.Elements())
                {
                    XAttribute xElementId   = xElementAttr.Attribute("Id");
                    XAttribute xElementName = xElementAttr.Attribute("Name");

                    if (xElementId == null && xElementName == null)
                    {
                        throw new ApplicationException("Невозможно определить атрибут");
                    }

                    var atr = xElementId == null
                                  ? _attributeRepository.CreateAttribute(docDef.GetByName(xElementName.Value))
                                  : _attributeRepository.CreateAttribute(docDef.GetById(Guid.Parse(xElementId.Value)));

                    //                        _attributeRepository.GetAttributeByName(xElementName.Value, doc.DocDef.Id) :
                    //                    _attributeRepository.GetAttributeById(Guid.Parse(xElementId.Value), Guid.Empty);


                    int typeId = atr.AttrDef.Type.Id;

                    switch (typeId)
                    {
                    case (short)CissaDataType.Enum:
                        var enumId = atr.AttrDef.EnumDefType.Id;
                        atr.ObjectValue = _enumRepository.GetEnumValueId(enumId, xElementAttr.Value);
                        break;

                    case (short)CissaDataType.Doc:
                        break;

                    case (short)CissaDataType.DocList:
                        break;

                    default:
                        atr.ObjectValue = xElementAttr.Value;
                        break;
                    }

                    //string attributeDefId = xElementAttr.Attribute("Id").Value;
                    //string attributeDefName = xElementAttr.Attribute("AttributeDefName").Value;

                    doc.Attributes.Add(atr);
                }

                docList.Add(doc);
            }

            return(docList);
        }
Пример #6
0
        public List <EnumValue> GetEnumDocumentValues(BizComboBox combo, DocDef detailDocDef, Guid?userId)
        {
            var list = new List <EnumValue>();

            if (detailDocDef == null)
            {
                return(list);
            }
            //var defRepo = new DocDefRepository(context);
            var docDef = _docDefRepo.DocDefById(detailDocDef.Id);

            AttrDef detailAttrDef;

            if (combo.DetailAttributeId != null)
            {
                detailAttrDef = docDef.Attributes.FirstOrDefault(ad => ad.Id == combo.DetailAttributeId);
            }
            else
            {
                detailAttrDef =
                    docDef.Attributes.FirstOrDefault(
                        ad => String.Equals(ad.Name, combo.DetailAttributeName, StringComparison.OrdinalIgnoreCase));
                if (detailAttrDef == null)
                {
                    detailAttrDef =
                        docDef.Attributes.FirstOrDefault(
                            ad => ad.Type.Id == (int)CissaDataType.Text);
                }
            }

            if (detailAttrDef == null)
            {
                return(list);
            }

            var sqb = _sqlQueryBuilderFactory.Create();

            // using (var query = userId != null ? new SqlQuery(context, docDef, (Guid)userId) : new SqlQuery(context, docDef))
            // using (var query = sqb.Build(docDef.Id, null, null))
            using (var query = sqb.Build(combo, docDef.Id))
            {
                query.AddAttribute("&Id");
                query.AddAttribute(detailAttrDef.Id);
                query.AddOrderAttribute(detailAttrDef.Id);
                using (var reader = _sqlQueryReaderFactory.Create(query)) //new SqlQueryReader(context, query))
                {
                    while (reader.Read())
                    {
                        var detail = !reader.IsDbNull(1) ? reader.GetString(1) : String.Empty;

                        list.Add(new EnumValue
                        {
                            Id           = reader.GetGuid(0),
                            Value        = detail,
                            DefaultValue = detail
                        });
                    }
                }
            }

            return(list);
        }