private static void EnsureBlogPostThreadExists(string threadKey, IAuthor author, string threadTitle, BlogsManager manager, string language, ICommentService cs) { ThreadFilter threadFilter = new ThreadFilter(); threadFilter.ThreadKey.Add(threadKey); var thread = cs.GetThreads(threadFilter).SingleOrDefault(); if (thread == null) { var groupKey = ControlUtilities.GetUniqueProviderKey(typeof(BlogsManager).FullName, manager.Provider.Name); EnsureBlogPostGroupExists(groupKey, author, cs); var threadProxy = new ThreadProxy(threadTitle, typeof(BlogPost).FullName, groupKey, author) { Language = language, Key = threadKey }; thread = cs.CreateThread(threadProxy); } }
private static void EnsureBlogPostThreadExists(string threadKey, IAuthor author, string threadTitle, BlogsManager manager, string language, ICommentService cs) { ThreadFilter threadFilter = new ThreadFilter(); threadFilter.ThreadKey.Add(threadKey); var thread = cs.GetThreads(threadFilter).SingleOrDefault(); if (thread == null) { var groupKey = ControlUtilities.GetUniqueProviderKey(typeof(BlogsManager).FullName, manager.Provider.Name); EnsureBlogPostGroupExists(groupKey, author, cs); var threadProxy = new ThreadProxy(threadTitle, typeof(BlogPost).FullName, groupKey, author) { Language = language, Key = threadKey }; thread = cs.CreateThread(threadProxy); } }
/// <summary> /// Map using Automapper /// </summary> public static ThreadFilterDto MapToDtoEntity(this ThreadFilter filter) { return(Mapper.Map <ThreadFilter, ThreadFilterDto>(filter)); }
public void GetThreadsWithSubscribersCountBySubscriberMatchingTest() { User subscriber = new User() { Id = 2 }; var expected = new List <KeyValuePair <int, int> >() { // thread id, subscribers count new KeyValuePair <int, int>(2, 4), //0 Boston hc is; Music; It's Boston... new KeyValuePair <int, int>(3, 1), //1 u2 Default thread new KeyValuePair <int, int>(5, 5) //2 Skateboarding; Sport; It's more than sport }; var filter1 = new ThreadFilter() { Description = "It's" }; // 0 2 var filter2 = new ThreadFilter() { Name = "Boston" }; // 0 var filter3 = new ThreadFilter() { Topic = "Sp" }; // 2 var filter4 = new ThreadFilter() { Description = "It's", Topic = "Mu" }; // 0 var actual1 = ThreadRepository.GetThreadsWithSubscribersCountBySubscriberMatching(subscriber, filter1) .Select(kvp => new KeyValuePair <int, int>(kvp.Key.Id, kvp.Value)) .ToList(); var actual2 = ThreadRepository.GetThreadsWithSubscribersCountBySubscriberMatching(subscriber, filter2) .Select(kvp => new KeyValuePair <int, int>(kvp.Key.Id, kvp.Value)) .ToList(); var actual3 = ThreadRepository.GetThreadsWithSubscribersCountBySubscriberMatching(subscriber, filter3) .Select(kvp => new KeyValuePair <int, int>(kvp.Key.Id, kvp.Value)) .ToList(); var actual4 = ThreadRepository.GetThreadsWithSubscribersCountBySubscriberMatching(subscriber, filter4) .Select(kvp => new KeyValuePair <int, int>(kvp.Key.Id, kvp.Value)) .ToList(); Assert.Multiple(() => { CollectionAssert.AreEquivalent(new List <KeyValuePair <int, int> >() { expected[0], expected[2] }, actual1); CollectionAssert.AreEquivalent(new List <KeyValuePair <int, int> >() { expected[0] }, actual2); CollectionAssert.AreEquivalent(new List <KeyValuePair <int, int> >() { expected[2] }, actual3); CollectionAssert.AreEquivalent(new List <KeyValuePair <int, int> >() { expected[0] }, actual4); }); }
public List <KeyValuePair <ConvThread, int> > GetThreadsWithSubscribersCountByModeratorMatching(User moderator, ThreadFilter filter) { return(_dbContext.Threads .AsNoTracking() .FilteredBy(filter) .Where(t => t.ModeratorId == moderator.Id) .Include(t => t.Subscribers) .Select(t => new KeyValuePair <ConvThread, int>(t, t.Subscribers.Count)) .ToList()); }
public static IQueryable <ConvThread> FilteredBy(this IQueryable <ConvThread> seq, ThreadFilter filter) { if (!string.IsNullOrWhiteSpace(filter.Description)) { seq = seq.Where(t => t.Description.Contains(filter.Description)); } if (!string.IsNullOrWhiteSpace(filter.Name)) { seq = seq.Where(t => t.Name.Contains(filter.Name)); } if (!string.IsNullOrWhiteSpace(filter.Topic)) { seq = seq.Where(t => t.Topic.Contains(filter.Topic)); } return(seq); }
public List <KeyValuePair <ConvThread, int> > GetThreadsWithSubscribersCountBySubscriberMatching(User subscriber, ThreadFilter filter) { return(_dbContext.Threads .AsNoTracking() .Include(t => t.Subscribers) .FilteredBy(filter) .Where(t => t.Subscribers.Contains(subscriber, new UserIdEqualityComparer())) .Select(t => new KeyValuePair <ConvThread, int>(t, t.Subscribers.Count)) .ToList()); }