public void SendMessageToUser([FromBody] UserMessageContract message) { var m = message.ToUserMessage(); m.SenderId = HttpContext.User.Id(); _messageSource.SendMessage(m); }
public void SendMessage(UserMessageContract contract, string messagesUrl) { ParamIs.NotNull(() => contract); PermissionContext.VerifyPermission(PermissionToken.EditProfile); HandleTransaction(session => { var receiver = session.Query <User>().FirstOrDefault(u => u.Name.Equals(contract.Receiver.Name)); if (receiver == null) { throw new UserNotFoundException(); } var sender = session.Load <User>(contract.Sender.Id); VerifyResourceAccess(sender); SysLog("sending message from " + sender + " to " + receiver); var message = sender.SendMessage(receiver, contract.Subject, contract.Body, contract.HighPriority); if (receiver.EmailOptions == UserEmailOptions.PrivateMessagesFromAll || (receiver.EmailOptions == UserEmailOptions.PrivateMessagesFromAdmins && sender.EffectivePermissions.Has(PermissionToken.DesignatedStaff))) { var mailer = new UserMessageMailer(); mailer.Send(messagesUrl, message); } session.Save(message); }); }
public async Task <UserMessageContract> PostNewMessage(int id, UserMessageContract contract) { var mySettingsUrl = VocaUriBuilder.CreateAbsolute("User/MySettings").ToString(); var messagesUrl = VocaUriBuilder.CreateAbsolute("User/Messages").ToString(); return(await queries.SendMessage(contract, mySettingsUrl, messagesUrl)); }
public async Task SendMessage_NoPermission() { var sender = CreateEntry.User(name: "sender"); var receiver = CreateEntry.User(name: "receiver"); repository.Save(sender, receiver); var contract = new UserMessageContract { Sender = new UserForApiContract(sender), Receiver = new UserForApiContract(receiver), Subject = "Subject", Body = "Body" }; await data.SendMessage(contract, string.Empty, string.Empty); }
public void SendMessage() { var sender = CreateEntry.User(name: "sender"); var receiver = CreateEntry.User(name: "receiver", email: "*****@*****.**"); repository.Save(sender, receiver); permissionContext.SetLoggedUser(sender); var contract = new UserMessageContract { Sender = new UserForApiContract(sender), Receiver = new UserForApiContract(receiver), Subject = "Subject", Body = "Body" }; data.SendMessage(contract, string.Empty, string.Empty); Assert.AreEqual(1, sender.Messages.Count, "Number of messages for sender"); Assert.AreEqual(1, receiver.Messages.Count, "Number of messages for receiver"); var messagesInRepo = repository.List <UserMessage>(); Assert.AreEqual(2, messagesInRepo.Count, "Number of messages created"); var sentMessage = messagesInRepo.FirstOrDefault(m => m.Inbox == UserInboxType.Sent); Assert.IsNotNull(sentMessage, "Sent message"); Assert.AreEqual(sender.Messages[0], sentMessage, "Sent message is the same in user collection and repository"); Assert.AreEqual("Subject", sentMessage.Subject, "sentMessage.Subject"); Assert.AreEqual(sender, sentMessage.User, "Sent message user is the sender"); Assert.AreEqual(receiver, sentMessage.Receiver, "sentMessage.Receiver"); Assert.AreEqual(sender, sentMessage.Sender, "sentMessage.Sender"); var receivedMessage = messagesInRepo.FirstOrDefault(m => m.Inbox == UserInboxType.Received); Assert.IsNotNull(receivedMessage, "Received message"); Assert.AreEqual(receiver.Messages[0], receivedMessage, "Received message is the same in user collection and repository"); Assert.AreEqual("Subject", receivedMessage.Subject, "receivedMessage.Subject"); Assert.AreEqual(receiver, receivedMessage.User, "Received message user is the receiver"); Assert.AreEqual(receiver, receivedMessage.Receiver, "receivedMessage.Receiver"); Assert.AreEqual(sender, receivedMessage.Sender, "receivedMessage.Sender"); Assert.IsNotNull(mailer.Subject, "mailer.Subject"); Assert.AreEqual("*****@*****.**", mailer.ToEmail, "mailer.ToEmail"); }