public IActionResult Add([FromBody] ChatRoomModel chatRoom) { // create chat room var room = _chatRoomDataService.Add(chatRoom); return(Ok(room)); }
/// <summary> /// Add a chat room to the database. /// </summary> /// <param name="chatRoomModel"> Chat room to add. </param> public ChatRoomModel Add(ChatRoomModel chatRoomModel) { var chatRoom = new ChatRoom() { DisplayName = chatRoomModel.DisplayName }; _chatContext.ChatRooms.Add(chatRoom); _chatContext.SaveChanges(); _chatContext.Entry(chatRoom).Collection(i => i.UserRooms).Load(); // set dto model's id chatRoomModel.Id = chatRoom.Id; foreach (var user in chatRoomModel.Users) { var userRoom = new UserRoom() { UserId = user.Id, ChatRoomId = chatRoom.Id }; chatRoom.UserRooms.Add(userRoom); } _chatContext.SaveChanges(); return(chatRoomModel); }
public ActionResult Chat() { ChatRoomModel crmod = new ChatRoomModel(); crmod.Icerik = "Mesajlaşmak için sohbet geçmişini kullanın..."; return(PartialView(crmod)); }
public ChatRoomsViewModel() { ChatRooms = new ObservableCollection <ChatRoomModel>(ChatRoomModel.LoadAll()); _updateTimer.Start(); _updateTimer.Elapsed += (sender, e) => Application.Current.Dispatcher.Invoke(Update); }
public ChatRoomViewModel() { chatRoomModel = new ChatRoomModel(); sendMessageCommand = new RelayCommand(sendExecuteMethod); closeCommand = new RelayCommand(closeExecuteMethod); chatRoomModel.update += NotifyUpdate; chatRoomModel.move += MoveScrollToMiddle; }
public ActionResult Chat(string gonderici, string aliciid) { ChatRoomModel crmod = new ChatRoomModel(); crmod.msgs = MrRepo.GetAll(m => (m.RecieverId == aliciid && m.SenderId == gonderici) || (m.RecieverId == gonderici && m.SenderId == aliciid)).ToList(); crmod.Gonderici = gonderici; crmod.Alici = aliciid; return(PartialView(crmod)); }
public IEnumerable <ChatRoomModel> GetAll() { var chatRoomEntities = this.chatRoomRepository.All().ToList(); var chatRoomModels = from chatRoomEntity in chatRoomEntities select ChatRoomModel.Convert(chatRoomEntity); return(chatRoomModels.ToList()); }
public bool addComment(string name, string chatRoomID, string comment) { List <ChatRoomModel> q = this.TestCacheAdapter.Get(chatRoomID).ToList(); ChatRoomModel chatRoomModel = new ChatRoomModel() { Name = name, Comment = comment, CreatedDate = DateTime.Now }; q.Add(chatRoomModel); return(this.TestCacheAdapter.Set(chatRoomID, JsonConvert.SerializeObject(q))); }
public ChatRoomModel CreateChatRoom(ChatRoomModel chatRoom) { var count = conn.QueryFirst <int>(string.Format(COUNT_CHATROOM, chatRoom.Name)); if (count == 0) { conn.Execute(string.Format( INSERT_CHATROOM, chatRoom.Name, chatRoom.UserId, chatRoom.IsPublic ? 1 : 0, chatRoom.Password, Guid.NewGuid().ToString("N"))); return(conn.QueryFirst <ChatRoomModel>(string.Format(QUERY_CHATROOM_NAME, chatRoom.Name))); } else { return(default);
void GetVideoFeedUrl(ChatRoomModel parameter) { if (parameter == null) { return; } if (string.IsNullOrEmpty(parameter.VideoFeedUrl)) { const string VIDEO_URL_START = "initHlsPlayer(jsplayer, '"; const string VIDEO_URL_END = "');"; using (var webClient = new ExtendedWebClient()) { string html; try { html = webClient.DownloadString(new Uri(parameter.ProfileUrl, UriKind.Absolute)); } catch (WebException) { return; } if (string.IsNullOrEmpty(html)) { return; } var start = html.IndexOf(VIDEO_URL_START); if (start > -1) { var end = html.IndexOf(VIDEO_URL_END, start + VIDEO_URL_START.Length); var url = html.Substring(start + VIDEO_URL_START.Length, end - start - VIDEO_URL_START.Length); parameter.VideoFeedUrl = url; SelectedRoom = parameter; } } } else { SelectedRoom = parameter; } }
public ActionResult SendMessage(Message msg) { Message mess = new Message(); mess.RecieverId = msg.RecieverId; mess.SenderId = msg.SenderId; mess.SentMessage = msg.SentMessage; mess.IsDeleted = false; mess.IsRead = false; if (MrRepo.Add(mess)) { //Güncelleme ChatRoomModel crm = new ChatRoomModel(); crm.Alici = msg.RecieverId; crm.Gonderici = msg.SenderId; return(PartialView("Chat", crm)); } return(PartialView()); }
private void Update() { var allChats = ChatRoomModel.LoadAll(); var remove = ChatRooms.Except(allChats); foreach (var chat in remove.ToList()) { ChatRooms.Remove(chat); } var add = allChats.Except(ChatRooms); foreach (var chat in add.ToList()) { ChatRooms.Add(chat); } foreach (var chat in ChatRooms) { chat.Load(); } }
public void NotificationReceived(NotificationType type, params object[] data) { switch (type) { case NotificationType.TabPageChanged: if (Shared.Instance.Settings.IsAutoPauseEnabled) { var index = (int)data[0]; if (index == 5 && (State == LiveStreamPlayerState.Paused || State == LiveStreamPlayerState.Pause)) { State = LiveStreamPlayerState.Play; } else if (index != 5 && State == LiveStreamPlayerState.Playing) { State = LiveStreamPlayerState.Pause; } } break; case NotificationType.ChatRoomSelected: SelectedRoom = (ChatRoomModel)data[0]; break; } }
public void LoadDoubleRoom(ChatRoomModel chatRoom) { chatRooms.Add(chatRoom); }
public ChatViewModel(ChatRoomModel chat) { Chat = chat; }
public ChatViewModel(EmployeeModel employee) { Chat = ChatRoomModel.CreateChat(employee); }
IList <ChatRoomModel> GetChatRooms(NavigationDirection parameter) { var chatRooms = new List <ChatRoomModel>(); switch (parameter) { case NavigationDirection.Forward: Page += 1; break; case NavigationDirection.Backward: if (Page > 1) { Page -= 1; } break; case NavigationDirection.Refresh: default: if (Page == 0) { Page = 1; } break; } var url = string.Format("{0}/?page={1}", CHATURBATE, Page); switch (RoomsGender) { case Gender.Male: url = string.Format("{0}/male-cams/?page={1}", CHATURBATE, Page); break; case Gender.Female: url = string.Format("{0}/female-cams/?page={1}", CHATURBATE, Page); break; case Gender.Couple: url = string.Format("{0}/couple-cams/?page={1}", CHATURBATE, Page); break; case Gender.Trans: url = string.Format("{0}/trans-cams/?page={1}", CHATURBATE, Page); break; } string html; using (var client = new ExtendedWebClient()) { client.Host = HOST; try { html = client.DownloadString(new Uri(url, UriKind.Absolute)); } catch (WebException) { return(chatRooms); } } var parser = new HtmlDocument(); parser.LoadHtml(html); HtmlNode tempNode; foreach (var node in parser.DocumentNode.SelectNodes("//ul[@class='list']/li")) { tempNode = node.SelectSingleNode("./a/img[@class='png']"); var profileImageUrl = tempNode.Attributes["src"].Value; var profileImageHeight = int.Parse(tempNode.Attributes["height"].Value); var profileImageWidth = int.Parse(tempNode.Attributes["width"].Value); tempNode = node.SelectSingleNode("./div[contains(@class,'thumbnail_label')]"); var isVideoFeedHd = tempNode.InnerText.Equals("HD", StringComparison.InvariantCultureIgnoreCase); tempNode = node.SelectSingleNode("./div/ul[@class='subject']/li"); var title = tempNode.Attributes["title"].Value; tempNode = node.SelectSingleNode("./div[@class='details']/div[@class='title']/a"); var name = tempNode.InnerText.Trim(); var profileUrl = string.Format("{0}{1}", CHATURBATE, tempNode.Attributes["href"].Value); tempNode = node.SelectSingleNode("./div[@class='details']/div[@class='title']/span[contains(@class,'age')]"); int.TryParse(tempNode.InnerText, out int age); var genderString = tempNode.Attributes["class"].Value; Gender gender; if (genderString.Contains("genderm")) { gender = Gender.Male; } else if (genderString.Contains("genderf")) { gender = Gender.Female; } else if (genderString.Contains("genderc")) { gender = Gender.Couple; } else { gender = Gender.Trans; } tempNode = node.SelectSingleNode("./div[@class='details']/ul[@class='sub-info']/li[@class='cams']"); var cams = tempNode.InnerText; var chatRoom = new ChatRoomModel(name, age, gender, title, profileUrl, profileImageUrl, profileImageHeight, profileImageWidth); chatRoom.IsVideoFeedHd = isVideoFeedHd; chatRoom.CamsCount = cams; chatRooms.Add(chatRoom); } return(chatRooms); }
public ActionResult Index() { ChatRoomModel model = new ChatRoomModel(); return(PartialView(model)); }
public ChatRoomModel CreateRoom(ChatRoomModel chatRoom) { chatRoom = database.CreateChatRoom(chatRoom); wsService.OpenRoom(chatRoom.Url); return(chatRoom); }
void PlayVideoFeed(ChatRoomModel chatRoom) { string playerPath, arguments; var useVlc = "VLC".Equals(Settings.MediaPlayer); if (useVlc) { playerPath = GetVlcExecutablePath(); var VlcArgumentsBuilder = new StringBuilder(); // hide controls if (Settings.IsExternalMediaPlayerControlsHidden) { VlcArgumentsBuilder.Append(" --qt-minimal-view"); } // full screen if (Settings.IsExternalMediaPlayerFullScreen) { VlcArgumentsBuilder.Append(" --fullscreen"); } // show URL in title bar if (!Settings.IsUrlShown) { VlcArgumentsBuilder.AppendFormat(" --meta-title=\"{0}\"", chatRoom.Name); } // video feed URL VlcArgumentsBuilder.AppendFormat(" {0}", chatRoom.VideoFeedUrl); // recording options if (Settings.IsAutoSaveVideosEnabled) { var videoDirectory = Settings.AutoSaveDirectory; if (string.IsNullOrEmpty(videoDirectory)) { videoDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyVideos); } if (Directory.Exists(videoDirectory)) { VlcArgumentsBuilder.AppendFormat(" --sout=\"#duplicate{{dst=std{{access=file,dst='{0}{1}.mp4'}},dst=display}}\"", videoDirectory, chatRoom.Name); } } arguments = VlcArgumentsBuilder.ToString().Trim(); } else { playerPath = GetWmpExecutablePath(); arguments = string.Format("\"{0}\"", chatRoom.VideoFeedUrl, chatRoom.Name); } if (string.IsNullOrEmpty(playerPath) || string.IsNullOrEmpty(arguments)) { return; } var process = new Process(); process.StartInfo.FileName = playerPath; process.StartInfo.Arguments = arguments; process.Start(); }
public async Task OpenDoubleChatRoom(Models.OnlineUser invitee) { // Check this room is existed or not var invitor = _chatContext.GetOnlineUser(Context.UserIdentifier); var founDoubleRoom = _chatContext.GetDoubleRoom(invitor, invitee); string chatRoomId = string.Empty; string chatSessionId = string.Empty; bool isExistedOnDb = false; bool createNewSession = false; ChatSessionModel chatSessionModel = null; ChatSessionModel previousSessionModel = null; ChatRoomModel chatRoomModel = null; if (founDoubleRoom == null) { // Try to fetch from database var foundRoomInDb = (await _chatRoomRepository .GetAllAsync(a => a.Type == RoomType.Double && a.Participants.Any(b => b.Username == Context.UserIdentifier) && a.Participants.Any(c => c.Username == invitee.UserName))).FirstOrDefault(); if (foundRoomInDb != null) { chatRoomModel = new Models.ChatRoomModel { ChatRoomId = foundRoomInDb.Id, Participants = new System.Collections.Generic.List <Models.OnlineUser> { invitor, invitee }, RoomName = invitee.FullName, Type = RoomType.Double, CreateDate = DateTime.UtcNow }; _chatContext.LoadDoubleRoom(chatRoomModel); isExistedOnDb = true; chatRoomId = foundRoomInDb.Id; } else { // Create new chatroom var chatRoom = new ChatRoom { Id = DataUtil.GenerateUniqueId(), CreatedDate = DateTime.UtcNow, Participants = new List <Participant> { new Participant { Id = DataUtil.GenerateUniqueId(), JoinedDate = DateTime.UtcNow, Username = invitor.UserName }, new Participant { Id = DataUtil.GenerateUniqueId(), JoinedDate = DateTime.UtcNow, Username = invitee.UserName } }, RoomName = invitee.UserName, Sessions = new List <ChatSession>(), Type = RoomType.Double }; await _chatRoomRepository.AddAsync(chatRoom); chatRoomModel = new Models.ChatRoomModel { ChatRoomId = chatRoom.Id, Participants = new System.Collections.Generic.List <Models.OnlineUser> { invitor, invitee }, RoomName = invitee.FullName, Type = RoomType.Double, CreateDate = DateTime.UtcNow }; _chatContext.LoadDoubleRoom(chatRoomModel); chatRoomId = chatRoom.Id; createNewSession = true; } } else { chatRoomId = founDoubleRoom.ChatRoomId; chatRoomModel = founDoubleRoom; chatSessionModel = _chatContext.GetCurrentChatSession(chatRoomId); if (chatSessionModel == null) { createNewSession = true; } else if (!string.IsNullOrEmpty(chatSessionModel.PreviousSessionId)) { previousSessionModel = _chatContext.GetChatSession(chatSessionModel.PreviousSessionId); } } if (isExistedOnDb) { // Try to fetch last chat session var foundLastSession = await _chatSessionRepository.GetLastChatSession(chatRoomId); if (foundLastSession != null) { // In mind, we only create new chat session when it reached Threshold // Or it belongs to previous day if (foundLastSession.Conversations.Count >= _chatOptions.CurrentValue.ThresholdNumberOfMessages) { createNewSession = true; // Load previous session previousSessionModel = new ChatSessionModel { ChatRoomId = chatRoomId, Messages = new Queue <MessageModel>(), CreatedDate = foundLastSession.CreatedDate, PreviousSessionId = foundLastSession.PreviousSessionId, SessionId = foundLastSession.Id }; if (foundLastSession.Conversations != null) { foreach (var message in foundLastSession.Conversations.OrderBy(a => a.Timestamp)) { previousSessionModel.Messages.Enqueue(new MessageModel { Message = message.Message, FormattedMessage = message.MessageTransform, TimeStamp = message.Timestamp, UserName = message.Username, CreatedDate = message.CreatedDate, AttachmentFiles = new List <AttachmentFile>() }); } } _chatContext.AddChatRoomSession(previousSessionModel); } else { chatSessionModel = ChatSessionModel.LoadFrom(foundLastSession); // Load one previous session if it had if (!string.IsNullOrEmpty(chatSessionModel.PreviousSessionId)) { var previousSession = await _chatSessionRepository.GetOneAsync(chatSessionModel.PreviousSessionId); previousSessionModel = ChatSessionModel.LoadFrom(previousSession); } _chatContext.AddChatRoomSession(chatSessionModel); } } else { createNewSession = true; } } if (createNewSession) { chatSessionModel = new ChatSessionModel { SessionId = DataUtil.GenerateUniqueId(), ChatRoomId = chatRoomId, Messages = new Queue <MessageModel>(), CreatedDate = DateTime.UtcNow, PreviousSessionId = previousSessionModel?.SessionId }; if (previousSessionModel != null) { previousSessionModel.NextSessionId = chatSessionModel.SessionId; } _chatContext.AddChatRoomSession(chatSessionModel); } // Allow target user to prepare a chatroom await Clients .User(invitee.UserName) .ReadyDoubleChatRoom( chatRoomModel, chatSessionModel, invitor, previousSessionModel); await Clients.Caller.LoadDoubleChatRoom( chatRoomModel, chatSessionModel, invitee, previousSessionModel); }