public IHttpActionResult SendMessageIntoChat(Guid id, ChatMessageDispatch model) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } var chatMessage = model.MapToChatMessage(); try { if (User.Identity.IsAuthenticated) // User is an operator. { chatMessage.SenderType = UserType.Operator; var user = Request.GetOwinContext().GetUserManager <ApplicationUserManager>().FindById(User.Identity.GetUserId()); chatMessage.SenderName = user?.ScreenName; } else // User is anonymous { chatMessage.SenderType = UserType.AnonymousUser; chatMessage.SenderName = ChatService.GetScreenName(id); } // Add the message to our chat. ChatService.AddMessageToChat(id, chatMessage); } catch (ChatNotFoundException e) { return(Content(HttpStatusCode.NotFound, $"{e.Message}")); } catch (Exception e) { Logger.Error(e, $"{nameof(SendMessageIntoChat)} threw an exception: {e.Message}"); return(InternalServerError()); } var result = chatMessage.MapToChatMessageDTO(); return(Ok(result)); }