Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found
Select Git revision

Target

Select target project
  • coscine/backend/scripts/kpi-generator
1 result
Select Git revision
Show changes
Commits on Source (8)
......@@ -7,7 +7,7 @@
<AssemblyName>Coscine.KpiGenerator</AssemblyName>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<Version>0.1.6</Version>
<Version>0.1.7</Version>
</PropertyGroup>
<PropertyGroup>
......
......@@ -175,8 +175,9 @@ public abstract class Reporting<O> where O : class
else
{
result = _otherOrganization;
result.RorUrl = rorUrl; // Don't overwrite the RoR of the entry found, just use "Other" as name.
Console.ForegroundColor = ConsoleColor.Yellow;
Console.WriteLine($" WARNING!: Organization with ROR \"{rorUrl}\" could not be correctly identified. Will use \"{result.RorUrl}\" and \"{result.Name}\".");
Console.WriteLine($" WARNING!: Organization with ROR \"{rorUrl}\" could not be correctly identified. Will use \"{result.RorUrl}\" as RoR and \"{result.Name}\" as name.");
Console.ResetColor();
}
}
......@@ -289,11 +290,11 @@ public abstract class Reporting<O> where O : class
using var results = RdfStoreConnector.QueryEndpoint.QueryWithResultSet(_queryString.ToString());
if (!results.IsEmpty)
{
var inst = results.Select(x => x.Value("inst").ToString()).ToList()[0]; // Get the value for ?inst
if (!string.IsNullOrWhiteSpace(inst))
var inst = results.Select(x => x.Value("inst").ToString()); // Get the value for ?inst
if (inst.Any())
{
Console.WriteLine($" Organization {organization} found to match {inst}");
return inst;
Console.WriteLine($" Organization {organization} found to match {inst.ToList()[0]}");
organization = inst.ToList()[0];
}
}
Console.WriteLine($" Could not find match for {organization}");
......
......@@ -158,7 +158,8 @@ public class UserReporting : Reporting<UserReportingOptions>
result.Add(orgOrcid);
break;
case "shibboleth":
var orgShibboleth = GetOrganizationByUserExternalId(externalId.ExternalId1);
// Find the RoR first based on the Organization Entity Id, then try based on the user's External Id.
var orgShibboleth = GetOrganizationByExternalOrEntityId(externalId.Organization) ?? GetOrganizationByExternalOrEntityId(externalId.ExternalId1);
if (orgShibboleth is null)
{
Console.WriteLine($" No {searchedEntityType} found for user with ID \"{id}\" and login provider {loginProvider.DisplayName}");
......@@ -197,7 +198,7 @@ public class UserReporting : Reporting<UserReportingOptions>
return result.DistinctBy(e => e.RorUrl).ToList();
}
private Organization? GetOrganizationByUserExternalId(string userExternalId)
private Organization? GetOrganizationByExternalOrEntityId(string externalOrEntityId)
{
var _queryString = new SparqlParameterizedString()
{
......@@ -217,7 +218,7 @@ public class UserReporting : Reporting<UserReportingOptions>
SELECT DISTINCT ?memberUrl
WHERE {{
?memberUrl ?p ?value .
FILTER( ?value IN ( '{userExternalId}' ))
FILTER( ?value IN ( '{externalOrEntityId}' ))
}}
}}
}}
......@@ -226,12 +227,15 @@ public class UserReporting : Reporting<UserReportingOptions>
"
};
using var results = RdfStoreConnector.QueryEndpoint.QueryWithResultSet(_queryString.ToString());
if (results.IsEmpty)
if (!results.IsEmpty)
{
return null;
var ror = results.Select(x => x.Value("ror").ToString()); // Get the value for ?ror
if (ror.Any())
{
return FetchOrganizationByRor(ror.ToList()[0]);
}
var rors = results.Select(x => x.Value("ror").ToString()).ToList(); // Get the value for ?ror
return FetchOrganizationByRor(rors[0]);
}
return null;
}
private Organization? TryGetOrganizationByLabel(string rdfsLabel)
......@@ -257,12 +261,15 @@ public class UserReporting : Reporting<UserReportingOptions>
"
};
using var results = RdfStoreConnector.QueryEndpoint.QueryWithResultSet(_queryString.ToString());
if (results.IsEmpty)
if (!results.IsEmpty)
{
return null;
var ror = results.Select(x => x.Value("ror").ToString()); // Get the value for ?ror
if (ror.Any())
{
return FetchOrganizationByRor(ror.ToList()[0]);
}
var ror = results.Select(x => x.Value("ror").ToString()).ToList()[0]; // Get the value for ?ror
return FetchOrganizationByRor(ror);
}
return null;
}
private DateTime? GetLatestActivity(Guid id)
......