public override DataTemplate SelectTemplate(object item, DependencyObject container) { ConversationMessageViewModel message = (ConversationMessageViewModel)item; switch (message.Type) { case ConversationViewMessageType.Incoming: return(this.IncomingTemplate); case ConversationViewMessageType.Outgoing: return(this.OutgoingTemplate); } return(null); }
public async Task <IActionResult> Post([FromBody] ConversationMessageViewModel value) { if (ModelState.IsValid) { if (value.ConversationId.IsDefault() || value.ReceiverId.IsDefault()) { return(BadRequest("Unable to validate payload")); } var senderId = User.GetUserId(); var sentMessage = await _conversationDataProvider.SendMessageAsync(senderId, value); await _messageHandler.SendChatMessageToRecipientAsync(Request.GetAccessToken(), senderId, sentMessage); return(Ok(sentMessage)); } return(BadRequest(new { Errors = ModelState.ToErrorCollection() })); }
public async Task <ConversationMessageViewModel> SendMessageAsync(Guid senderId, ConversationMessageViewModel message) { //TODO: Check the instigator has the right to post a message to this conversation var entity = new ConversationMessage { ConversationId = message.ConversationId, Created = DateTime.Now, Message = message.Message, SenderId = senderId, ReceiverId = message.ReceiverId }; await Context.AddAsync(entity); await Context.SaveChangesAsync(); return(new ConversationMessageViewModel { Id = entity.Id, ConversationId = entity.ConversationId, Message = entity.Message, ReceiverId = entity.ReceiverId, Sent = entity.Created, Seen = entity.Seen }); }
public async Task SendChatMessageToRecipientAsync(string accessToken, Guid senderId, ConversationMessageViewModel conversationMessage) { foreach (var userClient in WebSocketConnectionManager.GetClientByUserId(conversationMessage.ReceiverId)) { await InvokeClientMethodAsync(userClient.Key, "ChatMessageReceived", new[] { conversationMessage }); } foreach (var userClient in WebSocketConnectionManager.GetClientByUserId(senderId)) { await InvokeClientMethodAsync(userClient.Key, "ChatMessageReceived", new[] { conversationMessage }); } }