public static SpeciesObservationDataProviderList GetAllDataProviders(IUserContext userContext, out bool providersWithObservationDisabled)
        {
            providersWithObservationDisabled = false;
            var dataProviders = CoreData.SpeciesObservationManager.GetSpeciesObservationDataProviders(userContext);
            var disabledProviderGuidsString = ConfigurationHelper.GetValue("DisableDataProviders", string.Empty);
            var disabledProviderGuids       = new string[0];

            if (disabledProviderGuidsString != null)
            {
                disabledProviderGuids = disabledProviderGuidsString.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries).Select(s => s.Trim()).ToArray();
            }

            //Populate a new list since removing items from orginal list affect cached list
            var returnList = new SpeciesObservationDataProviderList();

            foreach (var dataProvider in dataProviders)
            {
                if (disabledProviderGuids.Count(dpg => dpg == dataProvider.Guid) == 0)
                {
                    returnList.Add(dataProvider);
                }
                else if (!providersWithObservationDisabled)
                {
                    //Set flag to true if any disabled provider has observations
                    providersWithObservationDisabled = dataProvider.SpeciesObservationCount != 0;
                }
            }

            return(returnList);
        }
        private void StubDataSourceAndManagerData()
        {
            int testRoleId            = 3333;
            int testApplicationRoleId = 4444;

            UserDataSource userDataSource = new ArtDatabanken.WebService.Client.UserService.Fakes.StubUserDataSource()
            {
            };


            IUserManager testUserManager = new ArtDatabanken.Data.Fakes.StubIUserManager()
            {
                LoginStringStringStringBoolean =
                    (userName,
                     password,
                     applicationIdentifier,
                     isActivationRequired) =>
                {
                    return(this.userContext);
                },
                LoginStringStringString =
                    (userName,
                     password,
                     applicationIdentifier) =>
                {
                    return
                        (this.applicationUserContext);
                }
            };

            CoreData.UserManager            = testUserManager;
            CoreData.UserManager.DataSource = userDataSource;
            // CoreData.UserManager.DataSource = userDataSource;
            CoreData.OrganizationManager.DataSource = userDataSource;

            CountryDataSource countryDataSource = new ArtDatabanken.WebService.Client.UserService.Fakes.StubCountryDataSource();

            CoreData.CountryManager.DataSource = countryDataSource;

            LocaleDataSource localeDataSource = new ArtDatabanken.WebService.Client.UserService.Fakes.StubLocaleDataSource();
            {
            }

            ApplicationDataSource applicationDataSource =
                new ArtDatabanken.WebService.Client.UserService.Fakes.StubApplicationDataSource();

            CoreData.ApplicationManager.DataSource = applicationDataSource;

            ReferenceDataSource referenceDataSource = new ArtDatabanken.WebService.Client.ReferenceService.Fakes.StubReferenceDataSource();

            CoreData.ReferenceManager.DataSource = referenceDataSource;

            TaxonDataSource taxonDataSource = new ArtDatabanken.WebService.Client.TaxonService.Fakes.StubTaxonDataSource();

            ITaxonManager testTaxonManager = new ArtDatabanken.Data.Fakes.StubITaxonManager()
            {
            };

            CoreData.TaxonManager = testTaxonManager;

            CoreData.TaxonManager.DataSource = taxonDataSource;

            SpeciesObservationDataProviderList dataProviders = new SpeciesObservationDataProviderList();

            dataProviders.Add(new SpeciesObservationDataProvider());
            SpeciesObservationDataSource speciesObservationDataSource =
                new ArtDatabanken.WebService.Client.SpeciesObservationService.Fakes.StubSpeciesObservationDataSource()
            {
                //  public SpeciesObservationFieldDescriptionList GetSpeciesObservationFieldDescriptions(IUserContext userContext)
            };
            SpeciesObservationManager testSpeciesObservationManager =
                new ArtDatabanken.Data.Fakes.StubSpeciesObservationManager()
            {
                GetSpeciesObservationDataProvidersIUserContext
                    = (context) => { return(dataProviders); }
            };

            CoreData.SpeciesObservationManager = testSpeciesObservationManager;

            CoreData.SpeciesObservationManager.DataSource         = speciesObservationDataSource;
            CoreData.MetadataManager.SpeciesObservationDataSource = speciesObservationDataSource;

            RegionDataSource regionDataSource =
                new ArtDatabanken.WebService.Client.GeoReferenceService.Fakes.StubRegionDataSource();

            CoreData.RegionManager.DataSource = regionDataSource;

            AnalysisDataSource analysisDataSource =
                new ArtDatabanken.WebService.Client.AnalysisService.Fakes.StubAnalysisDataSource();

            CoreData.AnalysisManager.DataSource = analysisDataSource;



            this.StubApplicationUserContex(testApplicationRoleId);

            this.StubUserContext(testRoleId);

            LocaleList usedLocales  = new LocaleList();
            ILocale    testSvLocale = new Locale(
                AnalysisPortalTestSettings.Default.SwedishLocaleId,
                AnalysisPortalTestSettings.Default.SwedishLocale,
                AnalysisPortalTestSettings.Default.SwedishNameString,
                AnalysisPortalTestSettings.Default.SvenskNameString,
                new DataContext(this.userContext));

            usedLocales.Add(testSvLocale);

            LocaleManager testLocaleManager = new ArtDatabanken.Data.Fakes.StubLocaleManager()
            {
                GetUsedLocalesIUserContext =
                    (context) =>
                {
                    return(usedLocales);
                },
                GetDefaultLocaleIUserContext
                    =
                        (context) =>
                    {
                    return
                        (testSvLocale);
                    }
            };

            CoreData.LocaleManager            = testLocaleManager;
            CoreData.LocaleManager.DataSource = localeDataSource;
        }