public List <UserMessageDTO> ListMessage(Guid SenderId, Guid ReceiverId)
        {
            var    userMessageDTO  = new List <UserMessageDTO>();
            var    userMessagelist = _context.UserMessages.Where(p => (p.SenderApplicationUserId == SenderId && p.ReceiverApplicationUserId == ReceiverId) || (p.SenderApplicationUserId == ReceiverId && p.ReceiverApplicationUserId == SenderId)).OrderBy(s => s.SendDate);
            var    senderUser      = _context.ApplicationUsers.Where(p => p.Id == SenderId).FirstOrDefault();
            var    receiverUser    = _context.ApplicationUsers.Where(c => c.Id == ReceiverId).FirstOrDefault();
            string k = receiverUser.UserName;

            foreach (var message in userMessagelist)
            {
                var usermessage = new UserMessageDTO()
                {
                    Id                = message.Id,
                    MessageText       = message.MessageText,
                    SendDate          = message.SendDate,
                    SenderFirstName   = senderUser.FirstName,
                    SenderLastName    = senderUser.LastName,
                    SenderImage       = senderUser.LastName,
                    SenderUserName    = senderUser.UserName,
                    ReceiverFirstName = receiverUser.FirstName,
                    ReceiverImage     = receiverUser.Image,
                    ReceiverLastName  = receiverUser.LastName,
                    ReceiverUserName  = receiverUser.UserName
                };
                userMessageDTO.Add(usermessage);
            }
            //return _context.UserMessages.Where(p => (p.SenderApplicationUserId == SenderId && p.ReceiverApplicationUserId == ReceiverId) || (p.SenderApplicationUserId == ReceiverId  && p.ReceiverApplicationUserId == SenderId)).OrderBy(s => s.SendDate).Select(p => new UserMessageDTO
            //{
            //    Id = p.Id,
            //    MessageText = p.MessageText,
            //    SendDate = p.SendDate,
            //});
            return(userMessageDTO);
        }
Beispiel #2
0
 public async Task <IActionResult> RenderMessage([FromRoute] Guid?msgId, [FromBody] UserMessageDTO msg)
 {
     if (msgId != null && msgId != Guid.Empty)
     {
         msg = await _UserMessageService.GetAsync(msgId.Value);
     }
     return(PartialView("~/Pages/Discussions/Partials/MessageRender.cshtml", msg));
 }
Beispiel #3
0
 public bool Create(UserMessageDTO note)
 {
     using (var connection = new SqlConnection(connectionString))
     {
         var add_user_message = connection.CreateCommand();
         add_user_message.CommandText = $"INSERT INTO dbo.UserMessage (UserId, MessageId) VALUES (@UserId, @MessageId)";
         add_user_message.Parameters.AddWithValue("@MessageId", note.MessageId);
         add_user_message.Parameters.AddWithValue("@UserId", note.UserId);
         connection.Open();
         var result = add_user_message.ExecuteNonQuery();
         return(result > 0);
     }
 }
        public bool Create(UserMessageDTO note)
        {
            try
            {
                return(dal.Create(note));
            }

            catch (Exception e)
            {
                Logger.Logger.WriteLog(e);
                throw e;
            }
        }
Beispiel #5
0
 public bool Update(UserMessageDTO note)
 {
     using (var connection = new SqlConnection(connectionString))
     {
         var update_user_message = connection.CreateCommand();
         update_user_message.CommandText = $"UPDATE dbo.UserMessage SET UserId = @UserId, MessageId = @MessageId WHERE Id = @Id";
         update_user_message.Parameters.AddWithValue("@Id", note.Id);
         update_user_message.Parameters.AddWithValue("@UserId", note.UserId);
         update_user_message.Parameters.AddWithValue("@MessageId", note.MessageId);
         connection.Open();
         var result = update_user_message.ExecuteNonQuery();
         return(result > 0);
     }
 }
        public bool Update(UserMessageDTO note)
        {
            try
            {
                dal.Update(note);
                return(true);
            }

            catch (Exception e)
            {
                Logger.Logger.WriteLog(e);
                throw e;
            }
        }
        public async Task MessageSeen(UserMessageDTO _msgDTO)
        {
            if (_msgDTO.CreatorId == CurrentUser.Id.Value)
            {
                return;
            }
            _msgDTO.IsReceived = true;
            _msgDTO.IsReaded   = true;
            var msgDTO = await _UserMessageService.UpdateAsync(_msgDTO.Id, _msgDTO);

            msgDTO.Photo       = _msgDTO.Photo;
            msgDTO.DisplayName = _msgDTO.DisplayName;


            await ExtractAffectedUser(msgDTO.MessGroupId.ToString());

            // Gửi tin nhắn đến tất cả người dùng trong danh sách
            await Clients.Users(AffectedUser.Select(x => x.ToString())).SendAsync("MessageSeenNotify", msgDTO);
        }
        public async Task SendGlobalMessage(string msg)
        {
            if (msg.IsNullOrEmpty() || msg.IsNullOrWhiteSpace() || msg.Length > 5120)
            {
                return;
            }

            AffectedUser.Clear();

            var currentUser = UserConnecteds.FirstOrDefault(x => x.Id == CurrentUser.Id.Value);
            var msgDTO      = new UserMessageDTO
            {
                MessGroupId  = Guid.Empty,
                Message      = msg,
                Photo        = currentUser.Picture,
                DisplayName  = currentUser.DisplayName,
                IsReceived   = true,
                CreationTime = DateTime.Now,
                CreatorId    = currentUser.Id
            };
            await Clients.All.SendAsync("ReceiveGlobalMessage", msgDTO);
        }
        public async Task SendMessage(string roomId, string msg)
        {
            if (roomId.IsNullOrEmpty() || roomId.IsNullOrWhiteSpace() || roomId.Length > 5120)
            {
                return;
            }

            if (msg.IsNullOrEmpty() || msg.IsNullOrWhiteSpace() || msg.Length > 5120)
            {
                return;
            }

            await ExtractAffectedUser(roomId);

            var currentUser = UserConnecteds.FirstOrDefault(x => x.Id == CurrentUser.Id.Value);
            var msgDTO      = new UserMessageDTO
            {
                Message     = msg,
                IsReceived  = true,
                IsReaded    = false,
                MessGroupId = CurrentRoomId
            };

            // Lưu tin nhắn vào CSDL
            msgDTO = await _UserMessageService.CreateAsync(msgDTO);

            msgDTO.Photo       = currentUser.Picture;
            msgDTO.DisplayName = currentUser.DisplayName;

            if (msgDTO.Id != Guid.Empty)
            {
                // Gửi tin nhắn đến tất cả người dùng trong danh sách
                await _NotificationHub.Clients
                .Users(AffectedUser.Where(x => x != CurrentUser.Id.Value).Select(x => x.ToString()))
                .SendAsync("NotyHaveNewMsgReciver", msgDTO);

                await Clients.Users(AffectedUser.Select(x => x.ToString())).SendAsync("ReceiveMessage", msgDTO);
            }
        }