Example #1
0
        static void GetChildCategory(CategoryTree tree, List <string> categories, List <GroupPackage> groups)
        {
            DCT.Execute(data =>
            {
                categories.Add(tree.Name);

                if (tree.Children != null && tree.Children.Count == 0)
                {
                    var group = new GroupPackage(categories.ToArray());
                    groups.Add(group);
                    categories.Remove(tree.Name);
                    return;
                }
                foreach (var c in tree.Children)
                {
                    GetChildCategory(c, categories, groups);
                }
                categories.Remove(tree.Name);
            });
        }
Example #2
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);
        }