public async Task <ActionResult> Reply(MessageReplyViewModel message)
        {
            if (!ModelState.IsValid)
            {
                PreventSpamAttribute.Reset(HttpContext);

                if (Request.IsAjaxRequest())
                {
                    return(new JsonResult(CommandResponse.FromStatus(Status.Invalid, ModelState.GetFirstErrorMessage())));
                }
                else
                {
                    return(View());
                }
            }

            if (message.ID <= 0)
            {
                return(RedirectToAction("Sent", "Messages"));
            }

            var cmd      = new SendMessageReplyCommand(message.ID, message.Body).SetUserContext(User);
            var response = await cmd.Execute();

            return(JsonResult(response));
        }
Exemplo n.º 2
0
        public void TestInitialize()
        {
            //create user inbox
            Message message = null;

            TestHelper.SetPrincipal(userName);
            var msg = "1";
            var cmd = new SendMessageCommand(new Domain.Models.SendMessage()
            {
                Subject = "Chain", Recipient = "TestUser1", Message = msg
            });
            var response = cmd.Execute().Result;

            Assert.IsTrue(response.Success, "Expecting true on send");
            Assert.IsNotNull(response.Response, "Expecting non-null response");
            message = response.Response;
            messages.Add(message);

            TestHelper.SetPrincipal("TestUser1");
            msg = "1.1";
            var cmdReply      = new SendMessageReplyCommand(message.ID, msg);
            var responseReply = cmdReply.Execute().Result;

            Assert.IsTrue(responseReply.Success, "Expecting true on send");
            Assert.IsNotNull(responseReply.Response, "Expecting non-null response");
            message = responseReply.Response;
            messages.Add(message);


            TestHelper.SetPrincipal(userName);
            msg           = "1.1.1";
            cmdReply      = new SendMessageReplyCommand(message.ID, msg);
            responseReply = cmdReply.Execute().Result;
            Assert.IsTrue(responseReply.Success, "Expecting true on send");
            Assert.IsNotNull(responseReply.Response, "Expecting non-null response");
            message = responseReply.Response;
            messages.Add(message);

            TestHelper.SetPrincipal("TestUser1");
            msg           = "1.1.1.1";
            cmdReply      = new SendMessageReplyCommand(message.ID, msg);
            responseReply = cmdReply.Execute().Result;
            Assert.IsTrue(responseReply.Success, "Expecting true on send");
            Assert.IsNotNull(responseReply.Response, "Expecting non-null response");
            message = responseReply.Response;
            messages.Add(message);
        }
Exemplo n.º 3
0
        public async Task <ActionResult> Reply(MessageReplyViewModel message)
        {
            if (!ModelState.IsValid)
            {
                PreventSpamAttribute.Reset();
                if (Request.IsAjaxRequest())
                {
                    return(new HttpStatusCodeResult(HttpStatusCode.BadRequest, ModelState.GetFirstErrorMessage()));
                }
                else
                {
                    return(View());
                }
            }

            if (message.ID <= 0)
            {
                return(RedirectToAction("Sent", "Messages"));
            }

            var cmd      = new SendMessageReplyCommand(message.ID, message.Body);
            var response = await cmd.Execute();

            if (response.Success)
            {
                if (Request.IsAjaxRequest())
                {
                    return(new HttpStatusCodeResult(HttpStatusCode.OK));
                }
                else
                {
                    return(RedirectToAction("Sent", "Messages"));
                }
            }
            else
            {
                if (Request.IsAjaxRequest())
                {
                    return(new HttpStatusCodeResult(HttpStatusCode.BadRequest, response.Message));
                }
                else
                {
                    ModelState.AddModelError(string.Empty, response.Message);
                    return(View());
                }
            }
        }
        public async Task SendMessageReply_ToCommentRelatedMention()
        {
            //create a comment and ping another user aka comment mention

            var user = TestHelper.SetPrincipal("TestUser14");
            var c    = new CreateCommentCommand(1, null, "This is my comment @TestUser15, do you like it?").SetUserContext(user);
            var r    = await c.Execute();

            VoatAssert.IsValid(r);

            //read ping message and reply to it using message gateway
            var userName = "******";

            user = TestHelper.SetPrincipal(userName);
            var mq       = new Domain.Query.QueryMessages(user, MessageTypeFlag.CommentMention, MessageState.Unread).SetUserContext(user);
            var messages = await mq.ExecuteAsync();

            Assert.IsTrue(messages.Any(), "Didn't return any messages");

            var m = messages.FirstOrDefault(x => x.CommentID == r.Response.ID);

            Assert.IsNotNull(m, "Cant find message");

            var content  = "I reply to you from messages";
            var cmd      = new SendMessageReplyCommand(m.ID, content).SetUserContext(user);
            var response = await cmd.Execute();

            VoatAssert.IsValid(response);

            //ensure comment exists in thread as message gateway should submit a comment based on message type and info
            using (var db = new VoatDataContext())
            {
                var record = (from x in db.Comment
                              where
                              x.SubmissionID == m.SubmissionID.Value &&
                              x.ParentID == m.CommentID.Value &&
                              x.Content == content &&
                              x.UserName == userName
                              select x).FirstOrDefault();
                Assert.IsNotNull(record, "Can not find message in database");
            }
        }
