public ProviderVersionUpdateCheckService(
            IPoliciesApiClient policiesApiClient,
            ILogger logger,
            IProvidersResiliencePolicies resiliencePolicies,
            IProviderVersionsMetadataRepository providerVersionMetadata,
            IFundingDataZoneApiClient fundingDataZoneApiClient,
            ISpecificationsApiClient specificationsApiClient,
            IMapper mapper)
        {
            Guard.ArgumentNotNull(policiesApiClient, nameof(policiesApiClient));
            Guard.ArgumentNotNull(logger, nameof(logger));
            Guard.ArgumentNotNull(resiliencePolicies, nameof(resiliencePolicies));
            Guard.ArgumentNotNull(resiliencePolicies.PoliciesApiClient, nameof(resiliencePolicies.PoliciesApiClient));
            Guard.ArgumentNotNull(resiliencePolicies.ProviderVersionMetadataRepository, nameof(resiliencePolicies.ProviderVersionMetadataRepository));
            Guard.ArgumentNotNull(resiliencePolicies.FundingDataZoneApiClient, nameof(resiliencePolicies.FundingDataZoneApiClient));
            Guard.ArgumentNotNull(resiliencePolicies.SpecificationsApiClient, nameof(resiliencePolicies.SpecificationsApiClient));
            Guard.ArgumentNotNull(providerVersionMetadata, nameof(providerVersionMetadata));
            Guard.ArgumentNotNull(fundingDataZoneApiClient, nameof(fundingDataZoneApiClient));
            Guard.ArgumentNotNull(specificationsApiClient, nameof(specificationsApiClient));
            Guard.ArgumentNotNull(mapper, nameof(mapper));

            _policiesApiClient        = policiesApiClient;
            _providerVersionMetadata  = providerVersionMetadata;
            _fundingDataZoneApiClient = fundingDataZoneApiClient;
            _specificationsApiClient  = specificationsApiClient;
            _mapper = mapper;
            _logger = logger;
            _policiesApiClientPolicy        = resiliencePolicies.PoliciesApiClient;
            _providerVersionMetadataPolicy  = resiliencePolicies.ProviderVersionMetadataRepository;
            _fundingDataZoneApiClientPolicy = resiliencePolicies.FundingDataZoneApiClient;
            _specificationsApiClientPolicy  = resiliencePolicies.SpecificationsApiClient;
        }
        public FundingStreamProviderVersionService(IProviderVersionsMetadataRepository providerVersionMetadata,
                                                   IProviderVersionService providerVersionService,
                                                   IProviderVersionSearchService providerVersionSearch,
                                                   IValidator <SetFundingStreamCurrentProviderVersionRequest> setCurrentRequestValidator,
                                                   IProvidersResiliencePolicies resiliencePolicies,
                                                   ILogger logger,
                                                   IMapper mapper)
        {
            Guard.ArgumentNotNull(providerVersionMetadata, nameof(providerVersionMetadata));
            Guard.ArgumentNotNull(providerVersionService, nameof(providerVersionService));
            Guard.ArgumentNotNull(providerVersionSearch, nameof(providerVersionSearch));
            Guard.ArgumentNotNull(resiliencePolicies?.ProviderVersionMetadataRepository, nameof(resiliencePolicies.ProviderVersionMetadataRepository));
            Guard.ArgumentNotNull(resiliencePolicies?.ProviderVersionsSearchRepository, nameof(resiliencePolicies.ProviderVersionsSearchRepository));
            Guard.ArgumentNotNull(logger, nameof(logger));
            Guard.ArgumentNotNull(mapper, nameof(mapper));

            _providerVersionMetadata       = providerVersionMetadata;
            _providerVersionMetadataPolicy = resiliencePolicies.ProviderVersionMetadataRepository;
            _providerVersionSearchPolicy   = resiliencePolicies.ProviderVersionsSearchRepository;
            _logger = logger;
            _providerVersionSearch      = providerVersionSearch;
            _setCurrentRequestValidator = setCurrentRequestValidator;
            _providerVersionService     = providerVersionService;
            _mapper = mapper;
        }
