Beispiel #1
0
        public async Task <IActionResult> JoinChatRoom(Guid RoomId, string UserNickName)
        {
            try
            {
                ChatRoomUsers chatRoomUsers      = new ChatRoomUsers();
                string        Json_ChatRoomUsers = await _distributedCache.GetStringAsync("ChatRoomUsers") ?? "";

                List <ChatRoomUsers> lst_ChatRoomUsers = JsonConvert.DeserializeObject <List <ChatRoomUsers> >(Json_ChatRoomUsers) ?? new List <ChatRoomUsers>();
                if (!lst_ChatRoomUsers.Any(x => x.UserNickName == UserNickName && x.ChatRoomId == RoomId))
                {
                    chatRoomUsers.ChatRoomId      = RoomId;
                    chatRoomUsers.UserNickName    = UserNickName;
                    chatRoomUsers.ChatRoomUsersId = Guid.NewGuid();

                    lst_ChatRoomUsers.Add(chatRoomUsers);

                    await _distributedCache.SetStringAsync("ChatRoomUsers", JsonConvert.SerializeObject(lst_ChatRoomUsers));

                    //MongoDB Loglama
                    //new BaseMongoRepository<ChatRoomUsers>(mongoConnectionString, "ChatApp", "ChatRoomLog").Create(chatRoomUsers);
                }
                return(Json(new { message = "İşlem Başarılı", success = true, ChatRoomUsersId = chatRoomUsers.ChatRoomUsersId }));
            }
            catch (Exception ex)
            {
                return(Json(new { message = ex.Message, success = false }));
            }
        }
        //Dinamik olarak ChatRoom yaratan metodum.
        public ChatRoomDTO GetChatRoom(string userName, string userName2)
        {
            ChatRoom        chat        = null;
            ChatRoomDTO     model       = new ChatRoomDTO();
            List <ChatRoom> chatRooms   = new List <ChatRoom>();
            var             user1       = _uow.User.Find(x => x.UserName == userName);
            var             user2       = _uow.User.Find(x => x.UserName == userName2);
            var             chatBoxUser = _uow.ChatRoomUsers.FindByList(x => x.UserId == user1.Id);

            if (chatBoxUser.Count != 0)
            {
                foreach (var item in chatBoxUser)
                {
                    chatRooms.AddRange(_uow.ChatRoom.FindByList(x => x.Id == item.ChatRoomId));
                }

                foreach (var item in chatRooms)
                {
                    if (_uow.ChatRoomUsers.Any(x => x.ChatRoomId == item.Id && x.UserId == user2.Id))
                    {
                        var chatroomuser = chatBoxUser.Where(x => x.ChatRoomId == item.Id).FirstOrDefault();
                        chat = _uow.ChatRoom.GetById(chatroomuser.ChatRoomId);
                    }
                    else
                    {
                        chat = new ChatRoom();
                        _uow.ChatRoom.Add(chat);
                        ChatRoomUsers chatRoom = new ChatRoomUsers();
                        chatRoom.ChatRoomId = chat.Id;
                        chatRoom.UserId     = user1.Id;
                        _uow.ChatRoomUsers.Add(chatRoom);
                        ChatRoomUsers chatRoom1 = new ChatRoomUsers();
                        chatRoom1.ChatRoomId = chat.Id;
                        chatRoom1.UserId     = user2.Id;
                        _uow.ChatRoomUsers.Add(chatRoom1);
                        _uow.SaveChange();
                    }
                }
            }
            else
            {
                chat = new ChatRoom();
                _uow.ChatRoom.Add(chat);
                ChatRoomUsers chatRoom = new ChatRoomUsers();
                chatRoom.ChatRoomId = chat.Id;
                chatRoom.UserId     = user1.Id;
                _uow.ChatRoomUsers.Add(chatRoom);
                ChatRoomUsers chatRoom1 = new ChatRoomUsers();
                chatRoom1.ChatRoomId = chat.Id;
                chatRoom1.UserId     = user2.Id;
                _uow.ChatRoomUsers.Add(chatRoom1);
                _uow.SaveChange();
            }
            model = _mapper.Map <ChatRoomDTO>(chat);
            return(model);
        }
Beispiel #3
0
        public void AddUserRoom(ChatUser user, ChatRoom room)
        {
            // Create new user room relationship
            var userRoom = new ChatRoomUsers()
            {
                ChatRoomKey           = room.Key,
                ChatUserId            = user.Id,
                ChatRoomKeyNavigation = room,
                ChatUserKeyNavigation = user
            };

            // Add relationship to both user and room
            user.Rooms.Add(userRoom);
            room.Users.Add(userRoom);
        }
