public static ModelType CreateFrom(Template template)
        {
            var t = new ModelType
            {
                Name              = string.Format(ModelData.TemplateBaseSubNamePattern, template.FormId),
                SuperName         = ModelData.TemplateBaseTypeName,
                OwnMetaCategories = null
            };

            var sections = template.Sections ?? new List <TemplateSection>();

            foreach (var section in sections)
            {
                t.OwnMetaCategories = t.OwnMetaCategories ?? new List <ModelTypeMetaCategory>();
                var category = ModelTypeMetaCategory.CreateFrom(section);
                t.OwnMetaCategories.Add(category);
            }

            return(t);
        }
        public static ModelType CreateFrom(JProperty typeProperty)
        {
            var t = new ModelType
            {
                Name              = typeProperty.Name,
                SuperName         = JsonHelper.FindTokenValue <string>(typeProperty, ModelData.TypesSuperKey, true),
                OwnMetaCategories = null
            };

            var categories = JsonHelper.FindToken(typeProperty.Value, ModelData.TypesMetaKey, true);

            if (categories != null)
            {
                foreach (JProperty categoryProperty in categories.Children())
                {
                    t.OwnMetaCategories = t.OwnMetaCategories ?? new List <ModelTypeMetaCategory>();
                    var category = ModelTypeMetaCategory.CreateFrom(categoryProperty);
                    t.OwnMetaCategories.Add(category);
                }
            }

            return(t);
        }