Example #3
0
        public ProviderSnapshotDataLoadService(ILogger logger,
                                               ISpecificationsApiClient specificationsApiClient,
                                               IProviderVersionService providerVersionService,
                                               IProvidersResiliencePolicies resiliencePolicies,
                                               IFundingDataZoneApiClient fundingDataZoneApiClient,
                                               IMapper mapper,
                                               IJobManagement jobManagement) : base(jobManagement, logger)
        {
            Guard.ArgumentNotNull(logger, nameof(logger));
            Guard.ArgumentNotNull(specificationsApiClient, nameof(specificationsApiClient));
            Guard.ArgumentNotNull(providerVersionService, nameof(providerVersionService));
            Guard.ArgumentNotNull(resiliencePolicies?.SpecificationsApiClient, nameof(resiliencePolicies.SpecificationsApiClient));
            Guard.ArgumentNotNull(resiliencePolicies?.FundingDataZoneApiClient, nameof(resiliencePolicies.FundingDataZoneApiClient));
            Guard.ArgumentNotNull(fundingDataZoneApiClient, nameof(fundingDataZoneApiClient));
            Guard.ArgumentNotNull(mapper, nameof(mapper));
            Guard.ArgumentNotNull(jobManagement, nameof(jobManagement));

            _logger = logger;
            _specificationsApiClient        = specificationsApiClient;
            _providerVersionService         = providerVersionService;
            _specificationsApiClientPolicy  = resiliencePolicies.SpecificationsApiClient;
            _fundingDataZoneApiClientPolicy = resiliencePolicies.FundingDataZoneApiClient;
            _fundingDataZoneApiClient       = fundingDataZoneApiClient;
            _mapper        = mapper;
            _jobManagement = jobManagement;
        }
Example #4
0
        public ScopedProvidersService(ICacheProvider cacheProvider,
                                      IResultsApiClient resultsApiClient,
                                      ISpecificationsApiClient specificationsApiClient,
                                      IProviderVersionService providerVersionService,
                                      IScopedProvidersServiceSettings scopedProvidersServiceSettings,
                                      IFileSystemCache fileSystemCache,
                                      IJobManagement jobManagement,
                                      IProvidersResiliencePolicies providersResiliencePolicies,
                                      ILogger logger) : base(jobManagement, logger)
        {
            Guard.ArgumentNotNull(cacheProvider, nameof(cacheProvider));
            Guard.ArgumentNotNull(resultsApiClient, nameof(resultsApiClient));
            Guard.ArgumentNotNull(specificationsApiClient, nameof(specificationsApiClient));
            Guard.ArgumentNotNull(providerVersionService, nameof(providerVersionService));
            Guard.ArgumentNotNull(scopedProvidersServiceSettings, nameof(scopedProvidersServiceSettings));
            Guard.ArgumentNotNull(fileSystemCache, nameof(fileSystemCache));
            Guard.ArgumentNotNull(jobManagement, nameof(jobManagement));
            Guard.ArgumentNotNull(providersResiliencePolicies?.SpecificationsApiClient, nameof(providersResiliencePolicies.SpecificationsApiClient));
            Guard.ArgumentNotNull(providersResiliencePolicies?.ResultsApiClient, nameof(providersResiliencePolicies.ResultsApiClient));
            Guard.ArgumentNotNull(providersResiliencePolicies?.CacheProvider, nameof(providersResiliencePolicies.CacheProvider));
            Guard.ArgumentNotNull(logger, nameof(logger));

            _cachePolicy                    = providersResiliencePolicies.CacheProvider;
            _specificationsPolicy           = providersResiliencePolicies.SpecificationsApiClient;
            _resultsPolicy                  = providersResiliencePolicies.ResultsApiClient;
            _cacheProvider                  = cacheProvider;
            _resultsApiClient               = resultsApiClient;
            _specificationsApiClient        = specificationsApiClient;
            _providerVersionService         = providerVersionService;
            _fileSystemCache                = fileSystemCache;
            _scopedProvidersServiceSettings = scopedProvidersServiceSettings;
            _jobManagement                  = jobManagement;
            _logger = logger;
        }
        private IProvidersResiliencePolicies CreateResiliencePolicies()
        {
            IProvidersResiliencePolicies providersResiliencePolicies = Substitute.For <IProvidersResiliencePolicies>();

            providersResiliencePolicies.ProviderVersionMetadataRepository = Policy.NoOpAsync();
            providersResiliencePolicies.ProviderVersionsSearchRepository  = Policy.NoOpAsync();
            return(providersResiliencePolicies);
        }
        public ProviderVersionSearchService(ILogger logger,
                                            ISearchRepository <ProvidersIndex> searchRepository,
                                            IProviderVersionsMetadataRepository providerVersionsMetadataRepository,
                                            IProvidersResiliencePolicies resiliencePolicies,
                                            IProviderVersionService providerVersionService)
        {
            Guard.ArgumentNotNull(logger, nameof(logger));
            Guard.ArgumentNotNull(searchRepository, nameof(searchRepository));
            Guard.ArgumentNotNull(resiliencePolicies?.ProviderVersionsSearchRepository, nameof(resiliencePolicies.ProviderVersionsSearchRepository));
            Guard.ArgumentNotNull(resiliencePolicies?.ProviderVersionMetadataRepository, nameof(resiliencePolicies.ProviderVersionMetadataRepository));

            _logger                                   = logger;
            _searchRepository                         = searchRepository;
            _searchRepositoryPolicy                   = resiliencePolicies.ProviderVersionsSearchRepository;
            _providerVersionsMetadataRepository       = providerVersionsMetadataRepository;
            _providerVersionsMetadataRepositoryPolicy = resiliencePolicies.ProviderVersionMetadataRepository;
            _providerVersionService                   = providerVersionService;
        }
