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); }
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); }
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); }
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); }