Exemplo n.º 1
0
        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);
            }
        }
Exemplo n.º 2
0
        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);
            }
        }
Exemplo n.º 3
0
 /// <summary>
 /// Map using Automapper
 /// </summary>
 public static ThreadFilterDto MapToDtoEntity(this ThreadFilter filter)
 {
     return(Mapper.Map <ThreadFilter, ThreadFilterDto>(filter));
 }
Exemplo n.º 4
0
        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);
            });
        }
Exemplo n.º 5
0
 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());
 }
Exemplo n.º 6
0
 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);
 }
Exemplo n.º 7
0
 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());
 }