コード例 #1
0
ファイル: HomeController.cs プロジェクト: pentest30/chatjs10
        public ActionResult Index()
        {
            var existingUser = ChatCookieHelperStub.GetDbUserFromCookie(this.Request);
            ChatViewModel chatViewModel = null;
            if (existingUser != null)
            {
                if (!ChatHub.IsUserRegisteredInDbUsersStub(existingUser))
                {
                    // cookie is invalid
                    ChatCookieHelperStub.RemoveCookie(this.Response);
                    return this.RedirectToAction("Index");
                }

                // in this case the authentication cookie is valid and we must render the chat
                chatViewModel = new ChatViewModel()
                    {
                        IsUserAuthenticated = true,
                        UserId = existingUser.Id,
                        UserName = existingUser.FullName,
                        UserProfilePictureUrl =
                            GravatarHelper.GetGravatarUrl(GravatarHelper.GetGravatarHash(existingUser.Email), GravatarHelper.Size.s32)
                    };
            }

            return this.View(chatViewModel);
        }
コード例 #2
0
        public ViewResult Index()
        {
            var userChats = _messageService.GetConversations(_authProvider.CurrentUserId);
            var userChatsViewModel = new List<ChatViewModel>();

            //реалізувати через автомаппер
            foreach(var element in userChats)
            {
                var userChat = new ChatViewModel();

                userChat.LastMessage = element.MsgText.Length < Config.MessageLength ? element.MsgText : element.MsgText.Substring(0, Config.MessageLength -3) + " ...";
                userChat.ChatWithUserId = element.FromUserId == _authProvider.CurrentUserId ? element.ToUserId : element.FromUserId;
                userChat.LastMessageAuthorName = _userService.GetById(element.FromUserId).FirstName;
                if(element.User1.Id == _authProvider.CurrentUserId)
                {
                    userChat.FirstName = element.User.FirstName;
                    userChat.LastName = element.User.LastName;
                    userChat.ImageData = element.User.ImageData;
                }
                else
                {
                    userChat.FirstName = element.User1.FirstName;
                    userChat.LastName = element.User1.LastName;
                    userChat.ImageData = element.User1.ImageData;
                }
                userChat.DateSent = element.DateSent;
                userChatsViewModel.Add(userChat);
            }

            return View(userChatsViewModel);
        }
コード例 #3
0
        public void WhenSendingMessage_ThenInitiatesInteraction()
        {
            var serviceMock = new Mock <IChatService>();
            var viewModel   = new ChatViewModel(serviceMock.Object);

            bool interactionRaised = false;

            viewModel.SendMessageRequest.Raised += (s, e) => interactionRaised = true;

            viewModel.SendMessage();

            Assert.IsTrue(interactionRaised);
        }
コード例 #4
0
        /// <summary>
        /// Method to as the answer not necessary qualification
        /// </summary>
        public void NextQuery()
        {
            //Craft a chat model object
            var chat = new ChatViewModel
            {
                Name    = "Pólux",
                Message = "en que puedo ser util",
                ProfilePictureLocation = "bot-avatar.png"
            };

            //Send welcome message to user
            Clients.Group(Context.ConnectionId).addChatMessage(chat);
        }
コード例 #5
0
 private void OnPromptClosed(object sender, WindowClosedEventArgs e)
 {
     if (e.PromptResult != null && e.PromptResult != string.Empty)
     {
         this.ViewModel            = new ChatViewModel(e.PromptResult);
         this.DataContext          = this.ViewModel;
         this.myChat.CurrentAuthor = this.ViewModel.CurrentAuthor;
     }
     else
     {
         throw new Exception("Username cannot be empty");
     }
 }
コード例 #6
0
        public ActionResult Index()
        {
            //   var currentUser = this.Data.Users.Find(this.User.Identity.GetUserId()).UserName;
            ChatViewModel vm = this.service.GetChatPage();

            if (vm == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.NotFound));
            }

            Response.StatusCode = 200;
            return(View(vm));
        }
