public IActionResult GetByFilter([FromQuery] string filter) { string entityAsJson = ""; try { _logger.LogInformation("CPAPI: Get"); // Deserialize the ontology filter OntologyFilter oFilter = new OntologyFilter(); if (filter != null && filter.Length > 0) { _logger.LogDebug("Deserializing ontology filter of length: " + filter.Length); oFilter = JsonConvert.DeserializeObject <OntologyFilter>(filter); } List <POCO.RecordAuthorityFilter> filters = new List <POCO.RecordAuthorityFilter>(); foreach (string of in oFilter.ontology) { string cleanFilterPKey = Utils.CleanTableKey(of); POCO.RecordAuthorityFilter filt = new POCO.RecordAuthorityFilter(cleanFilterPKey, "", ""); //DataFactory.Filter pkFilter = new DataFactory.Filter("PartitionKey", cleanFilterPKey, "eq"); filters.Add(filt); } DataFactory.DataConfig datacfg = Utils.GetDataConfig(); List <POCO.RecordAuthorityFunctionActivityEntry> recordAuthorityEntities = DataFactory.RecordAuthority.GetEntries(datacfg, filters); recordAuthorityEntities.Sort((x, y) => String.Compare(x.Function, y.Function)); entityAsJson = JsonConvert.SerializeObject(recordAuthorityEntities, Formatting.Indented); } catch (Exception ex) { string exceptionMsg = "Record Authority GET By Filter exception: " + ex.Message; //log.Info("Exception occurred extracting text from uploaded file \r\nError: " + ex.Message); if (ex.InnerException != null) { exceptionMsg = exceptionMsg + "[" + ex.InnerException.Message + "]"; } _logger.LogError(exceptionMsg); return(StatusCode((int)System.Net.HttpStatusCode.InternalServerError)); } ObjectResult result = new ObjectResult(entityAsJson); return(result); }
public IActionResult AssignToSystem([FromHeader] string system, List <string> recordauths) { _logger.LogInformation("CPAPI: AssignRecordAuthorityToSystem"); List <POCO.RecordAuthorityFilter> newRAFilts = new List <POCO.RecordAuthorityFilter>(); // Validate the params if (string.IsNullOrEmpty(system)) { return(StatusCode((int)System.Net.HttpStatusCode.BadRequest)); } if (recordauths == null || recordauths.Count == 0) { return(StatusCode((int)System.Net.HttpStatusCode.BadRequest)); } // Assign each record authority to the system foreach (string ra in recordauths) { // Create a new RecordAuthorityFilter POCO.RecordAuthorityFilter rafilt = new POCO.RecordAuthorityFilter(); rafilt.PartitionKey = Utils.CleanTableKey(system); rafilt.RowKey = Utils.CleanTableKey(ra); rafilt.RASchemaUri = ra; POCO.RecordAuthorityFilter addedRAFilt = AssignToSystem(rafilt); newRAFilts.Add(addedRAFilt); } // Check if any adds succeeded if (newRAFilts.Count > 0) { // Return the added system entity ObjectResult result = new ObjectResult(newRAFilts); return(result); } else { return(StatusCode((int)System.Net.HttpStatusCode.InternalServerError)); } }
private POCO.RecordAuthorityFilter AssignToSystem(POCO.RecordAuthorityFilter recordAuthFilt) { bool isAddedOk = false; // Execute the insert operation. //log.Verbose("Executing table operation"); try { // Call the Add datafactory method DataFactory.DataConfig datacfg = Utils.GetDataConfig(); DataFactory.RecordAuthority.AssignToSystem(datacfg, recordAuthFilt); } catch (Exception aex) { _logger.LogError("ERR exception: " + aex.Message); } isAddedOk = true; return(recordAuthFilt); }
public static int AssignToSystem(DataConfig providerConfig, POCO.RecordAuthorityFilter authFilter) { int numRows = 0; // Check if this exists already List <POCO.RecordAuthorityFilter> rafilts = GetAuthorityFilters(providerConfig, authFilter); if (rafilts.Count > 0) { return(numRows); } switch (providerConfig.ProviderType) { case "azure.tableservice": AzureRecordAuthorityFilter az = new AzureRecordAuthorityFilter(authFilter); CloudTable table = Utils.GetCloudTable(providerConfig, AzureTableNames.SystemsAssignedRecordsAuthority); TableOperation operation = TableOperation.InsertOrMerge(az); Task tUpdate = table.ExecuteAsync(operation); tUpdate.Wait(); //TODO return the inserted record id/timestamp return(numRows); case "internal.mongodb": IMongoCollection <MongoRecordAuthorityFilter> collection = Utils.GetMongoCollection <MongoRecordAuthorityFilter>(providerConfig, MongoTableNames.SystemsAssignedRecordsAuthority); MongoRecordAuthorityFilter mongoObject = Utils.ConvertType <MongoRecordAuthorityFilter>(authFilter); collection.InsertOne(mongoObject); return(numRows); default: throw new ApplicationException("Data provider not recognised: " + providerConfig.ProviderType); } return(numRows); }
public static List <POCO.RecordAuthorityFilter> GetAuthorityFilters(DataConfig providerConfig, POCO.RecordAuthorityFilter rafilt) { List <Filter> filters = new List <Filter>(); Filter pkFilter = new Filter("PartitionKey", rafilt.PartitionKey, "eq"); filters.Add(pkFilter); Filter rkFilter = new Filter("RowKey", rafilt.RowKey, "eq"); filters.Add(rkFilter); return(GetAssignedForSystem(providerConfig, filters)); }