public ConfigurationValidator(AppConfiguration configuration)
 {
     this.configuration = configuration ?? throw new System.ArgumentNullException(nameof(configuration));
 }
Esempio n. 2
0
        private static async Task Run(AppConfiguration configuration)
        {
            var validator = new ConfigurationValidator(configuration);

            if (!validator.Validate())
            {
                return;
            }

            using var httpClient           = new HttpClient();
            using var tokenProviderFactory = new LogicTokenProviderFactory(configuration.TokenProvider);
            using var cvrClient            = new CvrClient(httpClient, tokenProviderFactory, configuration.Cvr);

            var configs = await cvrClient.GetAllCvrConfigurationsAsync().ConfigureAwait(false);

            if (configs == null || configs.Count == 0)
            {
                Log.Information("There are no CVR configurations defined for this subscription");
                return;
            }

            CvrProviderConfigurationModel cvrProvider;

            if (configuration.Cvr.CvrConfigurationId == Guid.Empty)
            {
                var fakeProviderConfig = await cvrClient.CreateFakeProviderConfiguration($"sample-{Guid.NewGuid()}").ConfigureAwait(false);

                Log.Information("Created Fake Provider configuration with name '{Name}'", fakeProviderConfig.Name);

                cvrProvider = new CvrProviderConfigurationModel
                {
                    Id             = fakeProviderConfig.Id,
                    SubscriptionId = fakeProviderConfig.SubscriptionId,
                    Name           = fakeProviderConfig.Name,
                    Provider       = "Fake Provider",
                };
                configuration.Cvr.CvrConfigurationId = fakeProviderConfig.Id.Value;
            }
            else
            {
                cvrProvider = configs.FirstOrDefault(x => x.Id == configuration.Cvr.CvrConfigurationId);

                if (cvrProvider == null)
                {
                    Log.Error("Invalid CVR configuration id {Id}", configuration.Cvr.CvrConfigurationId);
                    return;
                }
            }

            Log.Information("Fetching {Cvr} using configuration {Name}", configuration.CvrNumber, cvrProvider.Name);

            var company = await cvrClient.GetCompanyByCvrAsync(configuration.CvrNumber).ConfigureAwait(false);

            Log.Information("Company data: {@Company}", company);

            if (cvrProvider.Provider == "Fake Provider")
            {
                return;
            }

            Log.Information("Fetching company by id {Id} using configuration {Name}", company.Id, cvrProvider.Name);

            var companyById = await cvrClient.GetCompanyByIdAsync(company.Id).ConfigureAwait(false);

            Log.Information("Fetched one company using two methods: {Success}", company.CvrNumber == companyById.CvrNumber);

            Log.Information("Fetching Production Units for CVR number {Cvr}", configuration.CvrNumber);

            var productionUnits = await cvrClient.GetProductionUnitsAsync(configuration.CvrNumber).ConfigureAwait(false);

            if (productionUnits == null || productionUnits.Count == 0)
            {
                Log.Information("There is no Production Unit defined for this company");
                return;
            }

            Log.Information("Production Units data for Company {@CompanyName}: {@ProductionUnits}", company.CompanyName, productionUnits);

            Log.Information("Fetching Production Unit Detail for production unit number {PNumber}", productionUnits[0].PNumber);

            var productionUnitDetail = await cvrClient.GetProductionUnitDetailAsync(productionUnits[0].PNumber).ConfigureAwait(false);

            Log.Information("Fetching Production Unit Detail for object id {Id}", productionUnitDetail.Id);

            var productionUnitById = await cvrClient.GetProductionUnitDetailByIdAsync(productionUnitDetail.Id).ConfigureAwait(false);

            Log.Information("Fetched one production unit using two methods: {Success}", productionUnitDetail.PNumber == productionUnitById.PNumber);

            Log.Information("Fetching company events using configuration {Name}", cvrProvider.Name);
            var events = await cvrClient.GetAllCompanyEventsAsync(DateTime.Now.AddMonths(-2), DateTime.Today, 1, 100).ConfigureAwait(false);

            Log.Information("Fetched {Amount} company events", events.Count);

            var eventsCount = events.Count;

            if (eventsCount > 0)
            {
                var companyToSubscribe = company.Id;
                Log.Information("Subscribing for events of company with object id {ObjectId}", companyToSubscribe);
                await cvrClient.SubscribeByIdAsync(companyToSubscribe).ConfigureAwait(false);

                var productionUnitToSubscribe = productionUnitDetail.Id;
                Log.Information("Subscribing for events of company's production unit with object id {ObjectId}", productionUnitToSubscribe);
                await cvrClient.SubscribeByIdAsync(productionUnitToSubscribe).ConfigureAwait(false);

                Log.Information("Fetching events for subscribed companies using configuration {Name}", cvrProvider.Name);
                var page          = 1;
                var isEventsExist = true;
                while (isEventsExist)
                {
                    var subscribedEvents = await cvrClient.GetSubscribedCompanyEventsAsync(DateTime.Now.AddMonths(-2), DateTime.Today, page, 100).ConfigureAwait(false);

                    isEventsExist = subscribedEvents.ActualCount > 0;
                    Log.Information("Fetched {Amount} company subscribed events", subscribedEvents.Events.Count);
                    page++;
                }

                var  companyToUnSubscribe = company.Id;
                bool success = await cvrClient.UnsubscribeByIdAsync(companyToUnSubscribe).ConfigureAwait(false);

                if (success)
                {
                    Log.Information("Unsubscribed from company events with object id {ObjectId}", companyToUnSubscribe);
                }
            }
        }
