コード例 #1
0
        /// <summary>
        /// Process message
        /// to existing chat.
        ///
        /// </summary>
        /// <param name="messageData"></param>
        /// <returns></returns>
        public async Task <MessageResponse> ProcessChatMessage(PostMessageToChatDto messageData)
        {
            var messageOwner = await _userManager.FindByIdAsync(messageData.UserId);

            if (messageOwner == null)
            {
                return(MessageResponse.Unsuccessful("Error finding message owner."));
            }

            messageData.ApplicationUser = messageOwner;

            var message = _mapper.Map <Message>(messageData);

            var messageSaved = await _repository.SaveMessage(message);

            if (!messageSaved)
            {
                return(MessageResponse.Unsuccessful("Error in saving message."));
            }

            var chatResponse = await _chatsManager.RefreshChatActivity(messageData.ChatId);

            if (!chatResponse.Success)
            {
                return(MessageResponse.Unsuccessful(chatResponse.ErrorMessage));
            }

            var messageDetailsDto = _mapper.Map <MessageDetailsDto>(message);

            messageDetailsDto.ApplicationUser = messageOwner.UserName;

            return(MessageResponse.Successfull(messageDetailsDto));
        }