public static void AddMessage(this ChatHubRoom room, ChatHubMessage message)
 {
     if (!room.Messages.Any(x => x.Id == message.Id))
     {
         room.Messages.Add(message);
     }
 }
 public static void AddRoom(this List <ChatHubRoom> rooms, ChatHubRoom room)
 {
     if (!rooms.Any(x => x.Id == room.Id))
     {
         rooms.Add(room);
     }
 }
        private async Task InitContextRoomAsync()
        {
            try
            {
                if (PageState.QueryString.ContainsKey("roomid"))
                {
                    this.roomId = Int32.Parse(PageState.QueryString["roomid"]);
                    ChatHubRoom room = await this.ChatHubService.GetChatHubRoomAsync(roomId, ModuleState.ModuleId);

                    if (room != null)
                    {
                        this.title      = room.Title;
                        this.content    = room.Content;
                        this.type       = room.Type;
                        this.imageUrl   = room.ImageUrl;
                        this.createdby  = room.CreatedBy;
                        this.createdon  = room.CreatedOn;
                        this.modifiedby = room.ModifiedBy;
                        this.modifiedon = room.ModifiedOn;
                    }
                    else
                    {
                        await logger.LogError("Error Loading Room {ChatHubRoomId} {Error}", roomId);

                        ModuleInstance.AddModuleMessage("Error Loading ChatHub", MessageType.Error);
                    }
                }
            }
            catch (Exception ex)
            {
                await logger.LogError(ex, "Error Loading Room {ChatHubRoomId} {Error}", roomId, ex.Message);

                ModuleInstance.AddModuleMessage("Error Loading Room", MessageType.Error);
            }
        }
        public async void OnAddChatHubMessageExecute(object sender, ChatHubMessage message)
        {
            ChatHubRoom room = this.Rooms.FirstOrDefault(item => item.Id == message.ChatHubRoomId);

            this.AddMessage(message, room);
            this.UpdateUI();
        }
 public void AddMessage(ChatHubMessage message, ChatHubRoom room)
 {
     if (!room.Messages.Any(x => x.Id == message.Id))
     {
         room.Messages.Add(message);
     }
 }
 public void AddRoom(ChatHubRoom room)
 {
     if (!this.Rooms.Any(x => x.Id == room.Id))
     {
         this.Rooms.Add(room);
     }
 }
        public async Task <ChatHubRoom> CreateChatHubRoomClientModelAsync(ChatHubRoom room)
        {
            List <ChatHubMessage> lastMessages = new List <ChatHubMessage>();

            if (room.OneVsOne())
            {
                lastMessages = await this.chatHubRepository.GetChatHubMessages(room.Id, new TimeSpan(24, 0, 0)).ToListAsync();

                lastMessages = lastMessages != null && lastMessages.Any() ? lastMessages.Select(item => this.CreateChatHubMessageClientModel(item)).ToList() : new List <ChatHubMessage>();
            }

            List <ChatHubUser> onlineUsers = await this.chatHubRepository.GetOnlineUsers(room.Id).ToListAsync();

            onlineUsers = onlineUsers != null && onlineUsers.Any() ? onlineUsers = onlineUsers.Select(item => this.CreateChatHubUserClientModel(item)).ToList() : new List <ChatHubUser>();

            return(new ChatHubRoom()
            {
                Id = room.Id,
                ModuleId = room.ModuleId,
                Title = room.Title,
                Content = room.Content,
                ImageUrl = room.ImageUrl,
                Type = room.Type,
                Status = room.Status,
                Messages = lastMessages,
                Users = onlineUsers,
                CreatedOn = room.CreatedOn,
                CreatedBy = room.CreatedBy,
                ModifiedBy = room.ModifiedBy,
                ModifiedOn = room.ModifiedOn
            });
        }
        public ChatHubRoom GetOneVsOneRoom(ChatHubUser callerUser, ChatHubUser targetUser, int moduleId)
        {
            if (callerUser != null && targetUser != null)
            {
                var oneVsOneRoom = this.chatHubRepository.GetChatHubRoomOneVsOne(this.CreateOneVsOneId(callerUser, targetUser));
                if (oneVsOneRoom != null)
                {
                    return(oneVsOneRoom);
                }

                ChatHubRoom chatHubRoom = new ChatHubRoom()
                {
                    ModuleId   = moduleId,
                    Title      = string.Format("{0} vs {1}", callerUser.DisplayName, targetUser.DisplayName),
                    Content    = "One Vs One",
                    Type       = ChatHubRoomType.OneVsOne.ToString(),
                    Status     = ChatHubRoomStatus.Active.ToString(),
                    ImageUrl   = string.Empty,
                    OneVsOneId = this.CreateOneVsOneId(callerUser, targetUser)
                };
                return(this.chatHubRepository.AddChatHubRoom(chatHubRoom));
            }

            return(null);
        }
