public async Task <IActionResult> PutMessageChatModel(MessageChatModel message)
        {
            if (message.Id == 0)
            {
                setStatus("fail", "Error in request", 403);
                return(BadRequest(status));
            }

            _context.Entry(message).State = EntityState.Modified;

            try
            {
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!MessageChatModelExists(message.Id))
                {
                    setStatus("fail", "No message found", 404);
                    return(NotFound(status));
                }
                else
                {
                    throw;
                }
            }
            setStatus("success", "Update message sucessfully", 200);
            return(Ok(status));
        }
Exemplo n.º 2
0
        private async void GetChatMe()
        {
            try
            {
                pr_Load.Visibility = Visibility.Collapsed;
                wc = new WebClientClass();
                // http://message.bilibili.com/api/msg/query.room.list.do?access_key=a36a84cc8ef4ea2f92c416951c859a25&actionKey=appkey&appkey=c1b107428d337928&build=414000&page_size=100&platform=android&ts=1461404884000&sign=5e212e424761aa497a75b0fb7fbde775
                string url = string.Format("http://message.bilibili.com/api/msg/query.room.list.do?access_key={0}&actionKey=appkey&appkey={1}&build=411005&page_size=100&platform=android&ts={2}", ApiHelper.access_key, ApiHelper._appKey, ApiHelper.GetTimeSpen);
                url += "&sign=" + ApiHelper.GetSign(url);
                string results = await wc.GetResults(new Uri(url));

                MessageChatModel model = JsonConvert.DeserializeObject <MessageChatModel>(results);
                if (model.code == 0)
                {
                    List <MessageChatModel> list = JsonConvert.DeserializeObject <List <MessageChatModel> >(model.data.ToString());
                    list_ChatMe.ItemsSource = list;
                }
                else
                {
                    messShow.Show("读取失败" + model.message, 3000);
                }
            }
            catch (Exception)
            {
                messShow.Show("读取失败", 3000);
            }
            finally
            {
                pr_Load.Visibility = Visibility.Collapsed;
            }
        }
        private async Task CreateNotification(MessageChatModel msg, Guid messageId, string notifyType, ICollection <UserModel> toUser)
        {
            await Mediator.Send(new CreateNotificationCommand()
            {
                RegUserId      = _currentUserService.UserId,
                RegUserName    = _currentUserService.UserName,
                MessageContent = msg.Content,
                ConversationId = msg.ConversationId.ToString(),
                MessageId      = messageId.ToString(),
                ToUser         = toUser,
                Type           = notifyType,
                TeamId         = msg.TeamId
            });

            // Method intentionally left empty.
        }
