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