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)); } }
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); }
async Task <PreflightConcepts> GetConceptsAsyncImpl(ConceptRef cr) { if (user.IsInstitutional) { return(await reader.GetConceptsByIdAsync(cr.Id.Value)); } return(await reader.GetConceptsByUniversalIdAsync(cr.UniversalId)); }
/// <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)); }
/// <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); }
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; }
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())); } }
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); }
Hydrator GetContextHydrator(QueryRef queryRef, ConceptRef conceptRef) { if (queryRef.UseUniversalId()) { if (conceptRef.UseUniversalId()) { return(ByQueryUIdConceptUId); } return(ByQueryUIdConceptId); } else { if (conceptRef.UseUniversalId()) { return(ByQueryIdConceptUId); } } return(ByQueryIdConceptId); }
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)); } }
public ConceptRefDTO(ConceptRef c) { Id = c.Id; UniversalId = c.UniversalId?.ToString(); }