public async Task SendMessage(SendMessageRequest request) { var(authorId, authorName, groupId, content) = request; var message = new ChatMessage( MessageId: Guid.NewGuid(), Timestamp: DateTimeOffset.UtcNow, GroupId: groupId, AuthorId: authorId, AuthorUsername: authorName, Content: content ); await Clients.Group(groupId.ToString()) .SendAsync("message-received", message); await chatDb.AddMessage(message); }
public async Task <SendMessagePayload> SendMessage( SendMessageInput input, [Service] IMessageDb messageDb, [Service] ITopicEventSender eventSender ) { var(authorId, groupId, authorName, content) = input; var message = new ChatMessage( MessageId: Guid.NewGuid(), Timestamp: DateTimeOffset.UtcNow, GroupId: groupId, AuthorId: authorId, AuthorUsername: authorName, Content: content ); await eventSender.SendAsync(new Topic.NewMessage(groupId), message); await messageDb.AddMessage(message); return(new SendMessagePayload(message)); }