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)); }
/// <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); }