/// <summary> /// Creates the recommendations from db /// </summary> /// <param name="readerCreator"></param> /// <returns></returns> public static Recommendations CreateRecommendationsFromDatabase(IDnaDataReaderCreator readerCreator) { Recommendations recommendations = null; // fetch all the lovely intellectual property from the database using (IDnaDataReader reader = readerCreator.CreateDnaDataReader("getacceptedentries")) { reader.Execute(); // Make sure we got something back if (!reader.HasRows || !reader.Read()) { throw new Exception("Recommendations not found"); } else { recommendations = new Recommendations(); recommendations.RecommendationsList = new List<Recommendation>(); int count = 0; do { Recommendation recommendation = new Recommendation(); recommendation.Subject = reader.GetStringNullAsEmpty("Subject"); recommendation.GuideStatus = reader.GetInt32NullAsZero("GuideStatus"); recommendation.AcceptedStatus = reader.GetByteNullAsZero("AcceptedStatus"); recommendation.Original = new ArticleIDs(); recommendation.Original.EntryId = reader.GetInt32NullAsZero("OriginalEntryID"); recommendation.Original.H2G2Id = reader.GetInt32NullAsZero("Originalh2g2ID"); recommendation.Edited = new ArticleIDs(); recommendation.Edited.EntryId = reader.GetInt32NullAsZero("EntryID"); recommendation.Edited.H2G2Id = reader.GetInt32NullAsZero("h2g2ID"); recommendation.Users = new List<UserElement>(); UserElement subEditor= new UserElement() { user = User.CreateUserFromReader(reader, "SubEditor") }; //User subEditor = User.CreateUserFromReader(reader, "SubEditor"); recommendation.Users.Add(subEditor); UserElement scout = new UserElement() { user = User.CreateUserFromReader(reader, "Scout") }; //User scout = User.CreateUserFromReader(reader, "Scout"); recommendation.Users.Add(scout); DateTime dateAllocated = DateTime.MinValue; DateTime dateReturned = DateTime.MinValue; bool existsDateAllocated = !reader.IsDBNull("DateAllocated"); bool existsDateReturned = !reader.IsDBNull("DateReturned"); if (existsDateAllocated) { //dateAllocated = reader.GetDateTime("DateAllocated"); recommendation.DateAllocated = new DateElement(reader.GetDateTime("DateAllocated")); } //recommendation.DateAllocated = new DateElement(dateAllocated); if (existsDateReturned) { //dateReturned = reader.GetDateTime("DateReturned"); recommendation.DateReturned = new DateElement(reader.GetDateTime("DateReturned")); } //recommendation.DateReturned = new DateElement(dateReturned); recommendations.RecommendationsList.Add(recommendation); count++; } while (reader.Read()); recommendations.Count = count; } } return recommendations; }
/// <summary> /// Creates the article search from db /// </summary> /// <param name="readerCreator"></param> /// <returns></returns> public static Search CreateUserSearchFromDatabase(IDnaDataReaderCreator readerCreator, int siteId, string searchString, string searchType, bool allowEmails, int startIndex, int itemsPerPage) { Search search = null; int count = 0; string query = GenerateANDSearchQuery(searchString); // fetch all the lovely intellectual property from the database using (IDnaDataReader reader = readerCreator.CreateDnaDataReader("SearchUsersByNameOrEmail")) { reader.AddParameter("NameOrEmail", query); if (allowEmails) { reader.AddParameter("searchemails", 1); } else { reader.AddParameter("searchemails", 0); } reader.AddParameter("SiteID", siteId); reader.AddParameter("skip", startIndex); reader.AddParameter("show", itemsPerPage); reader.Execute(); // Make sure we got something back if (!reader.HasRows || !reader.Read()) { throw ApiException.GetError(ErrorType.NoResults); } else { search = new Search(); search.SearchResults = new SearchResults(); search.SearchResults.SearchTerm = searchString; search.SearchResults.Type = searchType; search.SearchResults.StartIndex = startIndex; search.SearchResults.ItemsPerPage = itemsPerPage; search.SearchResults.Total = reader.GetInt32NullAsZero("Total") ; search.SearchResults.UserResults = new List<UserElement>(); do { UserElement user = new UserElement() { user = User.CreateUserFromReader(reader)} ; search.SearchResults.UserResults.Add(user); count++; } while (reader.Read()); } search.SearchResults.Count = count; } return search; }