Beispiel #4
0
        public static List <ChatRoomForApp> GetChats(int AccountID)
        {
            List <ChatRoomForApp> ret = new List <ChatRoomForApp>();

            //Tutte le chatroom dove è presente l'utente loggato
            List <ChatRoomUsers> accountsChatRoom = Utils.mysqlDB.EllAppDB.Select <ChatRoomUsers>(x => x.IDAccount == AccountID);

            foreach (ChatRoomUsers chatroomuser in accountsChatRoom)
            {
                ChatRoom       chatroomInfo = Utils.mysqlDB.EllAppDB.Single <ChatRoom>(x => x.ID == chatroomuser.IDChatRoom);
                ChatRoomUsers  cru          = Utils.mysqlDB.EllAppDB.Single <ChatRoomUsers>(x => x.IDChatRoom == chatroomuser.IDChatRoom && x.IDAccount != chatroomuser.IDAccount);
                ChatRoomForApp crfa         = null;

                switch (chatroomInfo.Type)
                {
                case ChatType.CHAT_TYPE_USER_TO_USER:

                    Account destinatario = Utils.mysqlDB.EllAppDB.Single <Account>(x => x.idAccount == cru.IDAccount);

                    crfa = new ChatRoomForApp
                    {
                        ChatRoomID     = chatroomInfo.ID,
                        ChatRoomName   = destinatario.username,
                        Destinatario   = destinatario.username,
                        DestinatarioID = destinatario.idAccount,
                        Type           = chatroomInfo.Type
                    };

                    ret.Add(crfa);
                    break;

                case ChatType.CHAT_TYPE_GROUP_CHAT:
                case ChatType.CHAT_TYPE_GLOBAL_CHAT:     //This have to be inserted manually to db with the correct TYPE.
                    crfa = new ChatRoomForApp
                    {
                        ChatRoomID   = chatroomInfo.ID,
                        ChatRoomName = chatroomInfo.Name,
                        Type         = chatroomInfo.Type
                    };

                    ret.Add(crfa);
                    break;
                }
            }
            return(ret);
        }
Beispiel #5
0
 public virtual void Dispose(bool disposing)
 {
     if (this._disposed)
     {
         return;
     }
     if (disposing)
     {
         Context.Dispose();
         UserManager.Dispose();
         ChatMessages.Dispose();
         ChatRooms.Dispose();
         ChatRoomUsers.Dispose();
         Friends.Dispose();
         PrivateMessages.Dispose();
     }
     this._disposed = true;
 }
        public void AddUserRoom(ChatUser user, ChatRoom room)
        {
            // First, create a ChatRoomUsers object to represent this relationship
            ChatRoomUsers userroom = new ChatRoomUsers()
            {
                ChatRoomKey           = room.Key,
                ChatUserId            = user.Id,
                ChatRoomKeyNavigation = room,
                ChatUserKeyNavigation = user
            };

            // Add the relationship to the room's user list
            room.Users.Add(userroom);
            user.Rooms.Add(userroom);

            // Update the DB
            _db.Add(userroom);
            _db.SaveChanges();
        }
Beispiel #7
0
        public JsonResult GetChattingUsers()
        {
            var crus = new ChatRoomUsers();

            crus.GetChattingUsers();

            if (crus.Count == 0) return null;

            var sb = new StringBuilder();

            foreach (ChatRoomUser cnt in crus)
            {
                sb.Append(cnt.ToUnorderdListItem);
            }

            return Json(new
            {
                ChattingUsers = sb.ToString()
            });
        }
Beispiel #8
0
 public void Remove(ChatRoomUsers userRoom)
 {
     _userRooms.Remove(userRoom);
 }
Beispiel #9
0
 public void Add(ChatRoomUsers userRoom)
 {
     _userRooms.Add(userRoom);
 }
Beispiel #10
0
        private static void CheckData(object sender)
        {
            //db
            UserAccounts.UpdateWhoIsOnline();

            var chatters = new ChatRoomUsers();
            chatters.GetChattingUsers();

            foreach (ChatRoomUser chatUser in from chatUser in chatters
                let user = new UserAccount(chatUser.CreatedByUserID)
                where !user.IsOnLine
                select chatUser)
            {
                chatUser.DeleteChatRoomUser();
            }
        }
 public void Add(ChatRoomUsers userRoom)
 {
     _db.ChatRoomUsers.Add(userRoom);
     _db.SaveChanges();
 }
 public void Remove(ChatRoomUsers userRoom)
 {
     _db.ChatRoomUsers.Remove(userRoom);
     _db.SaveChanges();
 }