/// <summary> /// Get all factors. /// </summary> /// <param name="context">Web service request context.</param> /// <returns>All factors.</returns> public static List <WebFactor> GetFactors(WebServiceContext context) { List <WebFactor> factors; WebFactor factor; Boolean getOnlyPublicFactors = !IsUserAuthorizedToReadNonPublicFactors(context); // Get cached information. factors = null; if (!context.IsInTransaction()) { factors = GetFactorInformation(context, getOnlyPublicFactors).Factors; } if (factors.IsNull()) { // Get information from database. factors = new List <WebFactor>(); using (DataReader dataReader = context.GetTaxonAttributeDatabase().GetFactors(getOnlyPublicFactors)) { while (dataReader.Read()) { factor = new WebFactor(); factor.LoadData(dataReader); factors.Add(factor); } } } return(factors); }
/// <summary> /// Get information about factors that matches the search criteria. /// </summary> /// <param name="context">Web service request context.</param> /// <param name="searchCriteria">The factor search criteria.</param> /// <returns>Factors that matches the search criteria.</returns> public static List <WebFactor> GetFactorsBySearchCriteria(WebServiceContext context, WebFactorSearchCriteria searchCriteria) { List <WebFactor> factors; Int32 factorId; String nameSearchMethodString, nameSearchString; WebFactor factor; // Check arguments. searchCriteria.CheckNotNull("searchCriteria"); searchCriteria.CheckData(); // Test if name search string is a factor id. if (searchCriteria.NameSearchString.IsNotNull() && searchCriteria.NameSearchString.SearchString.IsNotEmpty() && searchCriteria.IsIdInNameSearchString && Int32.TryParse(searchCriteria.NameSearchString.SearchString, out factorId)) { if (searchCriteria.RestrictSearchToFactorIds.IsNull()) { searchCriteria.RestrictSearchToFactorIds = new List <Int32>(); } searchCriteria.RestrictSearchToFactorIds.Add(factorId); searchCriteria.NameSearchString = null; } // Get information about factors from database. factors = new List <WebFactor>(); if (searchCriteria.NameSearchString.IsNotNull()) { // ReSharper disable once PossibleNullReferenceException foreach (StringCompareOperator compareOperator in searchCriteria.NameSearchString.CompareOperators) { switch (compareOperator) { case StringCompareOperator.BeginsWith: nameSearchMethodString = "Like"; nameSearchString = searchCriteria.NameSearchString.SearchString + "%"; break; case StringCompareOperator.Contains: nameSearchMethodString = "Like"; nameSearchString = "%" + searchCriteria.NameSearchString.SearchString + "%"; break; case StringCompareOperator.EndsWith: nameSearchMethodString = "Like"; nameSearchString = "%" + searchCriteria.NameSearchString.SearchString; break; case StringCompareOperator.Equal: nameSearchMethodString = "Exact"; nameSearchString = searchCriteria.NameSearchString.SearchString; break; case StringCompareOperator.Like: nameSearchMethodString = "Like"; nameSearchString = searchCriteria.NameSearchString.SearchString; break; default: throw new ArgumentException("GetFactorsBySearchCriteria Not supported string compare operator = " + compareOperator); } using (DataReader dataReader = context.GetTaxonAttributeDatabase().GetFactorsBySearchCriteria(searchCriteria.RestrictSearchToFactorIds, nameSearchString, nameSearchMethodString, searchCriteria.RestrictSearchToScope.ToString(), searchCriteria.RestrictReturnToScope.ToString())) { while (dataReader.Read()) { factor = new WebFactor(); factor.LoadData(dataReader); factors.Add(factor); } } if (factors.IsNotEmpty()) { break; } } } else { using (DataReader dataReader = context.GetTaxonAttributeDatabase().GetFactorsBySearchCriteria(searchCriteria.RestrictSearchToFactorIds, null, "Exact", searchCriteria.RestrictSearchToScope.ToString(), searchCriteria.RestrictReturnToScope.ToString())) { while (dataReader.Read()) { factor = new WebFactor(); factor.LoadData(dataReader); factors.Add(factor); } } } return(factors); }