Exemplo n.º 1
0
		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 (String.IsNullOrWhiteSpace(fullText))
				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);
		}
Exemplo n.º 2
0
		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 virtual int CreatePrivateMessage(PrivateMessage pm)
		{
			_sqlObjectFactory.GetConnection().Using(connection => pm.PMID = Convert.ToInt32(
				connection.Command("INSERT INTO pf_PrivateMessage (Subject, LastPostTime, UserNames) VALUES (@Subject, @LastPostTime, @UserNames)")
				.AddParameter("@Subject", pm.Subject)
				.AddParameter("@LastPostTime", pm.LastPostTime)
				.AddParameter("@UserNames", pm.UserNames)
				.ExecuteAndReturnIdentity()));
			return pm.PMID;
		}
		public PrivateMessage Get(int pmID)
		{
			PrivateMessage pm = null;
			_sqlObjectFactory.GetConnection().Using(connection =>
				connection.Command("SELECT PMID, Subject, LastPostTime, UserNames FROM pf_PrivateMessage WHERE PMID = @PMID")
				.AddParameter("@PMID", pmID)
				.ExecuteReader()
				.ReadOne(r => pm = new PrivateMessage { PMID = r.GetInt32(0),
												Subject = r.GetString(1),
												LastPostTime = r.GetDateTime(2),
												UserNames = r.GetString(3)}));
			return pm;
		}
		public void IsUserInPMFalse()
		{
			var service = GetService();
			var user = new User(1, DateTime.MinValue);
			var pm = new PrivateMessage { PMID = 2 };
			_mockPMRepo.Setup(p => p.GetUsers(pm.PMID)).Returns(new List<PrivateMessageUser> { new PrivateMessageUser { UserID = 765 } });
			Assert.False(service.IsUserInPM(user, pm));
		}
		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 void CreatePMPersistedIDReturned()
		{
			var service = GetService();
			var persist = new PrivateMessage();
			_mockPMRepo.Setup(p => p.CreatePrivateMessage(It.IsAny<PrivateMessage>())).Returns(69).Callback<PrivateMessage>(p => persist = p);
			_mockTextParse.Setup(t => t.EscapeHtmlAndCensor("ohqefwwf")).Returns("ohqefwwf");
			var pm = service.Create("ohqefwwf", "oihefio", new User(12, DateTime.MinValue) { Name = "jeff" }, new List<User> { new User(45, DateTime.MinValue) { Name = "diana" }, new User(67, DateTime.MinValue) { Name = "simon"} });
			Assert.AreEqual(69, pm.PMID);
			Assert.AreEqual("ohqefwwf", persist.Subject);
			Assert.AreEqual("jeff, diana, simon", persist.UserNames);
		}
Exemplo n.º 8
0
		public List<PrivateMessagePost> GetPosts(PrivateMessage pm)
		{
			return PrivateMessageRepository.GetPosts(pm.PMID);
		}
Exemplo n.º 9
0
		public void Unarchive(User user, PrivateMessage pm)
		{
			PrivateMessageRepository.SetArchive(pm.PMID, user.UserID, false);
		}
Exemplo n.º 10
0
		public void MarkPMRead(User user, PrivateMessage pm)
		{
			PrivateMessageRepository.SetLastViewTime(pm.PMID, user.UserID, DateTime.UtcNow);
		}
Exemplo n.º 11
0
		public bool IsUserInPM(User user, PrivateMessage pm)
		{
			var pmUsers = PrivateMessageRepository.GetUsers(pm.PMID);
			return (pmUsers.Where(p => p.UserID == user.UserID).Count() != 0);
		}
Exemplo n.º 12
0
		public static MvcHtmlString PMReadIndicator(this HtmlHelper helper, PrivateMessage pm, string path, string cssClass)
		{
			var alt = Resources.NoNewPosts;
			var image = "NoNewIndicator.png";
			if (pm.LastPostTime > pm.LastViewDate)
			{
				alt = Resources.NewPosts;
				image = "NewIndicator.png";
			}
			var build = new StringBuilder();
			build.Append("<img src=\"");
			build.Append(path);
			build.Append(image);
			build.Append("\" alt=\"");
			build.Append(alt);
			build.Append("\"");
			if (!String.IsNullOrEmpty(cssClass))
			{
				build.Append(" class=\"");
				build.Append(cssClass);
				build.Append("\"");
			}
			build.Append(" />");
			return MvcHtmlString.Create(build.ToString());
		}
Exemplo n.º 13
0
		public static MvcHtmlString PMReadIndicator(this HtmlHelper helper, PrivateMessage pm, string path)
		{
			return PMReadIndicator(helper, pm, path, null);
		}