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);
        }
 /// <summary>
 /// Set species observation data providers for specified locale.
 /// </summary>
 /// <param name="speciesObservationDataProviders">Species observation data providers.</param>
 /// <param name="locale">Locale.</param>
 protected override void SetSpeciesObservationDataProviders(SpeciesObservationDataProviderList speciesObservationDataProviders,
                                                            ILocale locale)
 {
     lock (SpeciesObservationDataProviders)
     {
         SpeciesObservationDataProviders[locale.ISOCode] = speciesObservationDataProviders;
     }
 }
        /// <summary>
        /// Get all species observation data providers for specified locale.
        /// </summary>
        /// <param name="locale">Locale.</param>
        /// <returns>All species observation data providers for specified locale.</returns>
        protected override SpeciesObservationDataProviderList GetSpeciesObservationDataProviders(ILocale locale)
        {
            SpeciesObservationDataProviderList speciesObservationDataProviderList = null;

            lock (SpeciesObservationDataProviders)
            {
                if (SpeciesObservationDataProviders.ContainsKey(locale.ISOCode))
                {
                    speciesObservationDataProviderList = (SpeciesObservationDataProviderList)(SpeciesObservationDataProviders[locale.ISOCode]);
                }
            }
            return(speciesObservationDataProviderList);
        }
 private void AddAllAvailableDataProviders()
 {
     try
     {
         SpeciesObservationDataProviderList dataProviders = DataProviderManager.GetAllDataProviders(CoreData.UserManager.GetCurrentUser());
         foreach (ISpeciesObservationDataProvider dataProvider in dataProviders)
         {
             DataProvidersGuids.Add(dataProvider.Guid);
         }
     }
     catch
     {
     }
 }
        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;
        }