public 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 = PrivateMessageRepository.CreatePrivateMessage(pm); PrivateMessageRepository.AddUsers(pm.PMID, new List <int> { user.UserID }, now, true); 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 }; PrivateMessageRepository.AddPost(post); return(pm); }
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); }