Example #7
0
        public SetFundingStreamCurrentProviderVersionRequestValidator(IProviderVersionsMetadataRepository providerVersions,
                                                                      IPoliciesApiClient policiesApiClient,
                                                                      IProvidersResiliencePolicies resiliencePolicies)
        {
            Guard.ArgumentNotNull(providerVersions, nameof(providerVersions));
            Guard.ArgumentNotNull(policiesApiClient, nameof(policiesApiClient));
            Guard.ArgumentNotNull(resiliencePolicies?.ProviderVersionMetadataRepository, nameof(resiliencePolicies.ProviderVersionMetadataRepository));
            Guard.ArgumentNotNull(resiliencePolicies?.PoliciesApiClient, nameof(resiliencePolicies.PoliciesApiClient));

            RuleFor(_ => _.FundingStreamId)
            .Cascade(CascadeMode.StopOnFirstFailure)
            .NotEmpty()
            .CustomAsync(async(fundingStreamId,
                               context,
                               cancellationToken) =>
            {
                ApiResponse <FundingStream> response = await resiliencePolicies.PoliciesApiClient.ExecuteAsync(() =>
                                                                                                               policiesApiClient.GetFundingStreamById(fundingStreamId));

                if (response?.Content == null)
                {
                    context.AddFailure(new ValidationFailure("FundingStreamId",
                                                             $"No funding stream located with Id {fundingStreamId}"));
                }
            });

            RuleFor(_ => _.ProviderVersionId)
            .Cascade(CascadeMode.StopOnFirstFailure)
            .NotEmpty()
            .CustomAsync(async(providerVersionId,
                               context,
                               cancellationToken) =>
            {
                ProviderVersionMetadata response = await resiliencePolicies.ProviderVersionMetadataRepository.ExecuteAsync(() =>
                                                                                                                           providerVersions.GetProviderVersionMetadata(providerVersionId));

                if (response == null)
                {
                    context.AddFailure(new ValidationFailure("ProviderVersionId",
                                                             $"No provider version located with Id {providerVersionId}"));
                }
            });
        }
        public ProviderVersionService(ICacheProvider cacheProvider,
                                      IBlobClient blobClient,
                                      ILogger logger,
                                      IValidator <ProviderVersionViewModel> providerVersionModelValidator,
                                      IProviderVersionsMetadataRepository providerVersionMetadataRepository,
                                      IProvidersResiliencePolicies resiliencePolicies,
                                      IMapper mapper,
                                      IFileSystemCache fileSystemCache,
                                      IProviderVersionServiceSettings providerVersionServiceSettings,
                                      ISearchRepository <ProvidersIndex> searchRepository)
        {
            Guard.ArgumentNotNull(blobClient, nameof(blobClient));
            Guard.ArgumentNotNull(logger, nameof(logger));
            Guard.ArgumentNotNull(providerVersionModelValidator, nameof(providerVersionModelValidator));
            Guard.ArgumentNotNull(resiliencePolicies?.ProviderVersionMetadataRepository, nameof(resiliencePolicies.ProviderVersionMetadataRepository));
            Guard.ArgumentNotNull(resiliencePolicies?.BlobRepositoryPolicy, nameof(resiliencePolicies.BlobRepositoryPolicy));
            Guard.ArgumentNotNull(resiliencePolicies?.CacheProvider, nameof(resiliencePolicies.CacheProvider));
            Guard.ArgumentNotNull(resiliencePolicies?.ProviderVersionsSearchRepository, nameof(resiliencePolicies.ProviderVersionsSearchRepository));
            Guard.ArgumentNotNull(mapper, nameof(mapper));
            Guard.ArgumentNotNull(fileSystemCache, nameof(fileSystemCache));
            Guard.ArgumentNotNull(providerVersionServiceSettings, nameof(providerVersionServiceSettings));
            Guard.ArgumentNotNull(cacheProvider, nameof(cacheProvider));
            Guard.ArgumentNotNull(searchRepository, nameof(searchRepository));

            _cacheProvider = cacheProvider;
            _blobClient    = blobClient;
            _logger        = logger;
            _providerVersionModelValidator           = providerVersionModelValidator;
            _providerVersionMetadataRepository       = providerVersionMetadataRepository;
            _providerVersionMetadataRepositoryPolicy = resiliencePolicies.ProviderVersionMetadataRepository;
            _providersSearchPolicy = resiliencePolicies.ProviderVersionsSearchRepository;
            _cachePolicy           = resiliencePolicies.CacheProvider;
            _blobRepositoryPolicy  = resiliencePolicies.BlobRepositoryPolicy;
            _mapper          = mapper;
            _fileSystemCache = fileSystemCache;
            _providerVersionServiceSettings = providerVersionServiceSettings;
            _searchRepository = searchRepository;
        }