public void ReplyMapsAndPresistsPost()
        {
            var service = GetService();
            var post    = new PrivateMessagePost();

            _mockPMRepo.Setup(p => p.AddPost(It.IsAny <PrivateMessagePost>())).Callback <PrivateMessagePost>(p => post = p);
            var user = new User(1, DateTime.MinValue)
            {
                Name = "jeff"
            };
            var pm = new PrivateMessage {
                PMID = 2
            };
            var text = "mah message";

            _mockTextParse.Setup(t => t.ForumCodeToHtml(text)).Returns(text);
            _mockPMRepo.Setup(p => p.GetUsers(pm.PMID)).Returns(new List <PrivateMessageUser> {
                new PrivateMessageUser {
                    UserID = user.UserID
                }
            });
            service.Reply(pm, text, user);
            Assert.AreEqual(text, post.FullText);
            Assert.AreEqual(user.Name, post.Name);
            Assert.AreEqual(user.UserID, post.UserID);
            Assert.AreEqual(pm.PMID, post.PMID);
        }
        public async Task CreatePostPersist()
        {
            var user = new User {
                UserID = 12, Name = "jeff"
            };
            var to1 = new User {
                UserID = 45
            };
            var to2 = new User {
                UserID = 67
            };
            var service = GetService();

            _mockPMRepo.Setup(p => p.CreatePrivateMessage(It.IsAny <PrivateMessage>())).ReturnsAsync(69);
            var post = new PrivateMessagePost();

            _mockPMRepo.Setup(p => p.AddPost(It.IsAny <PrivateMessagePost>())).Callback <PrivateMessagePost>(p => post = p);
            _mockTextParse.Setup(t => t.ForumCodeToHtml("oihefio")).Returns("oihefio");
            await service.Create("ohqefwwf", "oihefio", user, new List <User> {
                to1, to2
            });

            Assert.Equal("oihefio", post.FullText);
            Assert.Equal("jeff", post.Name);
            Assert.Equal(69, post.PMID);
            Assert.Equal(user.UserID, post.UserID);
        }
Ejemplo n.º 3
0
        public virtual int AddPost(PrivateMessagePost post)
        {
            var users = GetUsers(post.PMID);

            foreach (var user in users)
            {
                _cacheHelper.RemoveCacheObject(CacheKeys.PMCount(user.UserID));
            }
            _sqlObjectFactory.GetConnection().Using(connection =>
                                                    post.PMPostID = connection.QuerySingle <int>("INSERT INTO pf_PrivateMessagePost (PMID, UserID, Name, PostTime, FullText) VALUES (@PMID, @UserID, @Name, @PostTime, @FullText);SELECT CAST(SCOPE_IDENTITY() as int)", new { post.PMID, post.UserID, post.Name, post.PostTime, post.FullText }));
            return(post.PMPostID);
        }
Ejemplo n.º 4
0
        public async Task <PrivateMessage> Create(string subject, string fullText, User user, List <User> toUsers)
        {
            if (String.IsNullOrWhiteSpace(subject))
            {
                throw new ArgumentNullException("subject");
            }
            if (String.IsNullOrWhiteSpace(fullText))
            {
                throw new ArgumentNullException("fullText");
            }
            if (user == null)
            {
                throw new ArgumentNullException("user");
            }
            if (toUsers == null || toUsers.Count == 0)
            {
                throw new ArgumentException("toUsers must include at least one user.", "toUsers");
            }
            var names = user.Name;

            foreach (var toUser in toUsers)
            {
                names += ", " + toUser.Name;
            }
            var now = DateTime.UtcNow;
            var pm  = new PrivateMessage
            {
                Subject      = _textParsingService.EscapeHtmlAndCensor(subject),
                UserNames    = names,
                LastPostTime = now
            };

            pm.PMID = await _privateMessageRepository.CreatePrivateMessage(pm);

            await _privateMessageRepository.AddUsers(pm.PMID, new List <int> {
                user.UserID
            }, now, true);

            await _privateMessageRepository.AddUsers(pm.PMID, toUsers.Select(u => u.UserID).ToList(), now.AddSeconds(-1), false);

            var post = new PrivateMessagePost
            {
                FullText = _textParsingService.ForumCodeToHtml(fullText),
                Name     = user.Name,
                PMID     = pm.PMID,
                PostTime = now,
                UserID   = user.UserID
            };
            await _privateMessageRepository.AddPost(post);

            return(pm);
        }
Ejemplo n.º 5
0
        public virtual int AddPost(PrivateMessagePost post)
        {
            var users = GetUsers(post.PMID);

            foreach (var user in users)
            {
                _cacheHelper.RemoveCacheObject(CacheKeys.PMCount(user.UserID));
            }
            _sqlObjectFactory.GetConnection().Using(connection => post.PMPostID = Convert.ToInt32(
                                                        connection.Command("INSERT INTO pf_PrivateMessagePost (PMID, UserID, Name, PostTime, FullText) VALUES (@PMID, @UserID, @Name, @PostTime, @FullText)")
                                                        .AddParameter("@PMID", post.PMID)
                                                        .AddParameter("@UserID", post.UserID)
                                                        .AddParameter("@Name", post.Name)
                                                        .AddParameter("@PostTime", post.PostTime)
                                                        .AddParameter("@FullText", post.FullText)
                                                        .ExecuteAndReturnIdentity()));
            return(post.PMPostID);
        }
        public void Reply(PrivateMessage pm, string fullText, User user)
        {
            if (pm == null || pm.PMID == 0)
            {
                throw new ArgumentException("Can't reply to a PM that hasn't been persisted.", "pm");
            }
            if (fullText == null)
            {
                throw new ArgumentNullException("fullText");
            }
            if (user == null)
            {
                throw new ArgumentNullException("user");
            }
            if (!IsUserInPM(user, pm))
            {
                throw new Exception("Can't add a PM reply for a user not part of the PM.");
            }
            var post = new PrivateMessagePost
            {
                FullText = TextParsingService.ForumCodeToHtml(fullText),
                Name     = user.Name,
                PMID     = pm.PMID,
                PostTime = DateTime.UtcNow,
                UserID   = user.UserID
            };

            PrivateMessageRepository.AddPost(post);
            var users = PrivateMessageRepository.GetUsers(pm.PMID);

            foreach (var u in users)
            {
                PrivateMessageRepository.SetArchive(pm.PMID, u.UserID, false);
            }
            var now = DateTime.UtcNow;

            PrivateMessageRepository.UpdateLastPostTime(pm.PMID, now);
            PrivateMessageRepository.SetLastViewTime(pm.PMID, user.UserID, now);
        }
        public void CreatePostPersist()
        {
            var user = new User(12, DateTime.MinValue)
            {
                Name = "jeff"
            };
            var to1     = new User(45, DateTime.MinValue);
            var to2     = new User(67, DateTime.MinValue);
            var service = GetService();

            _mockPMRepo.Setup(p => p.CreatePrivateMessage(It.IsAny <PrivateMessage>())).Returns(69);
            var post = new PrivateMessagePost();

            _mockPMRepo.Setup(p => p.AddPost(It.IsAny <PrivateMessagePost>())).Callback <PrivateMessagePost>(p => post = p);
            _mockTextParse.Setup(t => t.ForumCodeToHtml("oihefio")).Returns("oihefio");
            service.Create("ohqefwwf", "oihefio", user, new List <User> {
                to1, to2
            });
            Assert.AreEqual("oihefio", post.FullText);
            Assert.AreEqual("jeff", post.Name);
            Assert.AreEqual(69, post.PMID);
            Assert.AreEqual(user.UserID, post.UserID);
        }