public async Task <IHttpActionResult> Add(MemoryEntity item)
 {
     if (item == null)
     {
         return(BadRequest("no model provided"));
     }
     return(Ok(await _memoryRepo.CreateOrUpdate(item)));
 }
        public IEnumerable <T> LoadEntities <T>(IEnumerable <Guid> ids, IEnumerable <EntityField> fields, IEnumerable <EntityField> nestedFields) where T : IEntity
        {
            List <T> result = new List <T>();

            foreach (Guid id in ids)
            {
                MemoryEntity me           = entities[id];
                Type         matchingType = Utility.GetMatchingEntityType <T>(me.Type);
                T            entity       = (T)Activator.CreateInstance(matchingType);
                IEnumerable <EntityField> filteredFields = fields.Where(x => x.Property.DeclaringType.IsAssignableFrom(matchingType));

                entity.GrantInitializeEntityDelegate(this);
                initializeEntityDelegate(me.Id, me.Revision, me.Author, me.Created, me.Updated, LoadEntityFields(me.Revision, filteredFields, nestedFields));

                result.Add(entity);
            }

            return(result);
        }
        public void CreateEntity(string type, Guid id, Guid revision, Guid?author, string label, DateTime created, bool isProtected, IEnumerable <EntityFieldValue> fieldValues)
        {
            MemoryEntity entity = new MemoryEntity()
            {
                Id          = id,
                Revision    = revision,
                Author      = author,
                Type        = type,
                Label       = label,
                Created     = created,
                Updated     = created,
                IsProtected = isProtected
            };

            entities.Add(id, entity);

            MemoryEntityDataManager.savedFieldValues.Add(revision, new Dictionary <string, object>());
            foreach (EntityFieldValue efv in fieldValues)
            {
                MemoryEntityDataManager.savedFieldValues[revision].Add(efv.Field.Name, efv.Value);
            }
        }