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()); }
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); }
public void Execute(AcceptMessageRequest request) { messengerService.SendMessage(GetMessageDto(request)); }