Пример #1
0
        public async Task <IActionResult> GetUserChat([FromQuery] string param)
        {
            List <UserChatDto> result = new List <UserChatDto>();

            try
            {
                if (param != string.Empty)
                {
                    dynamic     data  = JsonConvert.DeserializeObject(param);
                    UserChatDto model = JsonConvert.DeserializeObject <UserChatDto>(data.ToString());
                    if (model != null)
                    {
                        var dto = await _chatManager.GetUserChat(model);

                        result = _mapper.Map <List <UserChatDto> >(dto);
                    }
                }
            }
            catch (Exception ex)
            {
                ex.ToString();
            }
            var obj = new { ChatResult = result };

            return(StatusCode((int)HttpStatusCode.OK, obj));
        }
Пример #2
0
        public async Task SendMessage(UserChatDto message)
        {
            //var httpContext = Context.GetHttpContext();
            //var services = httpContext.RequestServices;
            //var chatDalLayerInstance = (IChatDalLayer)services.GetService(typeof(IChatDalLayer));

            //_chatManager = new ChatManager(chatDalLayerInstance);
            //Receive Message
            List <string> ReceiverConnectionids = _connections.GetConnections(message.Receiverid).ToList <string>();

            if (ReceiverConnectionids.Count() > 0)
            {
                //Save-Receive-Message
                try
                {
                    message.Connectionid = string.Join(",", ReceiverConnectionids);
                    var userChatEntity = new UserChat();
                    userChatEntity.Connectionid  = message.Connectionid;
                    userChatEntity.Message       = message.Message;
                    userChatEntity.Messagedate   = message.Messagedate;
                    userChatEntity.Messagestatus = message.Messagestatus;
                    userChatEntity.Receiverid    = message.Receiverid;
                    userChatEntity.Senderid      = message.Senderid;
                    userChatEntity.IsPrivate     = true;
                    await _chatManager.SaveUserChat(userChatEntity);

                    await Clients.Clients(ReceiverConnectionids).SendAsync("ReceiveMessage", message);
                }
                catch (Exception) { }
            }
        }
Пример #3
0
        public async Task SendMessageNotification(UserChatDto userChatDto)
        {
            int FriendId = await _chatQuery.GetFriendIdByUserChatDto(userChatDto);

            string userString = "UserId" + FriendId;

            await Clients.All.SendAsync(userString, userChatDto.ChatId);
        }
        public async Task <int> GetFriendIdByUserChatDto(UserChatDto userChatDto)
        {
            var chat = await _chatRepository
                       .GetChat()
                       .FirstOrDefaultAsync(x => x.Id == userChatDto.ChatId);

            return(await _getContactBusiness.GetFriendIdByContactIdUserId(chat.ContactFriendUserId, userChatDto.UserId));
        }
Пример #5
0
        public async Task ReadMessageChats(UserChatDto userChatDto)
        {
            var messages = await _getMessageChatBusiness.GetListMessagesChatByUserChatDto(userChatDto);

            messages.ToList().ForEach(m =>
            {
                _messageChatRepository.EditMessageChat(m);
            });
        }
