Skip to content
Snippets Groups Projects
Select Git revision
  • 66a63125f42a67b6a2a794938b16789ae11df61b
  • main default protected
  • dev protected
  • Issue/3142-kpiGenerator
  • Hotfix/3115-userReportingEmpty2
  • Hotfix/3115-userReportingEmpty
  • Issue/3073-kpi
  • Issue/2492-respOrg
  • Issue/3005-kpiReportingBroken
  • Issue/2982-kpiDataPub
  • gitkeep
  • Issue/2847-reporting
  • Issue/2850-removeGrantId
  • Issue/2432-publicationKpi
  • Hotfix/xxxx-rors
  • Issue/2666-adminCronjobs-theSequal
  • Issue/2666-adminCronjobs
  • Issue/2568-betterLogging
  • Issue/2518-docs
  • Hotfix/2388-sensitive
  • Issue/2330-fixNaNQuotainAdmin
  • v1.2.10
  • v1.2.9
  • v1.2.8
  • v1.2.7
  • v1.2.6
  • v1.2.5
  • v1.2.4
  • v1.2.3
  • v1.2.2
  • v1.2.1
  • v1.2.0
  • v1.1.1
  • v1.1.0
  • v1.0.9
  • v1.0.8
  • v1.0.7
  • v1.0.6
  • v1.0.5
  • v1.0.4
  • v1.0.3
41 results

Reporting.cs

Blame
  • Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    Reporting.cs 12.42 KiB
    using Coscine.Configuration;
    using Coscine.Metadata;
    using GitLabApiClient;
    using GitLabApiClient.Models.Branches.Requests;
    using GitLabApiClient.Models.Commits.Requests.CreateCommitRequest;
    using KPIGenerator.Utils;
    using System.Text;
    using System.Web;
    using VDS.RDF.Query;
    using static KPIGenerator.Utils.CommandLineOptions;
    
    namespace KPIGenerator;
    
    public abstract class Reporting<O> where O : class
    {
        public O Options { get; init; }
        public GitLabClient GitLabClient { get; set; }
        public List<Organization> Organizations { get; set; }
        public RdfStoreConnector RdfStoreConnector { get; init; }
        public SparqlRemoteEndpoint QueryEndpoint { get; init; }
        public ConsulConfiguration Configuration { get; }
        private static string HostUrl { get; } = "https://git.rwth-aachen.de/";
        private static string InstanceName { get; set; } = null!;
        public virtual string ReportingFileName { get; init; } = null!;
    
        private string Domain { get; init; }
        private bool ReportingEnabled { get; init; }
        private string ReportingDatabaseProjectId { get; init; }
        private string ReportingBranch { get; init; }
        public string RwthRor { get; init; }
    
    
        public readonly Organization _otherOrganization = new()
        {
            Name = "Other",
            RorUrl = "https://ror.org/_other",
        };
    
        public Reporting(O options)
        {
            InstanceName = this.GetType().Name;
            Options = options;
            Configuration = new ConsulConfiguration();
            RdfStoreConnector = new RdfStoreConnector(Configuration.GetStringAndWait("coscine/local/virtuoso/additional/url"));
            QueryEndpoint = new SparqlRemoteEndpoint(new Uri(Configuration.GetStringAndWait("coscine/local/virtuoso/additional/url")));
            GitLabClient = new GitLabClient(HostUrl, Configuration.GetStringAndWait("coscine/global/gitlabtoken"));
            Organizations = new List<Organization>() { _otherOrganization };
    
            ReportingEnabled = Configuration.GetStringAndWait("coscine/local/reporting/enabled", "false") == "true";
            Domain = Configuration.GetStringAndWait("coscine/local/profilesync/domain");
            ReportingDatabaseProjectId = Configuration.GetStringAndWait("coscine/local/reporting/gitlab_project_id");
            ReportingBranch = Configuration.GetStringAndWait("coscine/local/reporting/branch");
    
            RwthRor = Configuration.GetStringAndWait("coscine/global/organizations/rwth/ror_url");
        }
    
        public abstract IEnumerable<ReportingFileObject> GenerateReporting();
    
        public bool Run()
        {
            // Console text output
            Console.Write($"{new string('=', 80)}\n {Domain} | {InstanceName}");
            var baseOptions = Options as BaseOptions;
            if (baseOptions is not null && baseOptions.DummyMode)
            {
                Console.Write(" : DUMMY MODE");
            }
            Console.WriteLine($"\n{new string('-', 80)}");
            EnsureGitLabInformationIsSetAndCorrect();
            // Generate Reporting based on CLI input