Exemplo n.º 4
0
        public List <MessageChatModel> SearchMessages(string userId, string searchText)
        {
            try
            {
                var lstMessages     = new List <MessageChatModel>();
                var conversationIds = GetConversationIds(userId);

                // If blank search, assume they want to search everything
                if (!string.IsNullOrWhiteSpace(searchText))
                {
                    searchText += SearchBolbStorageFiles(searchText);
                }
                else
                {
                    searchText = "*";
                }

                var parameters = new SearchParameters()
                {
                    Filter     = $"search.in(ConversationId, '{conversationIds}', ',')",
                    SearchMode = SearchMode.All
                };

                var results = _indexMessagesClient.Documents.Search(searchText, parameters).Results;
                foreach (SearchResult <Document> result in results)
                {
                    var message = new MessageChatModel()
                    {
                        Id             = Guid.Parse((string)result.Document.GetValueOrDefault("Id")),
                        Content        = (string)result.Document.GetValueOrDefault("Content"),
                        ConversationId = Guid.Parse((string)result.Document.GetValueOrDefault("ConversationId")),
                        RegUserName    = (string)result.Document.GetValueOrDefault("RegUserName"),
                        Created        = ((DateTimeOffset)result.Document.GetValueOrDefault("Created")).UtcDateTime
                    };
                    lstMessages.Add(message);
                }

                return(lstMessages);
            }
            catch (Exception ex)
            {
                Console.WriteLine("Error querying index: {0}\r\n", ex.Message.ToString());
            }

            return(null);
        }
        private async Task <ConversationLastContentModel> GetLastConversationAsync(MessageChatModel msg)
        {
            var conver = await Mediator.Send(new GetConversationQuery
            {
                LoginUserId    = _currentUserService.UserId,
                ConversationId = msg.ConversationId.ToString()
            });

            return(new ConversationLastContentModel
            {
                Conversation = conver,
                LastMessageChatContent = new MessageChatModel
                {
                    RegUserName = msg.RegUserName,
                    Content = msg.Content,
                    ConversationId = msg.ConversationId,
                    Created = DateTime.UtcNow
                }
            });
        }
        public async Task <ActionResult <MessageChatModel> > PostMessageChatModel(MessageChatModel message)
        {
            var sender = await _context.Users.FindAsync(message.SenderId);

            if (sender == null)
            {
                setStatus("fail", "No id found with the sender id", 404);
                return(NotFound(status));
            }

            var receiver = await _context.Users.FindAsync(message.ReceiverId);

            if (receiver == null)
            {
                setStatus("fail", "No id found with the receiver id", 404);
                return(NotFound(status));
            }

            _context.MessageChats.Add(message);
            await _context.SaveChangesAsync();

            return(CreatedAtAction("GetMessageChatModel", new { id = message.Id }, message));
        }
        public async Task <IActionResult> SendMessageToUser([FromRoute] string userId, [FromBody] MessageChatModel msg)
        {
            try
            {
                msg.CreatedBy   = _currentUserService.UserId;
                msg.RegUserName = _currentUserService.UserName;
                if (msg.AttachFileList != null)
                {
                    foreach (AttachFileModel file in msg.AttachFileList)
                    {
                        file.BlobStorageUrl = await _blobStorageService
                                              .UploadFileToBlobAsync(file.LocalUrl.Replace("\\\\", "\\"), file.FileStorageName);
                    }
                }
                msg.Created = DateTime.UtcNow;
                Guid messageId = await Mediator.Send(new CreateMessageChatCommand()
                {
                    RegUserId         = msg.CreatedBy,
                    RegUserName       = msg.RegUserName,
                    Content           = msg.Content,
                    ConversationId    = msg.ConversationId,
                    AttachFileList    = msg.AttachFileList,
                    RelatedMessagesId = msg.RelatedMessagesId,
                    RelatedTaskId     = msg.RelatedTaskId
                });

                // edit message id back to MessageChatModel
                msg.Id = messageId;

                // query other members of the conversation
                var conversation = await Mediator.Send(new GetConversationQuery
                {
                    ConversationId = msg.ConversationId.ToString()
                });

                msg.TeamId = conversation.TeamId;

                // create Notification
                await CreateNotification(msg, messageId, "Mention", msg.Mentions);

                // Do client cua ban cu su dung 2 message model khac nhau,
                // nen doan code duoi dung de chuyen ve model ban cu de co the send message cho ca ban moi va ban cu
                var msgSend = new MessageDto()
                {
                    AttachFiles       = msg.AttachFileList,
                    ConversationId    = msg.ConversationId,
                    ConversationName  = msg.ConversationName,
                    Date              = msg.Created,
                    IsPin             = msg.IsPin,
                    Mentions          = msg.Mentions,
                    Message           = msg.Content,
                    MessageId         = msg.Id.ToString(),
                    Name              = msg.RegUserName,
                    Reactions         = msg.ReactionList,
                    RelatedMessagesId = msg.RelatedMessagesId,
                    RelatedTaskId     = msg.RelatedTaskId,
                    TeamId            = msg.TeamId,
                    UserId            = msg.CreatedBy,
                };
                msgSend.Type = "received";

                // Sent messages to Receiver
                foreach (var entity in GetConnectionEntitys(userId))
                {
                    await _hubContext.Clients.Client(entity.RowKey).SendAsync("NewConversation", await GetLastConversationAsync(msg));

                    await _hubContext.Clients.Client(entity.RowKey).SendAsync("ReceiveMessage", msgSend);
                }

                msgSend.Type = "sent";
                // Sent messages to Sender
                foreach (var entity in GetConnectionEntitys(_currentUserService.UserId))
                {
                    await _hubContext.Clients.Client(entity.RowKey).SendAsync("ReceiveMessage", msgSend);
                }
            }
            catch (Exception)
            {
                if (msg.AttachFileList != null)
                {
                    foreach (AttachFileModel file in msg.AttachFileList)
                    {
                        await _blobStorageService.DeleteBlobData(file.BlobStorageUrl);
                    }
                }
            }

            return(NoContent());
        }