Exemple #1
0
        public static Icon Put(TextureRegion2D region, [CallerLineNumber] int id = 0, bool isAbsoluteId = false)
        {
            // 1. Check if Icon with id already exists.
            //      a. If already exists. Get it.
            //      b  If not, create it.
            // 4. Ping it.
            id = GuiHelper.CurrentIMGUI.CreateId(id, isAbsoluteId);
            GuiHelper.CurrentIMGUI.TryGetValue(id, out IComponent c);

            Icon a;

            if (c is Icon)
            {
                a        = (Icon)c;
                a.Region = region;
            }
            else
            {
                a = new Icon(id, region);
            }

            IParent?parent = GuiHelper.CurrentIMGUI.GrabParent(a);

            if (a.LastPing != InputHelper.CurrentFrame)
            {
                a.LastPing = InputHelper.CurrentFrame;
                if (parent != null)
                {
                    a.Index = parent.NextIndex();
                }
            }

            return(a);
        }
 public override Task <PersonCmsModel> NewAsync(IParent?parent, Type?variantType = null)
 {
     return(Task.FromResult(new PersonCmsModel
     {
         ParentId = parent?.Entity.Id
     }));
 }
        public override Task ReorderAsync(string?beforeId, string id, IParent?parent)
        {
            var parentId = parent?.Entity.Id ?? string.Empty;

            var entity = _data[parentId].FirstOrDefault(x => x.Id == id);

            if (entity == null)
            {
                return(Task.CompletedTask);
            }

            _data[parentId].Remove(entity);
            if (string.IsNullOrWhiteSpace(beforeId))
            {
                _data[parentId].Add(entity);
            }
            else
            {
                var index = _data[parentId].FindIndex(x => x.Id == beforeId);
                _data[parentId].Insert(index, entity);
            }

            _mediator.NotifyEvent(this, new MessageEventArgs(MessageType.Success, "Entities reordered."));

            return(Task.CompletedTask);
        }
Exemple #4
0
        async Task <IEntity?> IRepository.InternalInsertAsync(IParent?parent, IEntity entity, IRelationContainer?relations)
        {
            var data = (await InsertAsync(parent, (TEntity)entity, relations)) as IEntity;

            NotifyUpdate();
            return(data);
        }
        public Task SetEntityAsync(FormEditContext editContext, IParent?parent)
        {
            _editContext = editContext;
            _parent      = parent;

            var data = _relatedElementsGetter?.Getter(_property.Getter(_editContext.Entity)) ?? _property.Getter(_editContext.Entity);

            if (data is IEnumerable <IEntity> entityCollection)
            {
                _relatedIds = entityCollection.Select(x => (object)x.Id !).ToList();
            }
            else if (data is IEnumerable <object> objectCollection)
            {
                _relatedIds = objectCollection.ToList();
            }
            else if (data is IEnumerable enumerable && data is not string)
            {
                var list = new List <object>();
                foreach (var element in enumerable)
                {
                    if (element != null)
                    {
                        list.Add(element);
                    }
                }
                _relatedIds = list;
            }

            return(Task.CompletedTask);
        }
 public IEditContext GetEditContextWrapper(
     UsageType usageType,
     EntityState entityState,
     IEntity updatedEntity,
     IEntity referenceEntity,
     IParent?parent,
     IEnumerable <(string propertyName, string typeName, IEnumerable <object> elements)> relations)
        public override Task <IEnumerable <TEntity> > GetAllAsync(IParent?parent, IView <TEntity> view)
        {
            var dataQuery = GetListForParent(parent).AsQueryable();

            dataQuery = view.ApplyDataView(dataQuery);

            if (view.SearchTerm != null)
            {
                var stringProperties = typeof(TEntity).GetProperties().Where(x => x.PropertyType == typeof(string)).ToList();

                // this is not a very fast or sensible search function, but it's just an example that works for all entities
                dataQuery = dataQuery
                            .Where(x => stringProperties
                                   .Any(property => (property.GetValue(x) as string) != null ? ((string)property.GetValue(x) !).Contains(view.SearchTerm, StringComparison.InvariantCultureIgnoreCase) : false));
            }

            dataQuery = view.ApplyOrder(dataQuery);

            var dataQueryResult = dataQuery
                                  .Skip(view.Skip)
                                  .Take(view.Take + 1)
                                  .ToList();

            var data = dataQueryResult
                       .Take(view.Take);

            view.HasMoreData(dataQueryResult.Count > view.Take);

            return(Task.FromResult(data));
        }
        public override Task <IEnumerable <TEntity> > GetAllAsync(IParent?parent, IQuery <TEntity> query)
        {
            var dataQuery = GetListForParent(parent).AsQueryable();

            if (query.DataViewExpression != null)
            {
                dataQuery = dataQuery.Where(query.DataViewExpression);
            }

            if (query.SearchTerm != null)
            {
                // this is not a very useful search function, but it's just an example
                dataQuery = dataQuery.Where(x => x.Id.Contains(query.SearchTerm));
            }

            dataQuery = query.ApplyOrder(dataQuery);

            var data = dataQuery
                       .Skip(query.Skip)
                       .Take(query.Take)
                       .ToList()
                       .Select(x => (TEntity)x.Clone());

            query.HasMoreData(GetListForParent(parent).Count > (query.Skip + query.Take));

            return(Task.FromResult(data));
        }
        public override Task <IEnumerable <BlobContainerCmsModel> > GetAllAsync(IParent?parent, IQuery <BlobContainerCmsModel> query)
        {
            var containers = _client.ListContainers(query.SearchTerm);

            return(Task.FromResult(containers.Skip(query.Skip).Take(query.Take).Select(x => new BlobContainerCmsModel {
                Name = x.Name
            })));
        }