Exemplo n.º 5
0
        public override void ClassInitialize()
        {
            var user2 = "TestUser01";
            //create user inbox
            Message message = null;

            var user = TestHelper.SetPrincipal(userName);
            var msg  = "1";
            var cmd  = new SendMessageCommand(new Domain.Models.SendMessage()
            {
                Subject = "Chain", Recipient = "TestUser01", Message = msg
            }).SetUserContext(user);
            var response = cmd.Execute().Result;

            VoatAssert.IsValid(response);

            message = response.Response;
            messages.Add(message);

            user = TestHelper.SetPrincipal(user2);
            //Find message
            var query = new QueryMessages(user, MessageTypeFlag.Private, MessageState.Unread, false).SetUserContext(user);
            var inbox = query.Execute();

            VoatAssert.IsValid(inbox);
            message = inbox.FirstOrDefault(x => x.Sender == USERNAMES.User50CCP && x.Content == msg);
            Assert.IsNotNull(message, "Can not find message in recipient inbox 1");

            msg = "1.1";
            var cmdReply      = new SendMessageReplyCommand(message.ID, msg).SetUserContext(user);
            var responseReply = cmdReply.Execute().Result;

            VoatAssert.IsValid(responseReply);
            messages.Add(message);


            user = TestHelper.SetPrincipal(userName);
            //Find message
            query = new QueryMessages(user, MessageTypeFlag.Private, MessageState.Unread, false).SetUserContext(user);
            inbox = query.Execute();
            VoatAssert.IsValid(inbox);
            message = inbox.FirstOrDefault(x => x.Sender == user2 && x.Content == msg);
            Assert.IsNotNull(message, "Can not find message in recipient inbox 2");

            msg           = "1.1.1";
            cmdReply      = new SendMessageReplyCommand(message.ID, msg).SetUserContext(user);
            responseReply = cmdReply.Execute().Result;
            VoatAssert.IsValid(responseReply);

            message = responseReply.Response;
            messages.Add(message);

            user = TestHelper.SetPrincipal(user2);
            //Find message
            query = new QueryMessages(user, MessageTypeFlag.Private, MessageState.Unread, false).SetUserContext(user);
            inbox = query.Execute();
            VoatAssert.IsValid(inbox);
            message = inbox.FirstOrDefault(x => x.Sender == USERNAMES.User50CCP && x.Content == msg);
            Assert.IsNotNull(message, "Can not find message in recipient inbox 3");

            msg           = "1.1.1.1";
            cmdReply      = new SendMessageReplyCommand(message.ID, msg).SetUserContext(user);
            responseReply = cmdReply.Execute().Result;
            VoatAssert.IsValid(responseReply);

            message = responseReply.Response;
            messages.Add(message);
        }
