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); }
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); }
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); }
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(); }
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() }); }
public void Remove(ChatRoomUsers userRoom) { _userRooms.Remove(userRoom); }
public void Add(ChatRoomUsers userRoom) { _userRooms.Add(userRoom); }
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(); }