/// <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);
        }
 void SetRadio(HtmlElement form, string value, FieldPackage package)
 {
     DCT.Execute(data =>
     {
         if (package.Options != null && package.Options.Length > 0)
         {
             var option = package.Options.FirstOrDefault(q => q.Text == value);
             var code   = option.Value;
             form.SetAttribute("value", code);
         }
     });
 }
 void SetSelect(IWebElement element, string value, FieldPackage package)
 {
     DCT.Execute(d =>
     {
         if (package.Options != null && package.Options.Length > 0)
         {
             var options = package.Options.FirstOrDefault(q => q.Text == value);
             var code    = options.Value;
             element.SendKeys(code);
         }
     });
 }
Example #4
0
        ///-------------------------------------------------------------------------------------------------
        /// <summary>   Parse main component. </summary>
        ///
        /// <remarks>   SV Milovanov, 30.01.2018. </remarks>
        ///-------------------------------------------------------------------------------------------------

        void ParseMainComponent()
        {
            _DCT.Execute(data =>
            {
                //Title
                var nameLabel = GetByTag("label", q => q.InnerText == "Название объявления");
                var nameInput = GetByTag("input", q => q.GetAttribute("id") == "item-edit__title");
                fields.Add(nameLabel.InnerText, FieldPackage.Create("item-edit__title", "input", true));

                //Description
                var descLabel = GetByTag("label", q => q.InnerText == "Описание объявления");
                var descInput = GetByTag("textarea", q => q.GetAttribute("id") == "item-edit__description");
                fields.Add(descLabel.InnerText, FieldPackage.Create("item-edit__description", "textarea", true));
            });
        }
        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);
        }
Example #6
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);
        }