public Model.ViewModel.GridVM GetGridViewModelForObject(IQueryable <object> collection, string objectId, string objectType, string bindingPath, CollectionViewModelParameters parameters) { var gv = new Model.ViewModel.GridVM(); gv.PropertyValue = $"{collection.Cast<object>().FirstOrDefault()?.GetType().Name}[{collection.Count()}]"; var firstElement = collection.Cast <object>().FirstOrDefault(); if (firstElement == null) { return(gv); } var elementType = firstElement.GetType(); var elementIdPropertyName = dataService.GetIdPropertyName(elementType); var propertyInfos = viewConfigurationService.GetGridCollumnInPropertyGrid(elementType, elementIdPropertyName); var idProperty = elementType.GetProperty(elementIdPropertyName); bool isFirst = true; var page = collection.Skip(parameters.Page * parameters.PageSize).Take(parameters.PageSize); int iRow = 0; foreach (var element in page) { var row = new RowViewModel(); row.Cells = new CellViewModel[propertyInfos.Length]; var rowId = idProperty.GetValue(element); row.Id = rowId?.ToString(); row.ElementTypeFullName = helper.GetTypeName(elementType); row.EditUrl = helper.GetEditUrlForClass(row.Id, elementType); for (int i = 0; i < propertyInfos.Length; i++) { var cellProperty = propertyInfos[i]; var cellValue = cellProperty.GetValue(element); var cellPropertyType = cellProperty.PropertyType; var cellType = helper.CheckPropType(cellPropertyType); if (isFirst) { var cvm = new ColumnViewModel() { BindingPath = cellProperty.Name, Header = cellProperty.Name }; gv.Columns.Add(cvm); } var cell = new CellViewModel() { IsBigString = helper.IsBigString(cellValue, BaseService.EnumPreviewType.Grid), Value = helper.GetPreview(cellValue, BaseService.EnumPreviewType.Grid) }; cell.MainObjectId = objectId; cell.MainObjectType = objectType; cell.BindingPath = $"{bindingPath}[{iRow}].{cellProperty.Name}"; row.Cells[i] = cell; if (cellType == PropertyTypes.Class) { if (cellValue != null) { var valueType = cellValue.GetType(); var idPropName = dataService.GetIdPropertyName(valueType); var idProp = valueType.GetProperty(idPropName); var id = idProp.GetValue(cellValue)?.ToString(); cell.EditUrl = helper.GetEditUrlForClass(id, valueType); } } else if (cellType == PropertyTypes.Collection) { cell.EditUrl = helper.GetEditUrlForCollection(helper.GetCollectionElementType(cellPropertyType), rowId, elementType); } } gv.Rows.Add(row); isFirst = false; iRow++; } return(gv); }
public Model.ViewModel.GridVM GetGridViewModelForType(string collectionTypeName, string parentObjectId, string parentType, CollectionViewModelParameters parameters) { var collection = dataService.GetCollection(collectionTypeName, parentObjectId, parentType, parameters); return(GetGridViewModelForObject(collection, null, collectionTypeName, "Collection", parameters)); }
/// <summary> /// Zwraca dzieci obiektu - dla obiektu hierarchicznego /// </summary> /// <param name="objectId"></param> /// <param name="type"></param> /// <param name="parameters"></param> /// <returns></returns> public virtual IQueryable <object> GetChildrenCollection(string objectId, string typeFullname, CollectionViewModelParameters parameters) { return(null); }
/// <summary> /// Zwraca kolekcję obiektów /// </summary> /// <param name="collectionTypeName"></param> /// <param name="objectId"></param> /// <param name="objectType"></param> /// <param name="parameters"></param> /// <returns></returns> public virtual IQueryable <object> GetCollection(string collectionTypeName, string objectId, string objectType, CollectionViewModelParameters parameters) { return(new List <object>().AsQueryable()); }
/// <summary> /// Helper do pobierania obiektów z EF /// </summary> /// <param name="objectId"></param> /// <param name="collectionTypeName"></param> /// <param name="parameters"></param> /// <param name="processesContext"></param> /// <returns></returns> public virtual IQueryable <object> GetChildrenCollectionDb(object objectId, string collectionTypeName, CollectionViewModelParameters parameters, object processesContext) { var set = GetDbSet(collectionTypeName, processesContext); var query = (IQueryable <object>)System.Linq.Queryable.Cast <object>(set); var dane = query.ToList(); return(dane.AsQueryable <object>()); }
public TreeListViewModel GetTreeList(string objectId, string typeFullname, CollectionViewModelParameters parameters) { var collection = dataService.GetChildrenCollection(objectId, typeFullname, parameters); return(GetTreeListViewModel(collection, parameters)); }