public async Task <Message> AddMessage(string conversationId, AddMessageRequestBody addMessageRequestBody) { using (_logger.BeginScope("{ConversationId}", conversationId)) { var message = new Message { Id = addMessageRequestBody.Id, SenderUsername = addMessageRequestBody.SenderUsername, Text = addMessageRequestBody.Text, UnixTime = DateTimeOffset.Now.ToUnixTimeMilliseconds() }; ThrowBadRequestIfMessageInvalid(message); try { var stopWatch = Stopwatch.StartNew(); await _messageStore.AddMessage(conversationId, message); _telemetryClient.TrackMetric("MessageStore.AddMessage.Time", stopWatch.ElapsedMilliseconds); _telemetryClient.TrackEvent("MessageCreated"); } catch (MessageAlreadyExistsException e) { message = await _messageStore.GetMessage(conversationId, message.Id); return(message); } await _conversationStore.UpdateConversation(message.UnixTime, conversationId); return(message); } }
public async Task <PostMessageResponse> PostMessage(string conversationId, PostMessageRequest postMessageRequest) { using (_logger.BeginScope("{MessageId}", postMessageRequest.Id)) { PostMessageResponse message = new PostMessageResponse { Id = postMessageRequest.Id, Text = postMessageRequest.Text, SenderUsername = postMessageRequest.SenderUsername, UnixTime = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds() }; var stopWatch = Stopwatch.StartNew(); var fetchedMessage = await _messageStore.AddMessage(message, conversationId); await _conversationStore.UpdateConversation(conversationId, fetchedMessage.UnixTime); _telemetryClient.TrackMetric("MessageStore.AddMessage.Time", stopWatch.ElapsedMilliseconds); _telemetryClient.TrackEvent("MessageAdded"); return(fetchedMessage); } }