public DynamicIndexMobileItemViewModel BuildMobileItemViewModel(DynamicEntityMetadata dynamicEntityMetadata, RouteValueDictionaryWrapper routeValueDictionaryWrapper, dynamic item) { var dynamicIndexMobileItemViewModel = new DynamicIndexMobileItemViewModel(); dynamicIndexMobileItemViewModel.ShowDelete = dynamicEntityMetadata.ShowDelete(); dynamicIndexMobileItemViewModel.ShowEdit = dynamicEntityMetadata.ShowEdit(); dynamicIndexMobileItemViewModel.ShowDetails = dynamicEntityMetadata.ShowDetails(); dynamicIndexMobileItemViewModel.Item = item; IEnumerable <DynamicPropertyIndexViewModel> properties = GetDynamicPropertyViewModels(dynamicEntityMetadata, item); var defaultpropertyName = dynamicEntityMetadata.DefaultProperty().PropertyName(); var defaultDynamicProperty = properties.SingleOrDefault(x => x.PropertyName == defaultpropertyName); var entityName = dynamicEntityMetadata.TypeName(); foreach (var dynamicPropertyIndexViewModel in properties.Where(x => x.PropertyName != defaultpropertyName).ToList()) { dynamicIndexMobileItemViewModel.DynamicPropertyIndexViewModels.Add(dynamicPropertyIndexViewModel); } if (defaultDynamicProperty != null) { dynamicIndexMobileItemViewModel.DefaultDynamicPropertyViewModel = defaultDynamicProperty; } dynamicIndexMobileItemViewModel.EntityName = entityName; dynamicIndexMobileItemViewModel.TypeName = dynamicEntityMetadata.TypeName(); var rv = routeValueDictionaryWrapper.Clone(); rv.SetValue("Id", dynamicEntityMetadata.KeyProperty().GetValueFunction()(item).ToString()); dynamicIndexMobileItemViewModel.RouteValueDictionaryWrapper = rv; return(dynamicIndexMobileItemViewModel); }
public string GetForiegnKeyNameByCollectionProperty(DynamicEntityMetadata dynamicEntityMetadata, string typeName, DynamicCollectionEntityPropertyMetadata dynamicCollectionEntityPropertyMetadata) { if (dynamicCollectionEntityPropertyMetadata.InverseProperty == null) { var complexProperties = dynamicEntityMetadata.DynamicPropertyMetadatas.Where(x => x.TypeName() == typeName).ToList(); if (complexProperties.Count == 1) { return(_namingConventionManager.GetForiegnKeyByComplexProperty(dynamicEntityMetadata.TypeName(), complexProperties.First().PropertyName())); } if (complexProperties.Count == 0) { throw new Exception("GetForiegnKeyNameByCollectionProperty could not find complex property for " + dynamicCollectionEntityPropertyMetadata.PropertyName() + " inside " + typeName); } else { throw new Exception("GetForiegnKeyNameByCollectionProperty could not find complex property for " + dynamicCollectionEntityPropertyMetadata.PropertyName() + " because two or more " + typeName + " exists"); } } else { var fkName = _namingConventionManager.GetForiegnKeyByComplexProperty(dynamicEntityMetadata.TypeName(), dynamicCollectionEntityPropertyMetadata.InverseProperty); if (dynamicEntityMetadata.DynamicPropertyMetadatas.All(x => x.PropertyName() != fkName)) { throw new Exception("GetForiegnKeyNameByCollectionProperty could not find inverse property for " + dynamicCollectionEntityPropertyMetadata.InverseProperty); } return(fkName); } }
public DynamicDeleteViewModel Build(DynamicEntityMetadata dynamicEntityMetadata, dynamic deleteModel, string returnUrl) { var dynamicDeleteViewModel = new DynamicDeleteViewModel(); dynamicDeleteViewModel.TypeName = dynamicEntityMetadata.TypeName(); dynamicDeleteViewModel.Header = "Delete " + dynamicEntityMetadata.TypeName(); dynamicDeleteViewModel.ReturnUrl = returnUrl; return(dynamicDeleteViewModel); }
public DynamicIndexPageViewModel Build(DynamicEntityMetadata dynamicEntityMetadata) { var dynamicIndexPageViewModel = new DynamicIndexPageViewModel(); var routeValuesDictionary = _requestManager.QueryStringDictionary; _requestManager.CorrectQuerystringTypes(dynamicEntityMetadata); var dynamicFilterViewModels = _dynamicFilterManager.GetFilterPropertyViewModels(dynamicEntityMetadata, routeValuesDictionary); var filters = dynamicFilterViewModels.Select(x => (Func <IQueryable, IQueryable>)x.FilterModel.Filter).ToList(); _pagingManager.SetFilters(dynamicEntityMetadata, filters); _pagingManager.ValidatePagingParameters(routeValuesDictionary); var models = _pagingManager.GetItems(dynamicEntityMetadata, routeValuesDictionary); dynamicIndexPageViewModel.RouteValueDictionaryWrapper = routeValuesDictionary; dynamicIndexPageViewModel.RouteValueDictionaryWrapper.SetValue("ReturnUrl", _returnUrlManager.GetReturnUrl("Index", dynamicEntityMetadata.TypeName(), routeValuesDictionary, true)); dynamicIndexPageViewModel.NextClassName = _pagingManager.NextClassName(routeValuesDictionary); dynamicIndexPageViewModel.PreviousClassName = _pagingManager.PreviousClassName(routeValuesDictionary); dynamicIndexPageViewModel.PagingMessage = _pagingManager.PagingMessage(routeValuesDictionary); dynamicIndexPageViewModel.ShowCreate = dynamicEntityMetadata.ShowCreate(); dynamicIndexPageViewModel.ShowEdit = dynamicEntityMetadata.ShowEdit(); dynamicIndexPageViewModel.ShowDelete = dynamicEntityMetadata.ShowDelete(); dynamicIndexPageViewModel.ShowDetails = dynamicEntityMetadata.ShowDetails(); dynamicIndexPageViewModel.TypeName = dynamicEntityMetadata.TypeName(); dynamicIndexPageViewModel.DynamicPropertyIndexViewModels = GetDynamicPropertyViewModels(dynamicEntityMetadata, null).ToList(); var defaultpropertyName = dynamicEntityMetadata.DefaultProperty().PropertyName(); var defaultDynamicProperty = dynamicIndexPageViewModel.DynamicPropertyIndexViewModels.SingleOrDefault(x => x.PropertyName == defaultpropertyName); if (defaultDynamicProperty != null) { dynamicIndexPageViewModel.AllowSort = true; dynamicIndexPageViewModel.DefaultPropertyName = defaultpropertyName; dynamicIndexPageViewModel.DefaultPropertySortExpression = defaultDynamicProperty.SortExpression; } //table header items foreach (var dynamicPropertyIndexViewModel in dynamicIndexPageViewModel.DynamicPropertyIndexViewModels) { var dynamicTableHeaderViewModel = new DynamicTableHeaderViewModel(dynamicPropertyIndexViewModel, routeValuesDictionary, dynamicEntityMetadata.TypeName()); dynamicIndexPageViewModel.DynamicTableHeaderViewModels.Add(dynamicTableHeaderViewModel); } //new view model items foreach (var model in models) { var itemViewModel = BuildItemViewModel(dynamicEntityMetadata, routeValuesDictionary, model); dynamicIndexPageViewModel.DynamicIndexItemViewModels.Add(itemViewModel); var mobileItemViewModel = BuildMobileItemViewModel(dynamicEntityMetadata, routeValuesDictionary, model); dynamicIndexPageViewModel.DynamicIndexMobileItemViewModels.Add(mobileItemViewModel); } return(dynamicIndexPageViewModel); }
public DynamicPropertyMetadata GetCollectionProperty(DynamicEntityMetadata dynamicEntityMetadata, DynamicPropertyMetadata dynamicPropertyMetadata) { var collectionProperties = dynamicEntityMetadata.DynamicPropertyMetadatas.Where(x => x.IsDynamicCollection() && x.TypeName() == dynamicEntityMetadata.TypeName()).Select(x => (DynamicCollectionEntityPropertyMetadata)x).ToList(); if (collectionProperties.Count == 0) { return(null); } if (collectionProperties.Count == 1) { return(collectionProperties.First()); } collectionProperties = collectionProperties.Where(x => x.InverseProperty != null && x.InverseProperty == dynamicPropertyMetadata.PropertyName()).ToList(); if (collectionProperties.Count == 1) { return(collectionProperties.First()); } if (collectionProperties.Count == 0) { return(null); } throw new Exception("Collection cannot be found in entity " + dynamicEntityMetadata.TypeName() + " for property " + dynamicPropertyMetadata.TypeName()); }
public DynamicForiegnKeyPropertyMetadata GetDynamicForiegnKeyPropertyMetadata(DynamicEntityMetadata dynamicEntityMetadata, DynamicComplexPropertyMetadata dynamicComplexPropertyMetadata) { var dynamicForiegnKeyPropertyMetadatas = dynamicEntityMetadata.DynamicPropertyMetadatas.Where(x => x.GetType() == typeof(DynamicForiegnKeyPropertyMetadata)).Select(x => (DynamicForiegnKeyPropertyMetadata)x).ToList(); dynamicForiegnKeyPropertyMetadatas = dynamicForiegnKeyPropertyMetadatas .Where(x => x.ComplexEntityPropertyMetadata.TypeName() == dynamicComplexPropertyMetadata.TypeName()).ToList(); if (dynamicForiegnKeyPropertyMetadatas.Count == 0) { throw new Exception("Dynamic Foriegn key cannot be found in entity " + dynamicEntityMetadata.TypeName() + " for property " + dynamicComplexPropertyMetadata.TypeName()); } if (dynamicForiegnKeyPropertyMetadatas.Count == 1) { return(dynamicForiegnKeyPropertyMetadatas.First()); } dynamicForiegnKeyPropertyMetadatas = dynamicForiegnKeyPropertyMetadatas.Where(x => x.PropertyName().Contains(dynamicComplexPropertyMetadata.PropertyName())).ToList(); if (dynamicForiegnKeyPropertyMetadatas.Count == 1) { return(dynamicForiegnKeyPropertyMetadatas.First()); } throw new Exception("Dynamic Foriegn key cannot be found in entity " + dynamicEntityMetadata.TypeName() + " for property " + dynamicComplexPropertyMetadata.TypeName() + " because key property name does not contain complex property name"); }
public DynamicIndexViewModel Build(DynamicEntityMetadata dynamicEntityMetadata) { var dynamicIndexViewModel = new DynamicIndexViewModel(); var routeValueDictionary = _requestManager.QueryStringDictionary; _requestManager.CorrectQuerystringTypes(dynamicEntityMetadata); dynamicIndexViewModel.RouteValueDictionaryWrapper = routeValueDictionary; dynamicIndexViewModel.Header = dynamicEntityMetadata.IndexHeader(); dynamicIndexViewModel.TypeName = dynamicEntityMetadata.TypeName(); dynamicIndexViewModel.FilterMessage = _dynamicFilterManager.GetFilterMessage(dynamicEntityMetadata, routeValueDictionary); var filters = _dynamicFilterManager.GetFilterPropertyViewModels(dynamicEntityMetadata, routeValueDictionary).ToList(); dynamicIndexViewModel.DynamicIndexFiltersViewModel = new DynamicIndexFiltersViewModel(dynamicEntityMetadata.TypeName(), routeValueDictionary, filters); return(dynamicIndexViewModel); }
public DynamicDetailsViewModel Build(DynamicEntityMetadata dynamicEntityMetadata, dynamic detailModel) { var dynamicDetailsViewModel = new DynamicDetailsViewModel(); dynamicDetailsViewModel.TypeName = dynamicEntityMetadata.TypeName(); dynamicDetailsViewModel.Header = dynamicEntityMetadata.DetailsHeader(); dynamicDetailsViewModel.Item = detailModel; dynamicDetailsViewModel.DynamicUIMethods = dynamicEntityMetadata.GetDynamicMethods(TemplateTypeEnum.Details).ToList(); foreach (var dynamicPropertyEditorViewModel in GetDynamicPropertyViewModels(dynamicEntityMetadata, detailModel)) { var dynamicEditorViewModel = new DynamicEditorViewModel(); dynamicEditorViewModel.ViewModelPropertyName = dynamicPropertyEditorViewModel.ViewModelPropertyName; dynamicEditorViewModel.DynamicEditorName = dynamicPropertyEditorViewModel.DynamicEditorName; dynamicEditorViewModel.DynamicPropertyEditorViewModel = dynamicPropertyEditorViewModel; dynamicDetailsViewModel.DynamicEditorViewModels.Add(dynamicEditorViewModel); } return(dynamicDetailsViewModel); }
public DynamicCreateViewModel Build(DynamicEntityMetadata dynamicEntityMetadata, dynamic createModel, string returnUrl) { var dynamicCreateViewModel = new DynamicCreateViewModel(); dynamicCreateViewModel.Header = dynamicEntityMetadata.CreateHeader(); dynamicCreateViewModel.TypeName = dynamicEntityMetadata.TypeName(); dynamicCreateViewModel.ReturnUrl = returnUrl; dynamicCreateViewModel.Item = createModel; dynamicCreateViewModel.DynamicUIMethods = dynamicEntityMetadata.GetDynamicMethods(TemplateTypeEnum.Create).ToList(); foreach (var dynamicPropertyEditorViewModel in GetDynamicPropertyViewModels(dynamicEntityMetadata, createModel)) { var dynamicEditorViewModel = new DynamicEditorViewModel(); dynamicEditorViewModel.ViewModelPropertyName = dynamicPropertyEditorViewModel.ViewModelPropertyName; dynamicEditorViewModel.DynamicEditorName = dynamicPropertyEditorViewModel.DynamicEditorName; dynamicEditorViewModel.DynamicPropertyEditorViewModel = dynamicPropertyEditorViewModel; dynamicCreateViewModel.DynamicEditorViewModels.Add(dynamicEditorViewModel); } return(dynamicCreateViewModel); }
public DynamicIndexItemViewModel BuildItemViewModel(DynamicEntityMetadata dynamicEntityMetadata, RouteValueDictionaryWrapper routeValueDictionaryWrapper, dynamic item) { var dynamicIndexItemViewModel = new DynamicIndexItemViewModel(); dynamicIndexItemViewModel.ShowDelete = dynamicEntityMetadata.ShowDelete(); dynamicIndexItemViewModel.ShowEdit = dynamicEntityMetadata.ShowEdit(); dynamicIndexItemViewModel.ShowDetails = dynamicEntityMetadata.ShowDetails(); dynamicIndexItemViewModel.Item = item; dynamicIndexItemViewModel.TypeName = dynamicEntityMetadata.TypeName(); var rv = routeValueDictionaryWrapper.Clone(); rv.SetValue("Id", dynamicEntityMetadata.KeyProperty().GetValueFunction()(item).ToString()); dynamicIndexItemViewModel.RouteValueDictionaryWrapper = rv; IEnumerable <DynamicPropertyIndexViewModel> properties = GetDynamicPropertyViewModels(dynamicEntityMetadata, item); foreach (var property in properties) { dynamicIndexItemViewModel.DynamicPropertyIndexViewModels.Add(property); } return(dynamicIndexItemViewModel); }
public string Validate(DynamicEntityMetadata dynamicEntityMetadata) { if (dynamicEntityMetadata.ScaffoldIndexProperties() == null) { return("ScaffoldIndexProperties should not be null for DynamicEntity " + dynamicEntityMetadata.TypeName()); } return(null); }