public ActionResult GetNewMessages(GetNewMessagesRequestModel request) { int parentChatroomId = request.ParentChatroomId; int chatroomId = request.ChatroomId; List <int> existingIds = request.ExistingMessageIds; GetNewMessagesResponseModel response = new GetNewMessagesResponseModel(); var user = UserService.GetUser(request.UserId); if (user == null || user.Role == Models.User_Model.RoleLevel.Blocked) { response.Logout = true; } else { var messageInformationModels = ChatroomService.GetNewMessagesInformation(parentChatroomId, chatroomId, existingIds); foreach (var messageInformationModel in messageInformationModels) { if (messageInformationModel.IntendedForUserId != -1) { if (messageInformationModel.IntendedForUserId == request.UserId) { response.MessagesInformation.Add(messageInformationModel); } } else { response.MessagesInformation.Add(messageInformationModel); } } } return(Json(response)); }
public static List <ErrorModel> CanUserJoinChatroom(JoinChatroomRequestModel request) { var errors = new List <ErrorModel>(); if (request.User.Role == Models.User_Model.RoleLevel.Blocked) { errors.Add(new ErrorModel("User has been blocked.")); return(errors); } Chatroom c = ChatroomService.GetChatroom(request.ChatroomId, request.ParentChatroomId); if (c.HasPassword && !c.CheckPasswordHash(GetStringSha256Hash(request.Password))) { errors.Add(new ErrorModel("Incorrect Password.")); } else if (c.IsAtCapacity) { errors.Add(new ErrorModel("Chatroom is full.")); } else if (c.IsOnBlacklist(request.User.Username)) { errors.Add(new ErrorModel("User blocked from chatroom.")); } else if (c.DoesHandleExist(request.UserHandle)) { errors.Add(new ErrorModel("User Handle already exists in Chatroom.")); } return(errors); }
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 ActionResult Chat(ChatRequestModel request) { var response = new PartialViewModel(); var user = UserService.GetUser(request.User.Id); if (user == null || user.Role == Models.User_Model.RoleLevel.Blocked) { response.Logout = true; return(Json(response)); } int chatroomId = 0; if (request.RawChatroomIdValue != null) { chatroomId = request.RawChatroomIdValue.GetHashCode(); } int parentChatroomId = chatroomId; //temporary during initial testing string chatroomName = request.ChatroomName; if (!ChatroomService.DoesChatroomExist(chatroomId)) { ChatroomService.CreateChatroom(chatroomId, chatroomName); } var joinErrors = SecurityService.CanUserJoinChatroom(request); response.Errors.AddRange(joinErrors); if (joinErrors.Count == 0) { if (!ChatroomService.AddUserToChatroom(chatroomId, parentChatroomId, request.User.Id, request.UserHandle)) { response.AddError("Error adding user into chatroom."); } } var chatroomModel = new ChatroomModel() { ChatroomId = chatroomId, ChatroomName = chatroomName, ParentChatroomId = parentChatroomId, UserHandle = request.UserHandle, UserId = request.User.Id }; //response.Data = PartialView("~/Views/Chatroom/_Chat.cshtml", chatroomModel); response.Data = RenderPartialViewToString(this.ControllerContext, "~/Views/Chatroom/_Chat.cshtml", chatroomModel); return(Json(response)); }
public void Destroy() { IdleTimer.Enabled = false; IdleTimer.Stop(); IdleTimer.Dispose(); if (Parent != null) { Parent.AllSubChatrooms.Remove(Id); } ChatroomService.RemoveChatroomFromCache(Id); }
public ActionResult GetJoinChatroomForm(GetJoinChatroomFormRequestModel request) { var response = new PartialViewModel(); var model = new GetJoinChatroomFormResponseModel(); model.HasPassword = ChatroomService.HasPassword(request.ParentChatroomId, request.ChatroomId); model.ChatroomName = ChatroomService.GetChatroomName(request.ParentChatroomId, request.ChatroomId); model.NewChatroomId = request.ChatroomId; response.Data = RenderPartialViewToString(this.ControllerContext, "~/Views/Chatroom/_JoinChatroomForm.cshtml", model); return(Json(response)); }
public ActionResult GetChatroomInformation(GetChatroomInformationRequestModel request) { int parentChatroomId = request.ParentChatroomId; int chatroomId = request.ChatroomId; int userId = request.UserId; ChatroomService.UpdateUserInChatroom(parentChatroomId, chatroomId, userId); GetChatroomInformationResponseModel response = new GetChatroomInformationResponseModel() { UsersInformation = ChatroomService.GetUsersInformation(parentChatroomId, chatroomId), PrivateChatroomsInformation = ChatroomService.GetPrivateChatroomsInformation(parentChatroomId) }; return(Json(response)); }
public ActionResult DirtyLogout(LogoutRequestModel request) { var response = new LogoutResponseModel(); if (request.User != null) { if (request.ChatroomId != -1 && request.ParentChatroomId != -1) { ChatroomService.RemoveUserFromChatroom(request.ChatroomId, request.ParentChatroomId, request.User.Id); } UserService.Logout(request.User.Id); } return(Json(response)); }
public ActionResult CreateChatroom(CreateChatroomRequestModel request) { var response = new CreateChatroomResponseModel() { ChatroomName = request.ChatroomName, ParentChatroomId = request.ParentChatroomId, UserId = request.User.Id }; response.ChatroomId = request.ChatroomName.GetHashCode(); //TODO temporary until DB is linked up var errors = ChatroomService.CreatePrivateChatroom(request); response.Errors.AddRange(errors); return(Json(response)); }
//Helper method for creating a chatroom since MVC uses controller contexts to route the user to the chat partial view page/ //We don't need that routing here, all we need is the logic or 99% above that line so just replicate it here and //This will create a chatroom and add the user to it //The chatrrom only exists in memory while the tests are run. Each new build refreshes public ChatResponseTestModel createChatroomAndAddUser(ChatRequestModel request) { var response = new ChatResponseTestModel(); int chatroomId = 0; if (request.RawChatroomIdValue != null) { chatroomId = request.RawChatroomIdValue.GetHashCode(); } int parentChatroomId = chatroomId; //temporary during initial testing string chatroomName = request.ChatroomName; if (!ChatroomService.DoesChatroomExist(chatroomId)) { ChatroomService.CreateChatroom(chatroomId, chatroomName); } var joinErrors = SecurityService.CanUserJoinChatroom(request); response.Errors.AddRange(joinErrors); if (joinErrors.Count == 0) { if (!ChatroomService.AddUserToChatroom(chatroomId, parentChatroomId, request.User.Id, request.UserHandle)) { response.AddError("Error adding user into chatroom."); } } var chatroomModel = new ChatroomModel() { ChatroomId = chatroomId, ChatroomName = chatroomName, ParentChatroomId = parentChatroomId, UserHandle = request.UserHandle, UserId = request.User.Id }; response.ChatroomModel = chatroomModel; return(response); }
public ActionResult Logout(LogoutRequestModel request) { var response = new LogoutResponseModel(); if (request.ChatroomId != -1 && request.ParentChatroomId != -1) { if (!ChatroomService.RemoveUserFromChatroom(request.ChatroomId, request.ParentChatroomId, request.User.Id)) { response.AddError("Could not remove user from chatroom."); } } if (!UserService.Logout(request.User.Id)) { response.AddError("Could not logout user."); } return(Json(response)); }
public Server(IServiceProvider provider) { _provider = provider; _logger = provider.GetService <ILoggerFactory>()?.CreateLogger("Chat.Server"); _eventBus = provider.GetRequiredService <IEventBus>(); var eventLogger = provider.GetService <ILoggerFactory>()?.CreateLogger("Chat.Server.Events"); _eventBus.GetEventStream <DomainEvent>().Subscribe(e => eventLogger.LogInformation( e.GetType().Name + " " + JsonConvert.SerializeObject(e))); _userRepo = provider.GetRequiredService <IUserRepository>(); _chatroomRepo = provider.GetRequiredService <IChatroomRepository>(); _messageRepo = provider.GetRequiredService <IMessageRepository>(); _identityService = provider.GetRequiredService <IdentityService>(); _chatroomService = provider.GetRequiredService <ChatroomService>(); _messageService = provider.GetRequiredService <MessageService>(); _userClientService = provider.GetRequiredService <UserClientService>(); _chatroomService.EnsureGlobalChatroomCreated(); }
public ActionResult JoinChatroom(JoinChatroomRequestModel request) { int chatroomId = request.ChatroomId; int parentChatroomId = request.ParentChatroomId; int userId = request.UserId; string userHandle = request.UserHandle; JoinChatroomResponseModel response = new JoinChatroomResponseModel(); var joinErrors = SecurityService.CanUserJoinChatroom(request); response.Errors.AddRange(joinErrors); if (joinErrors.Count == 0) { ChatroomService.RemoveUserFromChatroom(request.CurrentChatroomId, parentChatroomId, userId); ChatroomService.AddUserToChatroom(chatroomId, parentChatroomId, userId, userHandle); response.Name = ChatroomService.GetChatroomName(parentChatroomId, chatroomId); response.Id = chatroomId; response.UserHandle = userHandle; } return(Json(response)); }
public ChatroomController(ChatroomService service) { _service = service ?? throw new ArgumentNullException(nameof(service)); }
public EmptyResult LeaveChatroom(LeaveChatroomRequestModel request) { ChatroomService.RemoveUserFromChatroom(request.ChatroomId, request.ParentId, request.UserId); return(new EmptyResult()); }
public ChatroomsController(UserManager <ChatUser> userManager, ChatroomService service) { _userManager = userManager; _service = service; }