Exemple #9
0
        public async Task EnableArchiveRoom(ChatHubRoom room)
        {
            try
            {
                if (room.Status == ChatHubRoomStatus.Archived.ToString())
                {
                    room.Status = ChatHubRoomStatus.Enabled.ToString();
                }
                else if (room.Status == ChatHubRoomStatus.Enabled.ToString())
                {
                    room.Status = ChatHubRoomStatus.Archived.ToString();
                }

                await ChatHubService.UpdateChatHubRoomAsync(room);

                await logger.LogInformation("Room Archived {ChatHubRoom}", room);

                NavigationManager.NavigateTo(NavigateUrl());
            }
            catch (Exception ex)
            {
                await logger.LogError(ex, "Error Archiving Room {ChatHubRoom} {Error}", room, ex.Message);

                ModuleInstance.AddModuleMessage("Error Archiving Room", MessageType.Error);
            }
        }
Exemple #10
0
        public async Task SendMessage_Clicked(string messageInput, ChatHubRoom room)
        {
            await this.ChatHubService.SendMessage(messageInput, room.Id, ModuleState.ModuleId);

            room.MessageInput = string.Empty;
            this.StateHasChanged();
        }
Exemple #11
0
 public async void KeyDown(KeyboardEventArgs e, ChatHubRoom room)
 {
     if (!e.ShiftKey && e.Key == "Enter")
     {
         this.SendMessage_Clicked(room.MessageInput, room);
     }
 }
        public void ImportModule(Module module, string content, string version)
        {
            List <ChatHubRoom> chatHubs = null;

            if (!string.IsNullOrEmpty(content))
            {
                chatHubs = JsonSerializer.Deserialize <List <ChatHubRoom> >(content);
            }
            if (chatHubs != null)
            {
                foreach (ChatHubRoom chatHubRoom in chatHubs)
                {
                    ChatHubRoom room = new ChatHubRoom();
                    room.ModuleId        = module.ModuleId;
                    room.Title           = chatHubRoom.Title;
                    room.Content         = chatHubRoom.Content;
                    room.BackgroundColor = chatHubRoom.BackgroundColor;
                    room.ImageUrl        = chatHubRoom.ImageUrl;
                    room.Type            = chatHubRoom.Type;
                    room.Status          = chatHubRoom.Status;
                    room.OneVsOneId      = chatHubRoom.OneVsOneId;
                    _chatHubRepository.AddChatHubRoom(room);
                }
            }
        }
Exemple #13
0
        public static IList <ChatHubRoom> Swap <TItemGeneric>(this IList <ChatHubRoom> list, int x, int y)
        {
            ChatHubRoom temp = list[x];

            list[x] = list[y];
            list[y] = temp;
            return(list);
        }
        public static void RemoveRoom(this List <ChatHubRoom> rooms, ChatHubRoom room)
        {
            var chatRoom = rooms.First(x => x.Id == room.Id);

            if (chatRoom != null)
            {
                rooms.Remove(chatRoom);
            }
        }
        public void RemoveRoom(ChatHubRoom room)
        {
            var chatRoom = this.Rooms.First(x => x.Id == room.Id);

            if (chatRoom != null)
            {
                this.Rooms.Remove(chatRoom);
            }
        }