コード例 #7
0
        /// <summary>
        /// Creates a new chat window for the main chat
        /// </summary>
        private void initializeServerChatWindow()
        {
            ChatViewModel mainWin = new ChatViewModel(MAINCHAT, this);

            mainWin.winClosed    += onMainChatClosed;
            mainWin.sendGameChat  = sendGameChat;
            mainWin.addBuddyList += addToBuddyList;
            mainWin.gameNumber    = MAINCHAT;

            mainWin.wind.sendPM += sendPM;

            ChatWindows.Add(mainWin);
        }
コード例 #8
0
        private ActionResult ChatV1(string room)
        {
            var userId = User.Identity.GetUserId();
            var me = new GetPlayerFormFromMembership {
                MembershipId = userId
            }.Find();

            if (DomainRegistry.Repository.FindSingle(new IsAccountLockedOut {
                userId = userId
            }))
            {
                return(RedirectToAction(MVC.PvP.Play()));
            }

            if (!me.CanAccessChat())
            {
                return(View(MVC.PvP.Views.MakeNewCharacter));
            }

            if (string.IsNullOrWhiteSpace(room) || room.StartsWith("_"))
            {
                TempData["Result"] = "A chat room must have a name and not begin with an underscore";
                return(RedirectToAction(MVC.PvP.Play()));
            }

            if (me.Player.IsBannedFromGlobalChat && room == "global")
            {
                TempData["Error"]    = "A moderator has temporarily banned you from global chat.";
                TempData["SubError"] = "To restore your chat privileges please make an appeal on Discord.";
                return(RedirectToAction(MVC.PvP.Play()));
            }

            var roomName = room;

            if (!UserCanSeeRoom(ref roomName))
            {
                return(RedirectToAction(MVC.PvP.Play()));
            }

            var model = new ChatViewModel
            {
                Room      = room,
                RoomName  = roomName,
                ChatUser  = me.Player.GetDescriptor().Item1,
                ChatColor = me.Player.ChatColor,
            };

            ViewBag.Result = TempData["Result"];

            return(View(MVC.Chat.Views.ChatIndex, model));
        }
コード例 #9
0
        public ActionResult ChatLogDelete(ChatViewModel chat)
        {
            try
            {
                _chatLogic.DeleteMessagesFromDatabase(new ChatLog(chat.ChatLogId));
                _chatLogic.DeleteChatLogFromDatabase(new ChatLog(chat.ChatLogId));

                return(RedirectToAction("ChatLogOverview"));
            }
            catch
            {
                return(View("../Shared/Error"));
            }
        }
コード例 #10
0
        public ChatViewModel ToViewModel(Chat chat)
        {
            ChatViewModel viewModel = new ChatViewModel();

            viewModel.Name = chat.Name;
            viewModel.Id   = chat.Id;
            FileModel file = _files.Files.FirstOrDefault(f => f.Id == chat.PhotoID);

            viewModel.Image = new ImageData
            {
                ImageBinary = file.Data, ImageHeaders = "data:image/" + Path.GetExtension(file.Name).Replace(".", "") + ";base64,"
            };
            return(viewModel);
        }
コード例 #11
0
        public ActionResult LoadChatArea(Guid conversationId)
        {
            int unreadMessageNo = _conDb.Conversations.Find(conversationId).UnreadMessageNo;
            IEnumerable <MessageDetail> messages = _conDb.Messages.Where(x => x.ConversationId1 == conversationId || x.ConversationId2 == conversationId).OrderBy(x => x.Createtime);
            ChatViewModel model = new ChatViewModel
            {
                Messages         = messages,
                UnreadMessagesNo = unreadMessageNo
            };

            _conDb.Conversations.Find(conversationId).UnreadMessageNo = 0;
            _conDb.SaveChanges();
            return(PartialView(model));
        }
コード例 #12
0
        public IActionResult Index(ChatViewModel model)
        {
            if (ChatHub.UserNamesMap.ContainsValue(model.UserName))
            {
                ModelState.AddModelError(string.Empty, "User name already in use.");
            }

            if (ModelState.IsValid)
            {
                return(View("ChatPage", model.UserName));
            }

            return(View());
        }
