public ActionResult <dynamic> Put(string ApiKey, string EntityType, [FromBody] dynamic Entity) { try { if (!WorkeFunctions.IsValidApiKey(ApiKey)) { throw new InvalidApiKeyException(); } object objectToStore; if (Entity.GetType().Name == "JObject") { var typedObject = EntityFactory.GetEmptyTypedObect(EntityType); objectToStore = EntityFactory.CopyPropertiesFromDynamicObjectToTypedObject(Entity, typedObject); } else { objectToStore = Entity; } UpdateEntityResult ret = WorkeFunctions.BusinessObjectAccess.UpdateEntity(objectToStore); if (ret == UpdateEntityResult.Success) { EntityDescriber edd = new EntityDescriber(objectToStore); if (edd.IdField() != null) { return(CreatedAtAction(nameof(Get), new { id = EntityFactory.GetPropertyByName(objectToStore, edd.IdField().Name) }, objectToStore)); } else { return(CreatedAtAction(nameof(Get), new { }, objectToStore)); } } else if (ret == UpdateEntityResult.NoRowsAffected) { return(NotFound()); } else { return(new UnprocessableEntityObjectResult(objectToStore)); } } catch (InvalidApiKeyException) { return(Unauthorized()); } catch (Alchemint.Core.Exceptions.RecordUpdateException ex) { HandleException(ex); throw ex; } catch (Exception ex) { HandleException(ex); throw ex; } }
public ActionResult Delete(string ApiKey, string EntityType, [FromBody] dynamic Entity) { try { if (!WorkeFunctions.IsValidApiKey(ApiKey)) { throw new InvalidApiKeyException(); } object objectToDelete; if (Entity.GetType().Name == "JObject") { var typedObject = EntityFactory.GetEmptyTypedObect(EntityType); objectToDelete = EntityFactory.CopyPropertiesFromDynamicObjectToTypedObject(Entity, typedObject); } else { objectToDelete = Entity; } DeleteEntityResult ret = WorkeFunctions.BusinessObjectAccess.DeleteEntity(objectToDelete); if (ret == DeleteEntityResult.Success) { return(Ok()); } else if (ret == DeleteEntityResult.NoRowsAffected) { return(NotFound()); } else { return(new UnprocessableEntityObjectResult(objectToDelete)); } } catch (InvalidApiKeyException) { return(Unauthorized()); } catch (Alchemint.Core.Exceptions.RecordDeleteException ex) { HandleException(ex); throw ex; } catch (Exception ex) { HandleException(ex); throw ex; } }
public async Task <object> UpdateEntity(object Entity) { string EntityType = Entity.GetType().Name; JObject json = await DataService.PutAsync( EntityFabricUri(), _apiKey, Entity ); if (json != null) { object entityTyped = EntityFactory.GetEmptyTypedObect(EntityType); EntityFactory.CopyPropertiesFromDynamicObjectToTypedObject(json, entityTyped); return(entityTyped); } else { return(null); } }
public async Task <object> GetEntity(object Entity, List <string> propertiesToFilterOn) { string entityTypeName = Entity.GetType().Name; JObject json = await DataService.GetAsync( EntityFabricUri(), _apiKey, Entity, propertiesToFilterOn ); if (json != null) { object entityTyped = EntityFactory.GetEmptyTypedObect(entityTypeName); entityTyped = EntityFactory.CopyPropertiesFromDynamicObjectToTypedObject(json, entityTyped); return(entityTyped); } else { return(null); } }
public async Task <List <object> > GetEntities(object Entity, List <string> propertiesToFilterOn) { string entityTypeName = Entity.GetType().Name; List <object> ret = new List <object>(); JArray arr = await DataService.GetAsync( EntityFabricUri(), _apiKey, Entity, propertiesToFilterOn, true ); foreach (var jo in arr) { object o = JsonConvert.DeserializeObject <object>(jo.ToString()); object entityTyped = EntityFactory.GetEmptyTypedObect(entityTypeName); entityTyped = EntityFactory.CopyPropertiesFromDynamicObjectToTypedObject(jo, entityTyped); ret.Add(entityTyped); } return(ret); }
public ActionResult <dynamic> Post(string ApiKey, string EntityType, [FromBody] dynamic Entity) { try { if (!WorkeFunctions.IsValidApiKey(ApiKey)) { throw new InvalidApiKeyException(); } var typedObject = EntityFactory.GetEmptyTypedObect(EntityType); EntityDescriber ed = new EntityDescriber(typedObject); var fld = ed.IdField(); if (fld != null) { if (fld.Type.Name.ToUpper() == "STRING") { if (Entity.GetType().Name == "JObject") { if (Entity[fld.Name] == null) { Entity[fld.Name] = Guid.NewGuid().ToString(); } else if (Entity[fld.Name].ToString().Trim().Length <= 0) { Entity[fld.Name] = Guid.NewGuid().ToString(); } } else { var idValue = EntityFactory.GetPropertyByName(Entity, fld.Name); if (idValue == null) { EntityFactory.SetPropertyByName(Entity, fld.Name, Guid.NewGuid().ToString()); } else if (idValue.ToString().Trim().Length <= 0) { EntityFactory.SetPropertyByName(Entity, fld.Name, Guid.NewGuid().ToString()); } } } } dynamic objectToStore; if (Entity.GetType().Name == "JObject") { objectToStore = EntityFactory.CopyPropertiesFromDynamicObjectToTypedObject(Entity, typedObject); } else { objectToStore = Entity; } CreateEntityResult ret = WorkeFunctions.BusinessObjectAccess.StoreEntity(objectToStore); if (ret == CreateEntityResult.Success) { return(CreatedAtAction(nameof(Get), new { id = objectToStore.Id }, objectToStore)); } else if (ret == CreateEntityResult.EntityWithPrimaryKeyRecordExists || ret == CreateEntityResult.EntityWithUniqueKeyRecordExists) { return(Conflict()); } else { return(new UnprocessableEntityObjectResult(objectToStore)); } } catch (InvalidApiKeyException) { return(Unauthorized()); } catch (Alchemint.Core.Exceptions.RecordCreationException ex) { HandleException(ex); throw ex; } catch (Exception ex) { HandleException(ex); throw ex; } }