private ChatBoxViewModel CreateChatboxViewModel(ChatBox chatbox)
        {
            var chatBoxVM = new ChatBoxViewModel(chatbox);

            chatBoxVM.NewMessage += SendMessage;
            return(chatBoxVM);
        }
        public ChatViewModel(INavigationService navigationService,
                             IRepository <Message> messageRepository,
                             ChatbotViewModel chatbotViewModel,
                             ICommandFactory commandFactory,
                             IDialogService dialogService,
                             IQueryFactory queryFactory,
                             ChatBoxViewModel message)
            : base(navigationService)
        {
            Guard.Against.Null(navigationService, nameof(navigationService));
            Guard.Against.Null(messageRepository, nameof(messageRepository));
            Guard.Against.Null(chatbotViewModel, nameof(chatbotViewModel));
            Guard.Against.Null(commandFactory, nameof(commandFactory));
            Guard.Against.Null(dialogService, nameof(dialogService));
            Guard.Against.Null(queryFactory, nameof(queryFactory));
            Guard.Against.Null(message, nameof(message));

            ChatbotViewModel = chatbotViewModel;
            _dialogService   = dialogService;
            Messages         = messageRepository;
            ChatBoxViewModel = message;

            Title       = "Chat Page";
            SendMessage = commandFactory
                          .MakeDelegateWithParameter <SendMessageCommand, IChatBoxModel>();

            GotoOptions       = new DelegateCommand(GotoOptionsCommand);
            _getMessagesQuery = queryFactory.MakeQuery <GetMessagesQuery>();
        }
        public async Task <ChatBoxViewModel> GetChatBoxAsync(string roomId)
        {
            ChatBoxViewModel chatBoxVM = null;

            try
            {
                chatBoxVM = CreateChatboxViewModel(await _chatBoxService.GetNewChatBoxAsync(roomId));
                _chatBoxViewModelList.Add(chatBoxVM);
            }
            catch (Exception e)
            {
                System.Windows.MessageBox.Show("An error occured while retrieving a new ChatBox "
                                               + Environment.NewLine + "Message : " + e.Message
                                               + Environment.NewLine + "Stack Trace : " + e.StackTrace
                                               + Environment.NewLine + "Inner Exception : " + e.InnerException
                                               );
            }
            return(chatBoxVM);
        }