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);
        }
Esempio n. 4
0
        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);
        }
Esempio n. 5
0
        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));
        }