Exemple #10
0
 internal EditContext(string collectionAlias, IEntity entity, IParent?parent, UsageType usageType, IServiceProvider serviceProvider)
 {
     CollectionAlias  = collectionAlias;
     Entity           = entity ?? throw new ArgumentNullException(nameof(entity));
     Parent           = parent;
     UsageType        = usageType;
     _serviceProvider = serviceProvider ?? throw new ArgumentNullException(nameof(serviceProvider));
 }
Exemple #11
0
        public override Task DeleteAsync(string id, IParent?parent)
        {
            GetListForParent(parent).RemoveAll(x => x.Id == id);

            _mediator.NotifyEvent(this, new MessageEventArgs(MessageType.Success, "Entity deleted."));

            return(Task.CompletedTask);
        }
 public Task <IEditContext> GetEditContextWrapperAsync(
     UsageType usageType,
     EntityState entityState,
     Type repositoryEntityType,
     IEntity updatedEntity,
     IEntity referenceEntity,
     IParent?parent,
     IEnumerable <(string propertyName, string typeName, IEnumerable <object> elements)> relations)
        public override async Task DeleteAsync(string id, IParent?parent)
        {
            int.TryParse(id, out var entityId);

            var country = await _dbContext.Countries.FirstOrDefaultAsync(x => x.Id == entityId);

            _dbContext.Countries.Remove(country);
            await _dbContext.SaveChangesAsync();
        }
        public override async Task DeleteAsync(string id, IParent?parent)
        {
            int.TryParse(id, out var entityId);

            var person = await _dbContext.People.FirstOrDefaultAsync(x => x.Id == entityId);

            _dbContext.People.Remove(person);
            await _dbContext.SaveChangesAsync();
        }
 public static NavigationRequest NavigateToCollection(string collectionAlias, IParent?parent)
 {
     return(new NavigationRequest(collectionAlias)
     {
         ParentPath = parent?.GetParentPath(),
         IsEdit = true,
         IsList = true
     });
 }
        public override async Task DeleteAsync(string id, IParent?parent)
        {
            if (!(parent.GetRootParent()?.Entity is BlobContainerCmsModel container))
            {
                throw new InvalidOperationException();
            }

            await _client.GetContainerReference(container.Name).GetBlockBlobReference(id).DeleteIfExistsAsync();
        }
        public override Task <TEntity> NewAsync(IParent?parent, Type?variantType = null)
        {
            if (variantType != null)
            {
                return(Task.FromResult((TEntity)Activator.CreateInstance(variantType) !));
            }

            return(Task.FromResult(new TEntity()));
        }
Exemple #18
0
 public ListContext(string collectionAlias, FormEditContext protoEditContext, IParent?parent, UsageType usageType, List <FormEditContext>?editContexts, IServiceProvider serviceProvider)
 {
     CollectionAlias  = collectionAlias ?? throw new ArgumentNullException(nameof(collectionAlias));
     ProtoEditContext = protoEditContext ?? throw new ArgumentNullException(nameof(protoEditContext));
     Parent           = parent;
     UsageType        = usageType;
     EditContexts     = editContexts ?? new List <FormEditContext>();
     ServiceProvider  = serviceProvider;
 }
