Exemple #1
0
        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());
        }
Exemple #2
0
        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);
        }
Exemple #3
0
        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());
            }
        }
Exemple #4
0
        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);
        }