Exemple #16
0
 public ChatHubRoom UpdateChatHubRoom(ChatHubRoom ChatHubRoom)
 {
     try
     {
         db.Entry(ChatHubRoom).State = EntityState.Modified;
         db.SaveChanges();
         return(ChatHubRoom);
     }
     catch
     {
         throw;
     }
 }
Exemple #17
0
 public ChatHubRoom AddChatHubRoom(ChatHubRoom ChatHubRoom)
 {
     try
     {
         db.ChatHubRoom.Add(ChatHubRoom);
         db.SaveChanges();
         return(ChatHubRoom);
     }
     catch
     {
         throw;
     }
 }
Exemple #18
0
 public IQueryable <ChatHubModerator> GetChatHubModerators(ChatHubRoom ChatHubRoom)
 {
     try
     {
         return(db.Entry(ChatHubRoom)
                .Collection(item => item.RoomModerators)
                .Query().Select(item => item.Moderator));
     }
     catch
     {
         throw;
     }
 }
Exemple #19
0
 public IQueryable <ChatHubBlacklistUser> GetChatHubBlacklistUsers(ChatHubRoom ChatHubRoom)
 {
     try
     {
         return(db.Entry(ChatHubRoom)
                .Collection(item => item.RoomBlacklistUsers)
                .Query().Select(item => item.BlacklistUser));
     }
     catch
     {
         throw;
     }
 }
        public async Task SaveRoom()
        {
            try
            {
                if (roomId == -1)
                {
                    ChatHubRoom room = new ChatHubRoom()
                    {
                        ModuleId        = ModuleState.ModuleId,
                        Title           = this.title,
                        Content         = this.content,
                        BackgroundColor = this.backgroundcolor,
                        Type            = this.type,
                        Status          = ChatHubRoomStatus.Enabled.ToString(),
                        ImageUrl        = string.Empty,
                        OneVsOneId      = string.Empty,
                        CreatorId       = ChatHubService.ConnectedUser.UserId,
                    };

                    room = await this.ChatHubService.AddChatHubRoomAsync(room);

                    await logger.LogInformation("Room Added {ChatHubRoom}", room);

                    NavigationManager.NavigateTo(NavigateUrl());
                }
                else
                {
                    ChatHubRoom room = await this.ChatHubService.GetChatHubRoomAsync(roomId, ModuleState.ModuleId);

                    if (room != null)
                    {
                        room.Title           = this.title;
                        room.Content         = this.content;
                        room.BackgroundColor = this.backgroundcolor;
                        room.Type            = this.type;

                        await this.ChatHubService.UpdateChatHubRoomAsync(room);

                        await logger.LogInformation("Room Updated {ChatHubRoom}", room);

                        NavigationManager.NavigateTo(NavigateUrl());
                    }
                }
            }
            catch (Exception ex)
            {
                await logger.LogError(ex, "Error Saving Room {ChatHubRoomId} {Error}", roomId, ex.Message);

                ModuleInstance.AddModuleMessage("Error Saving Room", MessageType.Error);
            }
        }