Exemple #19
0
 public ReorderModel(string?beforeId, string id, IParent?parent)
 {
     BeforeId = beforeId;
     Subject  = new EntityDescriptorModel
     {
         Id         = id,
         ParentPath = parent?.GetParentPath()?.ToPathString()
     };
 }
        public override Task <IEnumerable <BlobItemCmsModel> > GetAllAsync(IParent?parent, IQuery <BlobItemCmsModel> query)
        {
            if (!(parent.GetRootParent()?.Entity is BlobContainerCmsModel container))
            {
                throw new InvalidOperationException();
            }

            var parentBlob = parent?.Entity as BlobItemCmsModel;

            var blobs = _client.GetContainerReference(container.Name).ListBlobsSegmented(parentBlob?.Name, false, BlobListingDetails.None, default, default, default, default);
Exemple #21
0
        public override async Task <TEntity?> InsertAsync(IParent?parent, TEntity entity, IRelationContainer?relations)
        {
            entity.Id = new Random().Next(0, int.MaxValue).ToString();

            await HandleRelationsAsync(entity, relations);

            GetListForParent(parent).Add(entity);

            return((TEntity)entity.Clone());
        }
Exemple #22
0
        public override Task <TCmsEntity?> GetByIdAsync(string id, IParent?parent)
        {
            var entity = (TEntity?)GetListForParent(parent).FirstOrDefault(x => x.Id == id)?.Clone();

            if (entity == null)
            {
                return(Task.FromResult(default(TCmsEntity)));
            }

            return(Task.FromResult(_converter.Convert(entity)) !);
        }
Exemple #23
0
        private List <TEntity> GetListForParent(IParent?parent)
        {
            var pId = parent?.Entity.Id ?? string.Empty;

            if (!_data.ContainsKey(pId))
            {
                _data[pId] = new List <TEntity>();
            }

            return(_data[pId]);
        }
        public override async Task <TEntity?> GetByIdAsync(string id, IParent?parent)
        {
            var entity = (TEntity?)GetListForParent(parent).FirstOrDefault(x => x.Id == id);

            if (entity == null)
            {
                entity      = (TEntity?)(await NewAsync(parent, default));
                entity !.Id = id;
            }

            return(entity);
        }
        public override async Task <IEnumerable <TEntity> > GetAllAsync(IParent?parent, IQuery <TEntity> query)
        {
            var results = await _apiRepositoryHelper.DoRequestAsync <EntitiesModel <TEntity> >(_apiRepositoryHelper.CreateRequest(HttpMethod.Post, "all", new ParentQueryModel(parent, query)));

            if (results == default)
            {
                return(Enumerable.Empty <TEntity>());
            }

            query.HasMoreData(results.MoreDataAvailable);

            return(results.Entities.Select(x => x.Entity));
        }
        public override async Task <BlobContainerCmsModel?> GetByIdAsync(string id, IParent?parent)
        {
            var container = _client.GetContainerReference(id);

            if (await container.ExistsAsync())
            {
                return(new BlobContainerCmsModel {
                    Name = container.Name
                });
            }
            else
            {
                return(default);
Exemple #27
0
        public override async Task UpdateAsync(string id, IParent?parent, TEntity entity, IRelationContainer?relations)
        {
            var list = GetListForParent(parent);

            var index = list.FindIndex(x => x.Id == id);

            var newEntity = (TEntity)entity.Clone();

            await HandleRelationsAsync(newEntity, relations);

            list.Insert(index, newEntity);
            list.RemoveAt(index + 1);
        }
Exemple #28
0
        public ParentQueryModel(IParent?parent, IQuery query) : this(parent)
        {
            Skip       = query.Skip;
            Take       = query.Take;
            SearchTerm = query.SearchTerm;
            ActiveTab  = query.ActiveTab;

            CollectionAlias = query.CollectionAlias ?? throw new ArgumentNullException(nameof(CollectionAlias));

            OrderBys = query.ActiveOrderBys
                       .Select(x => new OrderModel
            {
                PropertyName = x.OrderByExpression.PropertyName,
                Fingerprint  = x.OrderByExpression.Fingerprint,
                OrderByType  = x.OrderByType
            });
        }
Exemple #29
0
 public ApiEditContextWrapper(
     UsageType usageType,
     EntityState entityState,
     TEntity entity,
     TEntity referenceEntity,
     IParent?parent,
     IRelationContainer relationContainer,
     IServiceProvider serviceProvider)
 {
     UsageType          = usageType;
     EntityState        = entityState;
     Entity             = entity;
     Parent             = parent;
     _relationContainer = relationContainer;
     _formState         = new FormState(entity, serviceProvider);
     _formState.PopulatePropertyStatesUsingReferenceEntity(referenceEntity);
 }
Exemple #30
0
        internal FormEditContext(
            string collectionAlias,
            string repositoryAlias,
            string entityVariantAlias,
            IEntity entity,
            IParent?parent,
            UsageType usageType,
            IServiceProvider serviceProvider)
        {
            CollectionAlias    = collectionAlias ?? throw new ArgumentNullException(nameof(collectionAlias));
            RepositoryAlias    = repositoryAlias ?? throw new ArgumentNullException(nameof(repositoryAlias));
            EntityVariantAlias = entityVariantAlias ?? throw new ArgumentNullException(nameof(entityVariantAlias));
            Entity             = entity ?? throw new ArgumentNullException(nameof(entity));
            Parent             = parent;
            UsageType          = usageType;

            FormState = new FormState(Entity, serviceProvider);
        }