コード例 #13
0
        public void WhenCreated_ThenConnectsServiceAndIsAvailable()
        {
            var serviceMock = new Mock <IChatService>(MockBehavior.Strict);

            serviceMock.SetupSet(svc => svc.Connected = true);
            serviceMock.SetupGet(svc => svc.Connected).Returns(true);
            serviceMock.Setup(svc => svc.GetContacts(It.IsAny <Action <IOperationResult <IEnumerable <Contact> > > >()));

            var viewModel = new ChatViewModel(serviceMock.Object);

            Assert.AreEqual("Available", viewModel.ConnectionStatus);

            serviceMock.VerifyAll();
        }
コード例 #14
0
        public void WhenThereIsNoContactSelected_ThenShowDetailsCommandCannotExecute()
        {
            var serviceMock = new Mock <IChatService>(MockBehavior.Strict);

            serviceMock
            .SetupSet(svc => svc.Connected = true);
            serviceMock
            .Setup(svc => svc.GetContacts(It.IsAny <Action <IOperationResult <IEnumerable <Contact> > > >()));
            var viewModel = new ChatViewModel(serviceMock.Object);

            Assert.IsFalse(viewModel.ShowDetailsCommand.CanExecute(null));

            serviceMock.VerifyAll();
        }
コード例 #15
0
        public ChatMessageWindow(string sender, string recipient)
        {
            InitializeComponent();

            Title = $@"{recipient} | WAPChat Private Instant Message";

            ViewModel = new ChatViewModel(recipient)
            {
                CurrentRecipient = new Author(recipient),
                CurrentAuthor    = new Author(sender)
            };

            this.ViewModel.CurrentRecipient = new Author(recipient);
        }
コード例 #16
0
        // GET: Chat
        public async Task <ActionResult> ChatBox()
        {
            ChatViewModel     Model             = new ChatViewModel();
            ServiceDiscussion serviceDiscussion = new ServiceDiscussion();

            Model.currentUser = (user)System.Web.HttpContext.Current.Session["IUser"];
            if (Model.currentUser == null)
            {
                return(RedirectToAction("Login", "Home"));
            }
            Model.discussions = await serviceDiscussion.getDiscussionsByIdUserAsync(Model.currentUser.id);

            return(View(Model));
        }
コード例 #17
0
 protected internal override void OnCreate(object parameter)
 {
     base.OnCreate(parameter);
     if (parameter is InstanceModel instance)
     {
         ViewModel = new ChatViewModel(instance)
         {
             RoomMessage = OnRoomMessage
         };
         WithHostConverter.Host = ViewModel.Host;
         AdvancedCollectionView = new AdvancedCollectionView(ViewModel.Rooms, true);
         AdvancedCollectionView.SortDescriptions.Add(new SortDescription("UpdateAt", SortDirection.Descending));
     }
 }
コード例 #18
0
        public ActionResult Messages(string id)
        {
            _message.To = id;
            var messageBL = new MessageBL(_uow.messageRepository);
            var messages  = messageBL.GetMessages(CurrentUser().Id, id);
            var viewModel = new ChatViewModel
            {
                Messages    = messages,
                CurrentUser = CurrentUser(),
                ToUser      = ToUser(id)
            };

            return(View(viewModel));
        }
コード例 #19
0
        public ChatPage(Contact contact, User user)
        {
            this.InitializeComponent();
            if (contact == null)
            {
                throw new ArgumentNullException();
            }

            this.Title = contact.Name;
            var vm = new ChatViewModel(contact, user);

            vm.DisplayMessageTooLong += () => this.DisplayAlert("Error", "Sorry, 106 characters per message are allowed!", "OK");
            this.BindingContext       = vm;
        }
コード例 #20
0
        public async Task <IActionResult> Index(string username, string group)
        {
            var currentUser = await this.userManager.GetUserAsync(this.User);

            var model = new ChatViewModel
            {
                FromUser     = await this.userManager.GetUserAsync(this.User),
                ToUser       = this.unitOfWork.Users.All().FirstOrDefault(x => x.UserName == username),
                ChatMessages = await this.chatService.ExtractAllMessages(group),
                GroupName    = group,
            };

            return(this.View(model));
        }