Esempio n. 3
0
        private static async Task Run(AppConfiguration configuration)
        {
            var validator = new ConfigurationValidator(configuration);

            if (!validator.Validate())
            {
                return;
            }

            using (var httpClient = new HttpClient())
                using (var tokenProviderFactory = new LogicTokenProviderFactory(configuration.TokenProvider))
                {
                    var cvrClient = new CvrClient(httpClient, tokenProviderFactory, configuration.Cvr);

                    var configs = await cvrClient.GetAllCvrConfigurationsAsync().ConfigureAwait(false);

                    if (configs == null || configs.Count == 0)
                    {
                        Log.Information("There are no CVR configurations defined for this subscription");
                        return;
                    }

                    CvrProviderConfigurationModel cvrProvider;
                    if (configuration.Cvr.CvrConfigurationId == Guid.Empty)
                    {
                        if (configs.Count > 1)
                        {
                            Log.Error("There is more than one CVR configuration defined for this subscription");
                            return;
                        }

                        cvrProvider = configs[0];
                        configuration.Cvr.CvrConfigurationId = cvrProvider.Id.Value;
                    }
                    else
                    {
                        cvrProvider = configs.FirstOrDefault(x => x.Id == configuration.Cvr.CvrConfigurationId);

                        if (cvrProvider == null)
                        {
                            Log.Error("Invalid CVR configuration id {Id}", configuration.Cvr.CvrConfigurationId);
                            return;
                        }
                    }

                    Log.Information("Fetching {Cvr} using configuration {Name}", configuration.CvrNumber, cvrProvider.Name);

                    var company = await cvrClient.GetCompanyByCvrAsync(configuration.CvrNumber).ConfigureAwait(false);

                    Log.Information("Company data: {@Company}", company);

                    Log.Information("Fetching Production Units for CVR number {Cvr}", configuration.CvrNumber);

                    var productionUnits = await cvrClient.GetProductionUnitsAsync(configuration.CvrNumber).ConfigureAwait(false);

                    if (productionUnits == null || productionUnits.Count == 0)
                    {
                        Log.Information("There is no Production Unit defined for this company");
                        return;
                    }

                    Log.Information("Production Units data for Company {@CompanyName}: {@ProductionUnits}", company.CompanyName, productionUnits);

                    Log.Information("Fetching Production Unit Detail for production unit number {PNumber}", productionUnits[0].PNumber);

                    var productionUnitDetail = await cvrClient.GetProductionUnitDetailAsync(productionUnits[0].PNumber).ConfigureAwait(false);

                    Log.Information("Production Unit Detail data: {@ProductionUnitDetail}", productionUnitDetail);
                }
        }