Exemple #21
0
 public void DeleteChatHubRoom(int ChatHubRoomId, int ModuleId)
 {
     try
     {
         ChatHubRoom ChatHubRoom = db.ChatHubRoom.Where(item => item.Id == ChatHubRoomId)
                                   .Where(item => item.ModuleId == ModuleId).FirstOrDefault();
         db.ChatHubRoom.Remove(ChatHubRoom);
         db.SaveChanges();
     }
     catch
     {
         throw;
     }
 }
        public async Task <ChatHubRoom> CreateChatHubRoomClientModelAsync(ChatHubRoom room)
        {
            IList <ChatHubMessage> lastMessages = new List <ChatHubMessage>();

            if (room.OneVsOne())
            {
                lastMessages = this.chatHubRepository.GetChatHubMessages(room.Id, 42);
                lastMessages = lastMessages != null && lastMessages.Any() ? lastMessages.Select(item => this.CreateChatHubMessageClientModel(item)).ToList() : new List <ChatHubMessage>();
            }

            List <ChatHubUser> onlineUsers = await this.chatHubRepository.GetChatHubUsersByRoom(room).Online().ToListAsync();

            onlineUsers = onlineUsers != null && onlineUsers.Any() ? onlineUsers = onlineUsers.Select(item => this.CreateChatHubUserClientModel(item)).ToList() : new List <ChatHubUser>();

            IQueryable <ChatHubModerator> moderatorsQuery = this.chatHubRepository.GetChatHubModerators(room);
            IList <ChatHubModerator>      moderatorsList  = await moderatorsQuery.ToListAsync();

            IQueryable <ChatHubWhitelistUser> whitelistUsersQuery = this.chatHubRepository.GetChatHubWhitelistUsers(room);
            IList <ChatHubWhitelistUser>      whitelistUsersList  = await whitelistUsersQuery.ToListAsync();

            IQueryable <ChatHubBlacklistUser> blacklistUsersQuery = this.chatHubRepository.GetChatHubBlacklistUsers(room);
            IList <ChatHubBlacklistUser>      blacklistUsersList  = await blacklistUsersQuery.ToListAsync();

            ChatHubUser creator = await this.chatHubRepository.GetUserByIdAsync(room.CreatorId);

            return(new ChatHubRoom()
            {
                Id = room.Id,
                ModuleId = room.ModuleId,
                Title = room.Title,
                Content = room.Content,
                BackgroundColor = room.BackgroundColor ?? "#999999",
                ImageUrl = room.ImageUrl,
                Type = room.Type,
                Status = room.Status,
                OneVsOneId = room.OneVsOneId,
                CreatorId = room.CreatorId,
                Creator = creator,
                Messages = lastMessages,
                Users = onlineUsers,
                Moderators = moderatorsList,
                WhitelistUsers = whitelistUsersList,
                BlacklistUsers = blacklistUsersList,
                CreatedOn = room.CreatedOn,
                CreatedBy = room.CreatedBy,
                ModifiedBy = room.ModifiedBy,
                ModifiedOn = room.ModifiedOn
            });
        }
Exemple #23
0
        public async Task <ChatHubRoom> GetAsync(int id)
        {
            try
            {
                ChatHubRoom chatHubRoom            = chatHubRepository.GetChatHubRoom(id);
                ChatHubRoom chatHubRoomClientModel = await this.chatHubService.CreateChatHubRoomClientModelAsync(chatHubRoom);

                return(chatHubRoomClientModel);
            }
            catch (Exception ex)
            {
                logger.Log(LogLevel.Error, this, LogFunction.Read, ex, "Get Error {Error}", ex.Message);
                throw;
            }
        }
        public bool IsWhitelisted(ChatHubRoom room, ChatHubUser caller)
        {
            var whitelistuser = this.chatHubRepository.GetChatHubWhitelistUser(caller.UserId);

            if (whitelistuser != null)
            {
                var room_whitelistuser = this.chatHubRepository.GetChatHubRoomChatHubWhitelistUser(room.Id, whitelistuser.Id);

                if (room_whitelistuser != null || caller.UserId == room.CreatorId)
                {
                    return(true);
                }
            }

            return(false);
        }
        public bool IsBlacklisted(ChatHubRoom room, ChatHubUser caller)
        {
            var blacklistuser = this.chatHubRepository.GetChatHubBlacklistUser(caller.UserId);

            if (blacklistuser != null)
            {
                var room_blacklistuser = this.chatHubRepository.GetChatHubRoomChatHubBlacklistUser(room.Id, blacklistuser.Id);

                if (room_blacklistuser != null)
                {
                    return(true);
                }
            }

            return(false);
        }