コード例 #21
0
        public ChatPage(GroupChat chat)
        {
            InitializeComponent();
            vm = new ChatViewModel(chat);
            Content.BindingContext     = vm;
            MessageArea.BindingContext = vm;
            TextArea.BindingContext    = vm;

            vm.Messages.CollectionChanged += (sender, e) =>
            {
                var target = vm.Messages[vm.Messages.Count - 1];
                MessagesListView.ScrollTo(target, ScrollToPosition.End, true);
            };
        }
コード例 #22
0
        public ChatViewModel[] SelectChatsByUserID(string userID)
        {
            var chatUsers = _application.ChatUsers.Where(u => u.UserID == userID).ToArray();
            var list      = new ChatViewModel[chatUsers.Length];
            int i         = 0;

            foreach (var c in chatUsers)
            {
                int  chatId = c.ChatID;
                Chat chat   = _application.Chats.FirstOrDefault(chat => chat.Id == chatId);
                list[i++] = _chatConverter.ToViewModel(chat);
            }
            return(list);
        }
コード例 #23
0
        public ActionResult FormModifica(int id)
        {
            ChatViewModel viewModel = new ChatViewModel();

            using (DatabaseContext db = new DatabaseContext())
            {
                CHAT model = db.CHAT.SingleOrDefault(m => m.ID == id);
                if (model != null)
                {
                    viewModel.SetModel(model);
                }
            }
            return(PartialView("PartialPages/_FormMessaggio", viewModel));
        }
コード例 #24
0
        public IActionResult Index()
        {
            var currentUseer = CurrentUser();
            //  _message.From = currentUseer.Id;
            var chatViewModel = new ChatViewModel();
            var list          = _uow.userRepository.List().ToList();
            var listuser      = new List <SecureChat.PL.Models.User>();

            foreach (var user in list)
            {
                var userpl = new SecureChat.PL.Models.User
                {
                    Id           = user.Id,
                    UserName     = user.Email,
                    FirstName    = user.FirstName,
                    LastName     = user.LastName,
                    BirthDate    = user.BirthDate,
                    Sex          = user.Sex,
                    City         = user.City,
                    Address      = user.Address,
                    PasswordHash = user.PasswordHash,
                    Email        = user.Email,
                    IsDeleted    = user.IsDeleted
                };
                listuser.Add(userpl);
            }

            var users     = listuser.Where(u => u.Id != currentUseer.Id && u.IsDeleted == false).ToList();
            var messageBL = new MessageBL(_uow.messageRepository);

            _message.To = _message.To ?? string.Empty;

            if (_message.To != string.Empty)
            {
                _user = ToUser(_message.To);
            }
            ;

            // var messages = messageBL.GetMessages(_message.From, _message.To);
            var chatModel = new ChatViewModel
            {
                Users = users,
                //Messages = messages,
                CurrentUser = currentUseer,
                // ToUser = _user
            };

            return(View(chatModel));
        }
コード例 #25
0
        public MessageEditor()
        {
            InitializeComponent();

            this.Document = this.richBox.Document = new FlowDocument();
            try
            {
                emojePanel           = new IM.Emoje.EmojeBox();
                emojePanel.Selected += EmojePanel_Close;
                this.bdEmoje.Child   = emojePanel;
            }
            catch
            {
            }
            this.GotFocus += MessageEditor_GotFocus;
            this.richBox.PreviewDragOver += RichBox_DragOver;
            this.richBox.PreviewDrop     += RichBox_Drop;

            this.Loaded += delegate
            {
                this.richBox.Focus();
                ChatViewModel chatViewModel = this.GotDataContext?.Invoke();
                chatViewModel.OnFastReply -= ChatViewModel_OnFastReply;
                chatViewModel.OnFastReply += ChatViewModel_OnFastReply;
                App.Current.Dispatcher.Invoke(() =>
                {
                    if (!_isEvaluate)
                    {
                        this.btnEvaluate.IsEnabled = !chatViewModel.IsSessionEnd;
                    }
                    else
                    {
                        this.btnEvaluate.IsEnabled = false;
                    }

                    this.btnStopSession.IsEnabled   = !chatViewModel.IsSessionEnd;
                    this.btnChangeSession.IsEnabled = !chatViewModel.IsSessionEnd;
                });
            };

            //DataObject.AddPastingHandler(this.richBox, (s, e) => { e.CancelCommand(); e.Handled = true; });

            this.richBox.AllowDrop       = true;
            this.richBox.IsUndoEnabled   = false;
            this.richBox.PreviewKeyDown += RichBox_PreviewKeyDown;
            this.richBox.TextChanged    += richBox_TextChanged;
            this.richBox.PreviewMouseRightButtonDown += RichBox_PreviewMouseRightButtonDown;
            this.richBox.PreviewMouseLeftButtonDown  += RichBox_PreviewMouseLeftButtonDown;
        }
