コード例 #1
0
        public async Task <ActionResult> Preflight(
            string uid,
            [FromServices] IPreflightConceptReader preflightReader)
        {
            log.LogInformation("Preflight check universal concept. UId:{UId}", uid);
            try
            {
                var @ref      = new ConceptRef(uid);
                var preflight = await preflightReader.GetAsync(@ref);

                log.LogInformation("Preflight check universal concept result. UId:{UId} Result:{@Result}", uid, preflight.PreflightCheck);
                var check = new ConceptPreflightCheckDTO(preflight.PreflightCheck);
                return(Ok(check));
            }
            catch (FormatException fe)
            {
                log.LogError("Malformed concept reference. Uid:{Uid} Error:{Error}", uid, fe.Message);
                return(BadRequest());
            }
            catch (Exception e)
            {
                log.LogError("Preflight check universal concept failed. UId:{UId} Error:{Error}", uid, e.ToString());
                return(StatusCode(StatusCodes.Status500InternalServerError));
            }
        }
コード例 #2
0
        public async Task <PanelDatasetCompilerContext> GetCompilerContextAsync(ConceptDatasetExecutionRequest request)
        {
            var conceptRef = new ConceptRef(request.PanelItem.Resource);
            var hydrator   = GetContextHydrator(request.QueryRef, conceptRef);
            var context    = await hydrator(request, conceptRef);

            return(context);
        }
コード例 #3
0
 async Task <PreflightConcepts> GetConceptsAsyncImpl(ConceptRef cr)
 {
     if (user.IsInstitutional)
     {
         return(await reader.GetConceptsByIdAsync(cr.Id.Value));
     }
     return(await reader.GetConceptsByUniversalIdAsync(cr.UniversalId));
 }
コード例 #4
0
 /// <summary>
 /// Preflight checks a single concept.
 /// </summary>
 /// <returns>Preflight check results, which contains the actual concepts if the check passed.</returns>
 /// <param name="cr">Concept reference.</param>
 /// <exception cref="System.Data.Common.DbException"/>
 public async Task <PreflightConcepts> GetConceptsAsync(ConceptRef cr)
 {
     log.LogInformation("Getting preflight concept check. Ref:{@Ref}", cr);
     if (user.IsInstutional)
     {
         return(await reader.GetConceptsByIdAsync(cr.Id.Value));
     }
     return(await reader.GetConceptsByUniversalIdAsync(cr.UniversalId));
 }
コード例 #5
0
        /// <summary>
        /// Preflight checks a single concept.
        /// </summary>
        /// <returns>Preflight check results, which contains the actual concepts if the check passed.</returns>
        /// <param name="cr">Concept reference.</param>
        /// <exception cref="System.Data.Common.DbException"/>
        public async Task <PreflightConcepts> GetConceptsAsync(ConceptRef cr)
        {
            log.LogInformation("Getting preflight concept check. Ref:{@Ref}", cr);
            var pc = await GetConceptsAsyncImpl(cr);

            if (!pc.Ok)
            {
                log.LogError("Preflight concept check failed. Check:{@Check}", pc);
            }
            return(pc);
        }
コード例 #6
0
ファイル: ConceptRef.cs プロジェクト: dur41d/sdmxdotnet
        internal static ConceptRef Create(Concept concept)
        {
            if (concept == null)
                return null;

            ConceptRef conceptRef = new ConceptRef();
            conceptRef.Id = concept.Id;
            conceptRef.Version = concept.Version;
            conceptRef.AgencyId = concept.AgencyId;
            conceptRef.SchemeRef = ConceptSchemeRef.Create(concept.ConceptScheme);

            return conceptRef;
        }
コード例 #7
0
        public async Task <PreflightConcepts> GetAsync(ConceptRef @ref)
        {
            log.LogInformation("Getting preflight concept check. Ref:{@Ref}", @ref);
            using (var cn = new SqlConnection(opts.ConnectionString))
            {
                await cn.OpenAsync();

                if (user.IsInstutional)
                {
                    return(await GetByIdAsync(cn, @ref.Id.Value));
                }
                return(await GetByUIdAsync(cn, @ref.UniversalId.ToString()));
            }
        }
コード例 #8
0
        internal static ConceptRef Create(Concept concept)
        {
            if (concept == null)
            {
                return(null);
            }

            ConceptRef conceptRef = new ConceptRef();

            conceptRef.Id        = concept.Id;
            conceptRef.Version   = concept.Version;
            conceptRef.AgencyId  = concept.AgencyId;
            conceptRef.SchemeRef = ConceptSchemeRef.Create(concept.ConceptScheme);

            return(conceptRef);
        }
コード例 #9
0
 Hydrator GetContextHydrator(QueryRef queryRef, ConceptRef conceptRef)
 {
     if (queryRef.UseUniversalId())
     {
         if (conceptRef.UseUniversalId())
         {
             return(ByQueryUIdConceptUId);
         }
         return(ByQueryUIdConceptId);
     }
     else
     {
         if (conceptRef.UseUniversalId())
         {
             return(ByQueryIdConceptUId);
         }
     }
     return(ByQueryIdConceptId);
 }
コード例 #10
0
        async Task <PanelDatasetCompilerContext> ByQueryUIdConceptId(ConceptDatasetExecutionRequest request, ConceptRef conceptRef)
        {
            log.LogInformation("Getting ConceptDatasetCompilerContext by QueryUId and ConceptId");
            var queryuid  = request.QueryRef.UniversalId.ToString();
            var conceptid = conceptRef.Id.Value;

            using (var cn = new SqlConnection(opts.ConnectionString))
            {
                await cn.OpenAsync();

                var grid = await cn.QueryMultipleAsync(
                    contextByQueryUIdConceptId,
                    new { queryuid, conceptid, user = user.UUID, groups = GroupMembership.From(user), admin = user.IsAdmin },
                    commandType : CommandType.StoredProcedure,
                    commandTimeout : opts.DefaultTimeout
                    );

                return(ReadContextGrid(request, grid));
            }
        }
コード例 #11
0
 public ConceptRefDTO(ConceptRef c)
 {
     Id          = c.Id;
     UniversalId = c.UniversalId?.ToString();
 }