public static MessageSend SendMessage(ComposeMessageRequestModel request)
        {
            MessageSend messageSend = new MessageSend();

            try
            {
                var chatroom = GetChatroom(request.ChatroomId, request.ParentChatroomId);

                var desiredUserId     = -1;
                var desiredUserHandle = "";

                var args = request.Message.Split(' ');
                if (args[0] == "/whisper")
                {
                    if (args.Length > 2)
                    {
                        desiredUserHandle = args[1];
                        desiredUserId     = chatroom.GetUserIdByHandle(desiredUserHandle);
                        if (desiredUserId == -1)
                        {
                            messageSend.Errors.Add(new ErrorModel("Desired User Not Found."));
                            messageSend.IsSent = false;
                            return(messageSend);
                        }
                        else
                        {
                            string s = "";
                            for (int i = 2; i < args.Length; i++)
                            {
                                s += args[i] + " ";
                            }

                            request.Message = s;
                        }
                    }
                    else
                    {
                        messageSend.Errors.Add(new ErrorModel("Invalid whisper format."));
                        messageSend.IsSent = false;
                        return(messageSend);
                    }
                }

                var createdMessages = MessageService.CreateMessages(request, chatroom.IsPrivate, chatroom.GetUserHandle(request.UserId), desiredUserId, desiredUserHandle);

                foreach (var m in createdMessages)
                {
                    chatroom.AddMessage(m);
                    messageSend.IsSent    = true;
                    messageSend.MessageId = m.Id;
                }
            }
            catch (Exception e)
            {
                messageSend.Errors.Add(new ErrorModel(e.ToString()));
                messageSend.IsSent = false;
            }

            return(messageSend);
        }
        public ActionResult ComposeMessage(ComposeMessageRequestModel request)
        {
            ComposeMessageResponseModel response = new ComposeMessageResponseModel();

            var user = UserService.GetUser(request.UserId);

            if (user == null || user.Role == Models.User_Model.RoleLevel.Blocked)
            {
                response.Logout = true;
            }
            else
            {
                try
                {
                    var m = ChatroomService.SendMessage(request);

                    response.MessageId = m.MessageId;
                    response.Errors.AddRange(m.Errors);
                }
                catch (Exception e)
                {
                    response.AddError(e.ToString());
                }
            }

            return(Json(response));
        }
        public void TestComposeAndGetNewMessages()
        {
            //Necessary to create the child chatroom before requesting its information
            var USER = _helper.testUsers[1];
            ChatroomController chatControllerTest = new ChatroomController();
            ChatRequestModel   model = new ChatRequestModel()
            {
                RawChatroomIdValue = "123404",
                UserHandle         = USER.DefaultHandle,
                ChatroomName       = "TestComposeAndGetNewMessages",
                User = new UserModel()
                {
                    Id = USER.Id, Username = USER.Username
                }
            };
            ChatResponseTestModel chatRoom = _helper.createChatroomAndAddUser(model);//for now don't do anything with the result

            //Right now every time we run the test another message gets added.
            ComposeMessageRequestModel messageModel = new ComposeMessageRequestModel()
            {
                Message          = "This is a test message",
                ChatroomId       = chatRoom.ChatroomModel.ChatroomId,
                UserId           = USER.Id,
                ParentChatroomId = chatRoom.ChatroomModel.ParentChatroomId,
                UserHandle       = USER.DefaultHandle
            };

            var msgResult = chatControllerTest.ComposeMessage(messageModel);

            //Create test data model
            GetNewMessagesRequestModel model2 = new GetNewMessagesRequestModel()
            {
                ChatroomId         = chatRoom.ChatroomModel.ChatroomId,
                UserId             = USER.Id,
                ExistingMessageIds = new List <int>(),
                ParentChatroomId   = chatRoom.ChatroomModel.ParentChatroomId,
                User = new UserModel()
                {
                    Id = USER.Id
                }
            };

            //Test that there are > 0 message results returned.
            var result = chatControllerTest.GetNewMessages(model2) as JsonResult;

            Assert.AreNotEqual(0, ((GetNewMessagesResponseModel)result.Data).MessagesInformation.Count);
        }
Exemple #4
0
        //if chatroomId is -1, means a private chatroom
        public static List <MessageDTO> CreateMessages(ComposeMessageRequestModel request, bool isPrivate, string userHandle, int desiredUserId, string desiredUserHandle)
        {
            var userId     = request.UserId;
            var chatroomId = isPrivate ? -1 : request.ChatroomId;
            var rawMessage = request.Message;

            string boldString   = request.Bold ? "font-weight:bold;" : "";
            string italicString = request.Italic ? "font-style: italic;" : "";
            string colorString  = desiredUserId == -1 ? "color:" + request.Color + ";" : "color:#0099FF;";
            string styleString  = string.Format("style=\"word-wrap:break-word; {0} {1} {2} \" ", colorString, boldString, italicString);

            ChatLocoContext DbContext = new ChatLocoContext();

            try
            {
                List <MessageDTO> createdMessages = new List <MessageDTO>();

                if (desiredUserId == -1)
                {
                    MessageDTO m = new MessageDTO()
                    {
                        UserId            = userId,
                        ChatroomId        = chatroomId,
                        RawMessage        = rawMessage,
                        DateCreated       = DateTime.Now,
                        IntendedForUserId = desiredUserId,
                        Style             = styleString
                    };
                    string currentTime = m.DateCreated.ToString("MM/dd [h:mm:ss tt]");

                    string formattedMessage = string.Format("{0} {1}: {2}", currentTime, userHandle, rawMessage);
                    m.FormattedMessage = formattedMessage;
                    DbContext.Messages.Add(m);
                    DbContext.SaveChanges();

                    MessageCache.Add(m.Id, m);

                    createdMessages.Add(m);
                }
                else
                {
                    //Create the private whisper
                    MessageDTO m = new MessageDTO()
                    {
                        UserId            = userId,
                        ChatroomId        = chatroomId,
                        RawMessage        = rawMessage,
                        DateCreated       = DateTime.Now,
                        IntendedForUserId = desiredUserId,
                        Style             = styleString
                    };
                    string currentTime = m.DateCreated.ToString("MM/dd [h:mm:ss tt]");

                    string formattedMessage = string.Format("{0} {1} : {2}", currentTime, "From " + userHandle, rawMessage);
                    m.FormattedMessage = formattedMessage;

                    DbContext.Messages.Add(m);
                    DbContext.SaveChanges();

                    MessageCache.Add(m.Id, m);

                    createdMessages.Add(m);

                    //Create the receipt
                    MessageDTO m2 = new MessageDTO()
                    {
                        UserId            = userId,
                        ChatroomId        = chatroomId,
                        RawMessage        = rawMessage,
                        DateCreated       = DateTime.Now,
                        IntendedForUserId = userId,
                        Style             = styleString
                    };

                    string formattedMessage2 = string.Format("{0} {1} : {2}", currentTime, "To " + desiredUserHandle, rawMessage);
                    m2.FormattedMessage = formattedMessage2;

                    DbContext.Messages.Add(m2);
                    DbContext.SaveChanges();

                    MessageCache.Add(m2.Id, m2);

                    createdMessages.Add(m2);
                }

                return(createdMessages);
            }
            catch (Exception e)
            {
                return(null);
            }
        }