Exemple #26
0
        public async Task SaveRoom()
        {
            try
            {
                if (roomId == -1)
                {
                    ChatHubRoom room = new ChatHubRoom()
                    {
                        ModuleId   = ModuleState.ModuleId,
                        Title      = title,
                        Content    = content,
                        Type       = Enum.GetName(typeof(ChatHubRoomType), ChatHubRoomType.Public),
                        Status     = Enum.GetName(typeof(ChatHubRoomStatus), ChatHubRoomStatus.Active),
                        ImageUrl   = string.Empty,
                        OneVsOneId = string.Empty,
                    };

                    room = await this.ChatHubService.AddChatHubRoomAsync(room);

                    await logger.LogInformation("Room Added {ChatHubRoom}", room);

                    NavigationManager.NavigateTo(NavigateUrl());
                }
                else
                {
                    ChatHubRoom room = await this.ChatHubService.GetChatHubRoomAsync(roomId, ModuleState.ModuleId);

                    if (room != null)
                    {
                        room.Title   = title;
                        room.Content = content;

                        await this.ChatHubService.UpdateChatHubRoomAsync(room);

                        await logger.LogInformation("Room Updated {ChatHubRoom}", room);

                        NavigationManager.NavigateTo(NavigateUrl());
                    }
                }
            }
            catch (Exception ex)
            {
                await logger.LogError(ex, "Error Saving Room {ChatHubRoomId} {Error}", roomId, ex.Message);

                ModuleInstance.AddModuleMessage("Error Saving Room", MessageType.Error);
            }
        }
        public async void OnAddChatHubMessageExecute(object sender, ChatHubMessage message)
        {
            ChatHubRoom room = this.Rooms.FirstOrDefault(item => item.Id == message.ChatHubRoomId);

            room.AddMessage(message);

            if (message.ChatHubRoomId.ToString() != this.ContextRoomId)
            {
                this.Rooms.FirstOrDefault(room => room.Id == message.ChatHubRoomId).UnreadMessages++;
            }

            this.RunUpdateUI();

            string elementId = string.Concat("#message-window-", this.ModuleId.ToString(), "-", message.ChatHubRoomId.ToString());

            await this.ScrollService.ScrollToBottom(elementId);
        }
Exemple #28
0
        public void UserlistItem_Clicked(MouseEventArgs e, ChatHubRoom room, ChatHubUser user)
        {
            if (user.UserlistItemCollapsed)
            {
                user.UserlistItemCollapsed = false;
            }
            else
            {
                foreach (var chatUser in room.Users.Where(x => x.UserlistItemCollapsed == true))
                {
                    chatUser.UserlistItemCollapsed = false;
                }
                user.UserlistItemCollapsed = true;
            }

            this.UpdateUIStateHasChanged();
        }
Exemple #29
0
        private async Task AddWaitingRoomItem(ChatHubUser user, ChatHubRoom room)
        {
            var chatHubWaitingRoomItem = new ChatHubWaitingRoomItem()
            {
                Guid        = Guid.NewGuid(),
                RoomId      = room.Id,
                UserId      = user.UserId,
                DisplayName = user.DisplayName
            };

            var roomCreator = await this.chatHubRepository.GetUserByIdAsync(room.CreatorId);

            foreach (var connection in roomCreator.Connections.Active())
            {
                await Clients.Client(connection.ConnectionId).SendAsync("AddWaitingRoomItem", chatHubWaitingRoomItem);
            }
        }
Exemple #30
0
 public async Task <ChatHubRoom> PutAsync(int id, [FromBody] ChatHubRoom ChatHubRoom)
 {
     try
     {
         if (ModelState.IsValid && ChatHubRoom.ModuleId == EntityId)
         {
             ChatHubRoom = chatHubRepository.UpdateChatHubRoom(ChatHubRoom);
             logger.Log(LogLevel.Information, this, LogFunction.Update, "ChatHubRoom Updated {ChatHubRoom}", ChatHubRoom);
         }
         return(await this.chatHubService.CreateChatHubRoomClientModelAsync(ChatHubRoom));
     }
     catch (Exception ex)
     {
         logger.Log(LogLevel.Error, this, LogFunction.Update, ex, "Put Error {Error}", ex.Message);
         throw;
     }
 }