コード例 #26
0
        /// <summary>
        /// 在线发送
        /// </summary>
        private void OnlineSend()
        {
            if (ChatViewModel != null)
            {
                _targetModel.CanOperate = false;
                AcioningItems.Remove(this);
                if (_operateTask != null)
                {
                    _operateTask.Cancel();
                    _operateTask = null;
                }

                if (FileExists())
                {
                    AcioningItems.Add(this);
                    _operateTask = new System.Threading.CancellationTokenSource();
                    if (ChatViewModel.IsGroup)
                    {
                        this.tbConnecting.Visibility = Visibility.Visible;
                        //群聊只能离线发送
                        ChatViewModel.SendOfflineFile(_targetModel, _operateTask, (result) =>
                        {
                            AcioningItems.Remove(this);
                            if (_operateTask != null)
                            {
                                _operateTask.Cancel();
                                _operateTask = null;
                            }
                        });
                    }
                    else
                    {
                        ChatViewModel.SendOnlineFile(ChatViewModel, _targetModel, _operateTask, (result) =>
                        {
                            AcioningItems.Remove(this);
                            if (_operateTask != null)
                            {
                                _operateTask.Cancel();
                                _operateTask = null;
                            }
                        });
                    }
                }
                else
                {
                    ChatViewModel.Chat.Messages.Remove(_targetModel);
                }
            }
        }
コード例 #27
0
        public void Execute(object parameter)
        {
            App.CurrentUser = App.UserModel.Users.SingleOrDefault(x => x.Email == LoginViewModel.Email);
            if (App.CurrentUser.Id == 1)
            {
                App.NetworkHelper.User_Id = 0;
            }
            else
            {
                App.NetworkHelper.User_Id = 1;
            }
            if (App.CurrentUser != null)
            {
                Task.Run(() =>
                {
                    App.NetworkHelper.ConnectToServer();
                });
                LoginViewModel.MyGrid.Children.Clear();
                FirstChatViewModel firstChatViewModel = new FirstChatViewModel();
                firstChatViewModel.IsClickedToChat = true;
                FirstChatUserControl firstChatUserControl = new FirstChatUserControl(firstChatViewModel);
                LoginViewModel.MyGrid.Children.Add(firstChatUserControl);
                var           allchats      = App.CurrentUser.AllConversations;
                ChatViewModel chatViewModel = new ChatViewModel();
                chatViewModel.AllChats           = new ObservableCollection <Chat>();
                chatViewModel.FirstChatViewModel = firstChatViewModel;
                var count = App.UserModel.Users.Count;
                App.CurrentUser.AllConversations = new List <Conversation>();
                for (int i = 0; i < count; i++)
                {
                    Conversation conversation = new Conversation();
                    conversation.User        = App.UserModel.Users[i];
                    conversation.AllMessages = new ObservableCollection <Message>();
                    App.CurrentUser.AllConversations.Add(conversation);
                    Chat chat = new Chat()
                    {
                        Id          = i + 1,
                        ImageSource = @"/Images\personWhiteSmoke.png",
                        User        = App.CurrentUser.AllConversations[i].User,
                        Message     = new Message() //App.CurrentUser.AllConversations[i].AllMessages[App.CurrentUser.AllConversations[i].AllMessages.Count - 1]
                    };

                    chatViewModel.AllChats.Add(chat);
                }
                ChatUserControl chatUserControl = new ChatUserControl(chatViewModel);
                firstChatViewModel.MyChatGrid.Children.Clear();
                firstChatViewModel.MyChatGrid.Children.Add(chatUserControl);
            }
        }
