Example #1
0
        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);
        }
Example #4
0
        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);
        }
Example #8
0
        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);
        }
Example #10
0
        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);
        }