Esempio n. 1
0
        public IActionResult Add([FromBody] ChatRoomModel chatRoom)
        {
            // create chat room
            var room = _chatRoomDataService.Add(chatRoom);

            return(Ok(room));
        }
Esempio n. 2
0
        /// <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);
        }
Esempio n. 3
0
        public ActionResult Chat()
        {
            ChatRoomModel crmod = new ChatRoomModel();

            crmod.Icerik = "Mesajlaşmak için sohbet geçmişini kullanın...";
            return(PartialView(crmod));
        }
Esempio n. 4
0
        public ChatRoomsViewModel()
        {
            ChatRooms = new ObservableCollection <ChatRoomModel>(ChatRoomModel.LoadAll());

            _updateTimer.Start();

            _updateTimer.Elapsed += (sender, e) => Application.Current.Dispatcher.Invoke(Update);
        }
Esempio n. 5
0
        public ChatRoomViewModel()
        {
            chatRoomModel      = new ChatRoomModel();
            sendMessageCommand = new RelayCommand(sendExecuteMethod);
            closeCommand       = new RelayCommand(closeExecuteMethod);

            chatRoomModel.update += NotifyUpdate;
            chatRoomModel.move   += MoveScrollToMiddle;
        }
Esempio n. 6
0
        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));
        }
Esempio n. 7
0
        public IEnumerable <ChatRoomModel> GetAll()
        {
            var chatRoomEntities = this.chatRoomRepository.All().ToList();

            var chatRoomModels =
                from chatRoomEntity in chatRoomEntities
                select ChatRoomModel.Convert(chatRoomEntity);

            return(chatRoomModels.ToList());
        }
Esempio n. 8
0
        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)));
        }
Esempio n. 9
0
        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);
Esempio n. 10
0
        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;
            }
        }
Esempio n. 11
0
        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());
        }
Esempio n. 12
0
        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();
            }
        }
Esempio n. 13
0
        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;
            }
        }
Esempio n. 14
0
 public void LoadDoubleRoom(ChatRoomModel chatRoom)
 {
     chatRooms.Add(chatRoom);
 }
 public ChatViewModel(ChatRoomModel chat)
 {
     Chat = chat;
 }
 public ChatViewModel(EmployeeModel employee)
 {
     Chat = ChatRoomModel.CreateChat(employee);
 }
Esempio n. 17
0
        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);
        }
Esempio n. 18
0
        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);
 }
Esempio n. 20
0
        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();
        }
Esempio n. 21
0
        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);
        }