Пример #6
0
        private void Ready()
        {
            Receive <ChatCreatedEvent>(@event =>
            {
                string path        = "user-chats/" + _userId;
                string lastMessage = String.Format("{0} created a chat with you", @event.Creator.Login);
                if (@event.Creator.Id == _userId)
                {
                    lastMessage = "You created a chat";
                }

                var userChat = new UserChatDto()
                {
                    ChatId            = @event.Id,
                    UserId            = _userId,
                    LastMessage       = lastMessage,
                    LastMessageAuthor = @event.Creator.Login,
                    LastMessageDate   = DateTime.UtcNow
                };

                userChat.Participants = @event.Participants
                                        .Select(x => new ChatParticipantDto()
                {
                    Id = x.Id, Login = x.Login
                }).ToList();
                string participantNames = string.Join(", ",
                                                      userChat.Participants.Where(x => x.Id != _userId).Select(x => x.Login));
                userChat.Name = participantNames;

                client.Push(path, userChat);
            });

            Receive <ChatMessageAddedEvent>(@event =>
            {
                string path = "user-chats/" + _userId;
                FirebaseResponse response = client.Get(path);
                Dictionary <string, UserChatDto> chats = response.ResultAs <Dictionary <string, UserChatDto> >();

                if (chats != null && chats.Any(x => x.Value.ChatId == @event.ChatId))
                {
                    var chat = chats.First(x => x.Value.ChatId == @event.ChatId);

                    string userChatPathLastMessage = String.Format("user-chats/{0}/{1}/LastMessage", _userId, chat.Key);
                    client.Set(userChatPathLastMessage, @event.Message);

                    string userChatPathLastMessageAuthor = String.Format("user-chats/{0}/{1}/LastMessageAuthor", _userId, chat.Key);
                    client.Set(userChatPathLastMessageAuthor, @event.Author.Login);

                    string userChatPathLastMessageDate = String.Format("user-chats/{0}/{1}/LastMessageDate", _userId, chat.Key);
                    client.Set(userChatPathLastMessageDate, @event.Date);
                }
            });
        }
Пример #7
0
        public JsonResult GetByUser(Guid userId, Guid targetUserId)
        {
            string           path     = "user-chats/" + userId;
            FirebaseResponse response = client.Get(path);
            Dictionary <string, UserChatDto> chats = response.ResultAs <Dictionary <string, UserChatDto> >();

            if (chats != null)
            {
                UserChatDto userChat = chats.Select(x => x.Value)
                                       .Where(x => x.Participants != null &&
                                              x.Participants.Count == 2 &&
                                              x.Participants.Any(y => y.Id == targetUserId))
                                       .FirstOrDefault();

                return(Json(userChat, JsonRequestBehavior.AllowGet));
            }
            return(Json(null, JsonRequestBehavior.AllowGet));
        }
 public async Task <IList <MessageChat> > GetListMessagesChatByUserChatDto(UserChatDto userChatDto)
 {
     return(await _messageChatRepository
            .GetMessageChat()
            .Where(m =>
                   m.UserId != userChatDto.UserId &&
                   m.ChatId == userChatDto.ChatId &&
                   !m.IsSeen
                   ).Select(m => new MessageChat
     {
         Id = m.Id,
         MessageText = m.MessageText,
         UserId = m.UserId,
         ChatId = m.ChatId,
         MessageDate = m.MessageDate,
         IsSeen = true
     }
                            ).ToListAsync());
 }
Пример #9
0
 public Task <List <UserChat> > GetUserChat(UserChatDto model)
 {
     return(Task.Run(() =>
     {
         List <UserChat> userChat = null;
         try
         {
             userChat = (from x in _dbContext.UserChat
                         where (x.Senderid == model.Senderid && x.Receiverid == model.Receiverid) || (x.Receiverid == model.Senderid && x.Senderid == model.Receiverid)
                         select x).ToList();
         }
         catch (Exception ex)
         {
             ex.ToString();
             userChat = null;
         }
         return userChat;
     }));
 }
Пример #10
0
 /// <summary>
 /// Authenticate user.
 /// </summary>
 /// <param name="userName">Username.</param>
 /// <param name="Password">Password.</param>
 /// <returns>Returns user id.</returns>
 public async Task <List <UserChat> > GetUserChat(UserChatDto model)
 {
     return(await _chatDalLayer.GetUserChat(model));
 }
        public async Task Handler(UserChatDto userChatDto)
        {
            await _editMessageChatBusiness.ReadMessageChats(userChatDto);

            await _messageChatRepository.UnitOfWork.Save();
        }
Пример #12
0
 public async Task <int> GetFriendIdByUserChatDto(UserChatDto userChatDto)
 {
     return(await _getChatBusiness.GetFriendIdByUserChatDto(userChatDto));
 }
Пример #13
0
 public async Task ReadMessagesChat([FromBody] UserChatDto userChatDto)
 {
     await _readMessagesChatCommandHandler.Handler(userChatDto);
 }