public IEnumerable <TaxonomyTypeViewModel> GetTaxonomiesTypeViewModels(long?entityTypeId = null, bool includeTaxonomies = false) { var taxonomytypes = new List <TaxonomyType>(); if (entityTypeId != null) { taxonomytypes.AddRange(GetTaxonomyTypesForEntityType(entityTypeId ?? 0)); } else { taxonomytypes = _taxTypeEntityHelper.Entities().ToList(); } var result = new List <TaxonomyTypeViewModel>(); foreach (var taxonomyType in taxonomytypes) { var details = _taxTypeEntityHelper.GetDetails(taxonomyType); var entityType = _entityTypeManager.GetEntityType(taxonomyType.EntityTypeId ?? 0); var entityTypeDetails = _entityTypeManager.GetEntityTypeDetails(entityType); var viewModel = new TaxonomyTypeViewModel { Id = taxonomyType.Id, Name = taxonomyType.Name, Title = details.FirstOrDefault(o => o.Field == "title")?.Value, EntityTypeGroup = entityTypeDetails.FirstOrDefault(o => o.Field == "group")?.Value, EntityType = entityTypeDetails.FirstOrDefault(o => o.Field == "title")?.Value }; if (includeTaxonomies) { var taxonomies = GetTaxonomies(viewModel.Id, true); viewModel.Taxonomies = taxonomies.Select(o => new TaxonomyViewModel { Id = o.Id, Name = o.Name, ParentId = o.ParentId, Title = o.Details.FirstOrDefault(d => d.Field == "title").Value }); } result.Add(viewModel); } return(result); }