Exemple #1
0
        public async Task CreateChatAsync(Chat chat)
        {
            /////////////// throw
            if (chat == null)
            {
                return;
            }
            chat.Name = StringSanitizer.CleanName(chat.Name);

            _unitOfWork.Chats.Insert(chat);
            _unitOfWork.SaveChanges();

            var chatReadDto       = _mapper.Map <ChatReadDto>(chat);
            var chatReadDtoString = JsonConvert.SerializeObject(chatReadDto, _settings);

            foreach (var user in chat.UsersChats.Select(uc => uc.User))
            {
                if (_connectedUsers.ContainsKey(user))
                {
                    await _hub.Clients.Client(_connectedUsers[user]).SendAsync("NewChatCreated", chatReadDtoString);
                }
            }
        }
Exemple #2
0
        public async Task SendMessageAsync(Message message)
        {
            if (message == null)
            {
                return;
            }
            message.Text = StringSanitizer.CleanMessage(message.Text);

            _unitOfWork.Messages.Insert(message);
            _unitOfWork.SaveChanges();

            var messageReadDto       = _mapper.Map <MessageReadDto>(message);
            var messageReadDtoString = JsonConvert.SerializeObject(messageReadDto, _settings);

            foreach (var userChat in message.Chat.UsersChats.ToList())
            {
                if (_connectedUsers.ContainsKey(userChat.User))
                {
                    await _hub.Clients.Client(_connectedUsers[userChat.User]).SendAsync("ReceiveMessage", messageReadDtoString);

                    if (userChat.IsActive == true)
                    {
                        await ChatSeenAsync(userChat.Chat.Id, userChat.User.Id);
                    }
                    else
                    {
                        userChat.NotSeenMessagesNumber++;
                        _unitOfWork.SaveChanges();
                    }
                }
                else
                {
                    userChat.NotSeenMessagesNumber++;
                    _unitOfWork.SaveChanges();
                }
            }
        }
Exemple #3
0
        public async Task UpdateChatNameAsync(int chatId, string name)
        {
            var chat = _unitOfWork.Chats.GetByID(chatId);

            /////////throw
            if (chat == null)
            {
                return;
            }

            chat.Name = StringSanitizer.CleanName(chat.Name);
            chat.Name = name;

            _unitOfWork.SaveChanges();

            foreach (var user in chat.UsersChats.Select(uc => uc.User))
            {
                var connectedUsers = _connectionsManager.ConnectedUsersByAppUser;
                if (connectedUsers.ContainsKey(user))
                {
                    await _hub.Clients.Client(connectedUsers[user]).SendAsync("ChatNameChanged", chatId, name);
                }
            }
        }