private ComponentViewData CreateMainComponentViewData(RepositoryInfo repositoryInfo, IEasyCrudRepository dataRepository, string id) { var componentViewData = new ComponentViewData(); var fieldsViewData = repositoryInfo.Columns.Select(CreateFieldViewData).ToList(); var criteria = new Criteria { Columns = fieldsViewData.Select(f => f.Column).ToList() }; componentViewData.Title = repositoryInfo.Label; componentViewData.Fields = fieldsViewData; if (id == null) { var entities = dataRepository.List(criteria); componentViewData.Entities = entities.Select(e => new EntityViewData { Id = e.Id, Data = e.Data }).ToList(); } return(componentViewData); }
private List <ComponentViewData> CreateChildrenComponentViewData(RepositoryInfo repositoryInfo, IEasyCrudRepository dataRepository, string id) { var viewDatas = new List <ComponentViewData>(); var components = repositoryInfo.Type.GetProperties().Where(p => Attribute.IsDefined(p, typeof(BaseComponentAttribute), true)); foreach (var component in components) { if (component.PropertyType.GetGenericTypeDefinition() != typeof(ICollection <>)) { throw new PropertyConfigurationException($"Property '{component.Name}', with ComponentAttribute, is not an ICollection<>"); } var componentAttribute = component.GetCustomAttribute <BaseAttribute>(true); var componentType = component.PropertyType.GenericTypeArguments.First(); viewDatas.Add(CreateChildComponentViewData(componentType, componentAttribute.Label, componentAttribute.Order)); } return(viewDatas); }