public async Task <MessageModel> GetByIdAsync(int messageId)
        {
            var messageEntity = await _messagesRepository.GetByIdAsync(messageId);

            if (messageEntity == null)
            {
                throw new NotFoundCustomException("Message was not found");
            }
            if (!messageEntity.State)
            {
                throw new NotFoundCustomException("Message was not found");
            }

            return(MessageModel.MakeOne(messageEntity));
        }
Example #2
0
        /// <summary>
        ///     Marks message as read and updates lastMessageId of a client.
        /// </summary>
        /// <param name="msgId"></param>
        /// <param name="conversationId"></param>
        /// <param name="whoAccessedId"></param>
        /// <returns></returns>
        /// <exception cref="UnauthorizedAccessException"></exception>
        public async Task MarkMessageAsRead(int msgId, int conversationId, string whoAccessedId)
        {
            var message = await messagesRepository.GetByIdAsync(msgId);

            if (!await usersConversationsRepository.Exists(whoAccessedId, conversationId))
            {
                throw new UnauthorizedAccessException(
                          "User was not present in conversation. Couldn't mark the message as read.");
            }
            message.State = MessageState.Read;
            await messagesRepository.UpdateAsync(message);

            await SetLastMessage(whoAccessedId, conversationId, msgId);

            await unitOfWork.Commit();
        }
        public async Task <MessageGetResponse> GetMessageAsync(string partnerMessageId)
        {
            var contract = await _messagesRepository.GetByIdAsync(partnerMessageId);

            if (contract == null)
            {
                _log.Info($"Partner message with id {partnerMessageId} not found");
                return(null);
            }

            var content = await _messageContentRepository.GetContentAsync(partnerMessageId);

            contract.Message = content;

            return(contract);
        }