public void SendMessageToUser([FromBody] UserMessageContract message)
        {
            var m = message.ToUserMessage();

            m.SenderId = HttpContext.User.Id();
            _messageSource.SendMessage(m);
        }
Beispiel #2
0
        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);
            });
        }
Beispiel #3
0
        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);
        }
Beispiel #5
0
        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");
        }