コード例 #28
0
        public ActionResult Index()
        {
            var chat = new ChatViewModel
            {
                //Generate new connection ID
                ConnectionId = Guid.NewGuid().ToString(),
                //Set group value to current user's username
                Group = User.Identity.Name,
                //Message = User.Identity
                // Additional user details here
                IdUserAspNetUser = User.Identity.GetUserId()
            };

            return(View(chat));
        }
コード例 #29
0
        public async Task <IActionResult> Create(ChatViewModel model)
        {
            if (this.ModelState.IsValid)
            {
                model.UserName = User.Identity.Name;
                var sender = await this.userManager.GetUserAsync(this.User);

                model.UserId = sender.Id;
                await this.messagesService.CreateMessageAsync(model.UserName, model.UserId, model.Text);

                return(this.Redirect("/Chats/Chat"));
            }

            return(this.View(model));
        }
コード例 #30
0
ファイル: ChatPage.xaml.cs プロジェクト: b-orcan26/WPF-Chat
        public ChatPage(String _kullaniciAdi)
        {
            InitializeComponent();
            chat        = new ChatViewModel(_kullaniciAdi);
            DataContext = chat;

            #region deneme


            //127.0.0.1 localHost un IP adresidir. Buraya ilerde bir server kurarsanız IP'sini yazmalısınız.
            //BeginConnect sunucuya ilk bağlandığımız anda çalıştırılır.


            #endregion
        }
コード例 #31
0
ファイル: ChatPage.xaml.cs プロジェクト: TSMI235/Mentr
        public ChatPage()
        {
            InitializeComponent();
            Title          = "William Duncan";
            BindingContext = vm = new ChatViewModel();

            ((NavigationPage)Application.Current.MainPage).BarBackgroundColor = Color.FromHex("#E67349");
            ((NavigationPage)Application.Current.MainPage).BarTextColor       = Color.White;

            vm.Messages.CollectionChanged += (sender, e) =>
            {
                var target = vm.Messages[vm.Messages.Count - 1];
                MessagesListView.ScrollTo(target, ScrollToPosition.End, true);
            };
        }
コード例 #32
0
ファイル: App.xaml.cs プロジェクト: powe0101/SignalRWithWPF
        protected override void OnStartup(StartupEventArgs e)
        {
            HubConnection connection = new HubConnectionBuilder()
                                       .WithUrl("http://localhost:5000/colorchat")
                                       .Build();

            ChatViewModel chatViewModel = ChatViewModel.CreatedConnectedViewModel(new SignalRChatService(connection));

            MainWindow window = new MainWindow
            {
                DataContext = new MainViewModel(chatViewModel)
            };

            window.Show();
        }
コード例 #33
0
		private async void OnSelectChat()
		{
			IsBusy = true;
			var roomData = await _appManager.ChatManager.RequestUserChat (UserId);
			IsBusy = false;

			//Go to the root and open the chat window
			await this.PopToRootAsync ();
			var model = new ChatViewModel (_appManager, roomData);
			await model.ShowAsync ();
		}
コード例 #34
0
		private async void OnSelectRoom(object roomArg)
		{
			var room = roomArg as Room;
			if (room == null)
			{
				throw new Exception ("Selected item was not a room");
			}
			var roomData = await _appManager.ChatManager.JoinPublicRoom (room);
			var model = new ChatViewModel (_appManager, roomData);
			await model.ShowAsync ();
		}
コード例 #35
0
		private async void OnSelectActiveChat(object roomArg)
		{
			var activeChat = roomArg as ActiveChatViewModel;
			if (activeChat == null)
			{
				throw new Exception ("Selected item was not an active chat");
			}
			var model = new ChatViewModel (_appManager, activeChat.RoomData);
			await model.ShowAsync ();
		}