public DynamicPropertyEditorViewModel BuildDynamicPropertyEditorViewModelForEdit(DynamicPropertyMetadata dynamicPropertyMetadata) { var dynamicPropertyViewModel = new DynamicPropertyEditorViewModel(dynamicPropertyMetadata); dynamicPropertyViewModel.ViewModelPropertyName = "Item." + dynamicPropertyMetadata.PropertyName(); //assign editor if (!string.IsNullOrWhiteSpace(dynamicPropertyMetadata.UIHint())) { dynamicPropertyViewModel.DynamicEditorName = dynamicPropertyMetadata.UIHint(); } else if (dynamicPropertyMetadata.DataType() == DataType.MultilineText) { dynamicPropertyViewModel.DynamicEditorName = "DynamicEditorMultiLine"; } else if (dynamicPropertyMetadata.DataType() == DataType.Password) { dynamicPropertyViewModel.DynamicEditorName = "DynamicEditorPassword"; } else if (dynamicPropertyMetadata is DynamicForiegnKeyPropertyMetadata) { var dynamicForiegnKeyPropertyMetadata = ((DynamicForiegnKeyPropertyMetadata)dynamicPropertyMetadata); var dropdownType = dynamicForiegnKeyPropertyMetadata.ComplexDynamicEntityMetadata.EntityTypeFunction()(); if (_dynamicRepository.GetItemsCount(dropdownType) > _dynamicMvcManager.Options.DynamicDropDownRecordLimit) { dynamicPropertyViewModel.DynamicEditorName = "DynamicEditorAutoComplete"; } else { dynamicPropertyViewModel.DynamicEditorName = "DynamicEditorDropDown"; } } else if (dynamicPropertyMetadata.SimpleTypeEnum() == SimpleTypeEnum.DateTime) { dynamicPropertyViewModel.DynamicEditorName = "DynamicEditorDateTime"; } else if (dynamicPropertyMetadata.SimpleTypeEnum() == SimpleTypeEnum.DateTimeNullable) { dynamicPropertyViewModel.DynamicEditorName = "DynamicEditorDateTime"; } else if (dynamicPropertyMetadata.SimpleTypeEnum() == SimpleTypeEnum.Bool) { dynamicPropertyViewModel.DynamicEditorName = "DynamicEditorBool"; } else if (dynamicPropertyMetadata.SimpleTypeEnum() == SimpleTypeEnum.BoolNullable) { dynamicPropertyViewModel.DynamicEditorName = "DynamicEditorBoolNullable"; } else { dynamicPropertyViewModel.DynamicEditorName = "DynamicEditor"; } return(dynamicPropertyViewModel); }
public IEnumerable <DynamicFilterViewModel> GetFilterPropertyViewModels(DynamicEntityMetadata dynamicEntityMetadata, RouteValueDictionaryWrapper routeValueDictionaryWrapper) { var dynamicFilterViewModels = new List <DynamicFilterViewModel>(); //add default filters foreach (var dynamicPropertyMetadata in dynamicEntityMetadata.DynamicPropertyMetadatas.Where(x => !x.IsDynamicCollection)) { if (dynamicPropertyMetadata.HasDynamicFilterUIAttribute) { continue; //explicit filters will be added later } if (dynamicPropertyMetadata is DynamicForiegnKeyPropertyMetadata && !dynamicPropertyMetadata.ListFilterIndexHide) { var dynamicPropertyViewModel = new DynamicFilterViewModel(dynamicPropertyMetadata); var dynamicForiegnKeyPropertyMetadata = ((DynamicForiegnKeyPropertyMetadata)dynamicPropertyMetadata); var dropdownType = dynamicForiegnKeyPropertyMetadata.ComplexDynamicEntityMetadata.EntityType; if (_dynamicRepository.GetItemsCount(dropdownType) > _dynamicMvcManager.Options.DynamicDropDownRecordLimit) { dynamicPropertyViewModel.DynamicFilterViewName = "DynamicFilterAutoComplete"; } else { dynamicPropertyViewModel.DynamicFilterViewName = "DynamicFilterDropDown"; } dynamicFilterViewModels.Add(dynamicPropertyViewModel); } } //add explicit filters foreach (var dynamicPropertyMetadata in dynamicEntityMetadata.DynamicPropertyMetadatas.Where(x => x.HasDynamicFilterUIAttribute)) { var dynamicFilterViewModel = new DynamicFilterViewModel(dynamicPropertyMetadata); var dynamicFilterUIHintAttribute = dynamicPropertyMetadata.GetDynamicFilterUIHintAttribute(); dynamicFilterViewModel.DynamicFilterViewName = dynamicFilterUIHintAttribute.DynamicFilterViewName; dynamicFilterViewModels.Add(dynamicFilterViewModel); } //add models for any filters foreach (var dynamicFilterViewModel in dynamicFilterViewModels) { var dynamicPropertyMetadata = dynamicEntityMetadata.DynamicPropertyMetadatas.Single(x => x.PropertyName == dynamicFilterViewModel.PropertyName); var dynamicFilter = _dynamicFilterFactory.GetDynamicFilter(dynamicFilterViewModel.DynamicFilterViewName, dynamicPropertyMetadata, routeValueDictionaryWrapper); dynamicFilterViewModel.FilterModel = dynamicFilter; if (dynamicPropertyMetadata.HasDynamicFilterUIAttribute) { dynamicFilterViewModel.FilterModel.Order = dynamicPropertyMetadata.GetDynamicFilterUIHintAttribute().Order; } } dynamicFilterViewModels = dynamicFilterViewModels.OrderBy(x => ((DynamicFilterBaseViewModel)x.FilterModel).Order).ToList(); return(dynamicFilterViewModels); }