public async Task <IActionResult> OnGet(int roomId) { if (roomId > 0) { await Task.Run(() => Room = _roomService.GetRoom(roomId, includeMessages: true)); } if (Room == null || !RoomPermissionHelper.CanViewRoom(_context.CurrentUser, Room)) { return(LocalRedirect(UrlHelper.GetAccessDeniedUrl())); } return(Page()); }
public async Task GetMessages(int roomId) { if (roomId <= 0) { await ReturnError("Could not retrieve messages", "You must specify a room."); return; } Room room = null; await Task.Run(() => room = _roomService.GetRoom(roomId)); if (room == null || !RoomPermissionHelper.CanViewRoom(_context.CurrentUser, room)) { await ReturnError("Could not retrieve messages", "You do not have permission, the room may have been deleted."); return; } // Retrieve last 300 messages List <Models.Message> hubMessages = null; await Task.Run(() => { List <Message> messages = _roomService.GetMessages(new MessageSearch()).ToList(); List <User> messageUsers = _userService.GetUserByUID(messages.Select(m => m.CreatedUID).ToArray()).ToList(); hubMessages = messages.Select(m => new Models.Message { Id = m.Id, UserName = messageUsers.First(u => m.CreatedUID.Equals(u.Id)).UserName, UserId = m.CreatedUID, Text = m.IsDeleted ? string.Empty : m.Text, IsDeleted = m.IsDeleted, ModifiedId = m.ModifiedUID, ModifiedUserName = messageUsers.First(u => u.Id.Equals(m.ModifiedUID)).UserName }) .ToList(); }); if (hubMessages == null) { await ReturnError("Could not retrieve messages", "Something went wrong, pleash refresh the page."); return; } await Clients.Caller.SendAsync("ReceiveMessages", hubMessages); }
public IActionResult OnGet(int id) { if (id > 0) { Room = _roomService.GetRoom(id); } if (Room == null || !RoomPermissionHelper.CanViewRoom(_context.CurrentUser, Room)) { return(LocalRedirect(UrlHelper.GetAccessDeniedUrl())); } else { return(Page()); } }
public async Task JoinRoom(int roomId) { if (roomId <= 0) { await ReturnError("Could not join room", "You must specify a room."); return; } Room room = null; await Task.Run(() => room = _roomService.GetRoom(roomId)); if (room == null || !RoomPermissionHelper.CanViewRoom(_context.CurrentUser, room)) { await ReturnError("Could not join room", "You do not have permission, the room may have been deleted."); return; } await Groups.AddToGroupAsync(Context.ConnectionId, roomId.ToString()); List <Models.Contact> hubContacts = new List <Models.Contact>(); await Task.Run(() => { hubContacts = _userService.GetUserByUID(room.Contacts.Select(c => c.ContactUID).ToArray()) .Select(u => new Models.Contact { Id = room.Contacts.First(c => c.ContactUID.Equals(u.Id)).Id, UserUID = u.Id, UserName = u.UserName }) .ToList(); }); await Clients.Caller.SendAsync("ReceiveContacts", hubContacts); Models.Contact caller = new Models.Contact { UserName = _context.CurrentUser.UserName, UserUID = _context.CurrentUser.Id }; await Clients.OthersInGroup(roomId.ToString()).SendAsync("ReceiveContact", caller); }