Exemplo n.º 1
0
        public async Task <IHttpActionResult> GetMessages()
        {
            try
            {
                if (_isSendingMessage)
                {
                    return(CustomResult());
                }

                var config = await _configService.GetConfig();

                var result = await _messengerService.GetMessages(long.Parse(config.LastMessageId));

                if (result != null && result.Data.MessageList.Count > 0)
                {
                    _isSendingMessage = true;

                    var listOfMessageList = result.Data.MessageList.GroupBy(x => x.ChatId).Select(x => x.ToList()).ToList();

                    foreach (var messageList in listOfMessageList)
                    {
                        var myMessage = messageList.OrderByDescending(x => x.MessageId).FirstOrDefault();

                        if (myMessage?.ChatId == null /*|| myMessage.ChatId != "b_7149751_7"*/)
                        {
                            continue;
                        }

                        await _configService.UpdateLastMessageId(myMessage.MessageId);

                        var tuple = await Command(myMessage);

                        await _messengerService.SendMessage(tuple.model);
                    }

                    _isSendingMessage = false;
                }
            }
            catch (Exception e)
            {
                _isSendingMessage = false;
                return(CustomError(e));
            }
            return(CustomResult());
        }
Exemplo n.º 2
0
        public async Task SendMessage(string recipientLogin, string textMessage)
        {
            var senderLogin = Context.User.Identity.Name;
            await Clients.Caller.SendAsync("ReceiveMessage", senderLogin, textMessage, DateTime.Now.ToString("HH:mm, dd MMM"));

            var recipientConnected = ConnectedUsers.TryGetValue(recipientLogin, out var recipientProxy);

            if (recipientConnected)
            {
                await recipientProxy.SendAsync("ReceiveMessage", senderLogin, textMessage, DateTime.Now.ToString());
            }

            messengerService.SendMessage(senderLogin, recipientLogin, textMessage);
        }
Exemplo n.º 3
0
 public void Execute(AcceptMessageRequest request)
 {
     messengerService.SendMessage(GetMessageDto(request));
 }