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); }
//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); } }