/// <summary> /// Get all species observation data providers. /// </summary> /// <param name="context">Web service request context.</param> /// <returns>All species observation data providers.</returns> public virtual Dictionary <Int32, WebSpeciesObservationDataProvider> GetSpeciesObservationDataProvidersDictionary(WebServiceContext context) { Dictionary <Int32, WebSpeciesObservationDataProvider> dataProviders; String cacheKey; WebSpeciesObservationDataProvider dataProvider; // Get cached information. cacheKey = Settings.Default.SpeciesObservationDataProviderDictionaryCacheKey + ":" + context.Locale.ISOCode; dataProviders = (Dictionary <Int32, WebSpeciesObservationDataProvider>)(context.GetCachedObject(cacheKey)); if (dataProviders.IsEmpty()) { // Data not in cache. Get information from database. dataProviders = new Dictionary <int, WebSpeciesObservationDataProvider>(); using (DataReader dataReader = context.GetDatabase().GetSpeciesObservationDataProviders(context.Locale.Id)) { while (dataReader.Read()) { dataProvider = new WebSpeciesObservationDataProvider(); dataProvider.LoadData(dataReader); dataProviders.Add(dataProvider.Id, dataProvider); } } // Add information to cache. context.AddCachedObject(cacheKey, dataProviders, DateTime.Now + new TimeSpan(1, 0, 0, 0), CacheItemPriority.High); } return(dataProviders); }
/// <summary> /// Load data into the WebSpeciesObservationDataProvider instance. /// </summary> /// <param name='speciesObservationDataProvider'>Species observation data Provider.</param> /// <param name='dataReader'>An open data reader.</param> public static void LoadData(this WebSpeciesObservationDataProvider speciesObservationDataProvider, DataReader dataReader) { speciesObservationDataProvider.ContactEmail = dataReader.GetString(SpeciesObservationDataProviderData.CONTACT_EMAIL); speciesObservationDataProvider.ContactPerson = dataReader.GetString(SpeciesObservationDataProviderData.CONTACT_PERSON); speciesObservationDataProvider.Description = dataReader.GetString(SpeciesObservationDataProviderData.DESCRIPTION); speciesObservationDataProvider.Guid = dataReader.GetString(SpeciesObservationDataProviderData.GUID); speciesObservationDataProvider.Id = dataReader.GetInt32(SpeciesObservationDataProviderData.ID); speciesObservationDataProvider.Name = dataReader.GetString(SpeciesObservationDataProviderData.NAME); speciesObservationDataProvider.NonPublicSpeciesObservationCount = dataReader.GetInt64(SpeciesObservationDataProviderData.NON_PUBLIC_SPECIES_OBSERVATION_COUNT); speciesObservationDataProvider.Organization = dataReader.GetString(SpeciesObservationDataProviderData.ORGANIZATION); speciesObservationDataProvider.PublicSpeciesObservationCount = dataReader.GetInt64(SpeciesObservationDataProviderData.PUBLIC_SPECIES_OBSERVATION_COUNT); speciesObservationDataProvider.SpeciesObservationCount = dataReader.GetInt64(SpeciesObservationDataProviderData.SPECIES_OBSERVATION_COUNT); speciesObservationDataProvider.Url = dataReader.GetString(SpeciesObservationDataProviderData.URL); speciesObservationDataProvider.IsActiveHarvest = dataReader.GetBoolean(SpeciesObservationDataProviderData.IS_ACTIVE_HARVEST); speciesObservationDataProvider.LatestHarvestDate = dataReader.GetDateTime(SpeciesObservationDataProviderData.LATEST_HARVEST_DATE, DateTime.MinValue); speciesObservationDataProvider.BeginHarvestFromDate = dataReader.GetDateTime(SpeciesObservationDataProviderData.BEGIN_HARVEST_FROM_DATE, DateTime.MinValue); speciesObservationDataProvider.LatestChangedDate = dataReader.GetDateTime(SpeciesObservationDataProviderData.LATEST_CHANGED_DATE, DateTime.MinValue); speciesObservationDataProvider.IsMaxChangeIdSpecified = dataReader.IsNotDbNull(SpeciesObservationDataProviderData.MAX_CHANGE_ID); speciesObservationDataProvider.MaxChangeId = dataReader.GetInt64(SpeciesObservationDataProviderData.MAX_CHANGE_ID, -1); }