コード例 #1
0
        /// <summary>
        /// Парсинг элемента (input/select) в FieldPackage
        /// </summary>
        /// <param name="label">Классификатор поля</param>
        /// <param name="element">Элемент для парсинга</param>
        /// <returns></returns>
        public override FieldPackage Parse(string label, HtmlElement element)
        {
            FieldPackage result = null;

            DCT.Execute(data =>
            {
                if (element.TagName.ToLower() == "select" ||
                    element.TagName.ToLower() == "input")
                {
                    var optionList = new List <OptionTag>();
                    if (element.TagName.ToLower() == "select" && !dynamicSelects.Contains(label))
                    {
                        var options = element.Children;
                        foreach (HtmlElement o in options)
                        {
                            var oValue = o.GetAttribute("value");
                            var oText  = o.InnerText;

                            optionList.Add(OptionTag.Create(oValue, oText));
                        }
                    }
                    var id = element.GetAttribute("id");
                    if (!string.IsNullOrEmpty(id))
                    {
                        result = FieldPackage.Create(id, element.TagName.ToLower(), true, optionList.ToArray());
                    }
                    else
                    {
                        var name = element.GetAttribute("name");
                        result   = FieldPackage.Create(name, element.TagName.ToLower(), false, optionList.ToArray());
                    }
                }
            });
            return(result);
        }
コード例 #2
0
        public static Dictionary <string, FieldPackage> GetAccessFields(Guid instanceId)
        {
            Dictionary <string, FieldPackage> result = new Dictionary <string, FieldPackage>();

            BCT.Execute(d =>
            {
                var dbInstance = d.BulletinDb.BulletinInstances.FirstOrDefault(q => q.Id == instanceId);
                var groupId    = dbInstance.GroupId;

                var groupedFields = d.BulletinDb.GroupedFields.Where(q => q.GroupId == groupId).ToArray();

                foreach (var gf in groupedFields)
                {
                    var accessId = gf.HtmlId;

                    var fieldId = gf.FieldId;
                    var dbField = d.BulletinDb.FieldTemplates.FirstOrDefault(q => q.Id == fieldId);
                    var name    = dbField.Name;
                    var tag     = dbField.Tag;
                    var hasId   = dbField.Attribute == "id";

                    var options    = d.BulletinDb.SelectOptions.Where(q => q.GroupedFieldId == gf.Id).ToArray();
                    var optionTags = new List <OptionTag>();
                    foreach (var o in options)
                    {
                        var optionTag = OptionTag.Create(o.Code, o.Name);
                        optionTags.Add(optionTag);
                    }
                    if (!result.ContainsKey(name))
                    {
                        result.Add(name, FieldPackage.Create(accessId, tag, hasId, optionTags.ToArray()));
                    }
                }
            });
            return(result);
        }
コード例 #3
0
        ///-------------------------------------------------------------------------------------------------
        /// <summary>  Получаем пакет группы с полям </summary>
        ///
        /// <remarks>   SV Milovanov, 02.02.2018. </remarks>
        ///
        /// <param name="hash"> Хэш группы </param>
        ///
        /// <returns>   Пакет группы (сигнатура + словарь полей) </returns>
        ///-------------------------------------------------------------------------------------------------

        public override GroupPackage GetGroupPackage(string hash)
        {
            GroupPackage result = null;

            DCT.Execute(data =>
            {
                var dbGroup = data.Db1.Groups.FirstOrDefault(q => q.Hash == hash);
                if (dbGroup != null)
                {
                    var groupSignature = GetGroupSignature(hash);
                    var groupedFields  = data.Db1.GroupedFields.Where(q => q.GroupId == dbGroup.Id).AsEnumerable();
                    var fieldTemplates = data.Db1.FieldTemplates.Where(q => groupedFields.Select(qq => qq.FieldId).Contains(q.Id)).AsEnumerable()
                                         .Select(q => new { htmlId = groupedFields.FirstOrDefault(qq => qq.FieldId == q.Id).HtmlId, package = q, groupedId = groupedFields.FirstOrDefault(qq => qq.FieldId == q.Id).Id }).ToArray();
                    var optionTags = data.Db1.SelectOptions.Where(q => groupedFields.Select(qq => qq.Id).Contains(q.GroupedFieldId)).AsEnumerable();
                    result         = new GroupPackage
                    {
                        Fields     = fieldTemplates.ToDictionary(q1 => q1.package.Name, q2 => FieldPackage.Create(q2.htmlId, q2.package.Tag, q2.package.Attribute == "id", optionTags.Where(q => q.GroupedFieldId == q2.groupedId).Select(q => OptionTag.Create(q)).ToArray())),
                        Categories = groupSignature.GetCategories(),
                    };
                }
            });
            return(result);
        }