Exemplo n.º 6
0
        public async Task SendPrivateMessageReply()
        {
            var id        = Guid.NewGuid().ToString();
            var sender    = "User100CCP";
            var recipient = "anon";

            TestHelper.SetPrincipal(sender);

            var message = new Domain.Models.SendMessage()
            {
                //Sender = User.Identity.Name,
                Recipient = recipient,
                Subject   = id,
                Message   = id
            };
            var cmd      = new SendMessageCommand(message);
            var response = await cmd.Execute();

            var firstMessage = response.Response;

            Assert.IsNotNull(response, "Response is null");
            Assert.IsTrue(response.Success, response.Status.ToString());

            //Ensure first msg is in db
            using (var db = new voatEntities())
            {
                var record = (from x in db.Messages
                              where
                              x.Recipient == recipient &&
                              x.Sender == sender &&
                              x.Title == id &&
                              x.Content == id &&
                              x.Subverse == null &&
                              x.CommentID == null &&
                              x.SubmissionID == null &&
                              x.Type == (int)Domain.Models.MessageType.Sent
                              //&& x.Direction == (int)Domain.Models.MessageDirection.OutBound
                              select x).FirstOrDefault();
                Assert.IsNotNull(record, "Can not find outbound in database");

                record = (from x in db.Messages
                          where
                          x.Recipient == recipient &&
                          x.Sender == sender &&
                          x.Title == id &&
                          x.Content == id &&
                          x.Subverse == null &&
                          x.CommentID == null &&
                          x.SubmissionID == null &&
                          x.Type == (int)Domain.Models.MessageType.Private
                          //&& x.Direction == (int)Domain.Models.MessageDirection.InBound
                          select x).FirstOrDefault();
            }

            TestHelper.SetPrincipal(recipient);

            var replyCmd      = new SendMessageReplyCommand(firstMessage.ID, $"Reply to {firstMessage.ID.ToString()}");
            var replyResponse = await replyCmd.Execute();

            var replyMessage = replyResponse.Response;

            Assert.AreEqual(firstMessage.ID, replyMessage.ParentID);
        }
        public async Task SendPrivateMessageReply()
        {
            var id        = Guid.NewGuid().ToString();
            var sender    = USERNAMES.User100CCP;
            var recipient = "anon";

            var user = TestHelper.SetPrincipal(sender);

            var message = new Domain.Models.SendMessage()
            {
                //Sender = User.Identity.Name,
                Recipient = recipient,
                Subject   = id,
                Message   = id
            };
            var cmd      = new SendMessageCommand(message).SetUserContext(user);
            var response = await cmd.Execute();

            VoatAssert.IsValid(response);

            var firstMessage  = response.Response;
            var idToRespondTo = 0;

            //Ensure first msg is in db
            using (var db = new VoatDataContext())
            {
                var record = (from x in db.Message
                              where
                              x.Recipient == recipient &&
                              x.Sender == sender &&
                              x.Title == id &&
                              x.Content == id &&
                              x.Subverse == null &&
                              x.CommentID == null &&
                              x.SubmissionID == null &&
                              x.Type == (int)Domain.Models.MessageType.Sent
                              //&& x.Direction == (int)Domain.Models.MessageDirection.OutBound
                              select x).FirstOrDefault();
                Assert.IsNotNull(record, "Can not find sent in database");

                record = (from x in db.Message
                          where
                          x.Recipient == recipient &&
                          x.Sender == sender &&
                          x.Title == id &&
                          x.Content == id &&
                          x.Subverse == null &&
                          x.CommentID == null &&
                          x.SubmissionID == null &&
                          x.Type == (int)Domain.Models.MessageType.Private
                          //&& x.Direction == (int)Domain.Models.MessageDirection.InBound
                          select x).FirstOrDefault();
                Assert.IsNotNull(record, "Can not find message in database");

                idToRespondTo = record.ID;
            }

            //reply
            user = TestHelper.SetPrincipal(recipient);
            var replyCmd      = new SendMessageReplyCommand(idToRespondTo, $"Reply to {idToRespondTo.ToString()}").SetUserContext(user);
            var replyResponse = await replyCmd.Execute();

            VoatAssert.IsValid(replyResponse);

            var replyMessage = replyResponse.Response;

            Assert.AreEqual(idToRespondTo, replyMessage.ParentID);
        }