Пример #1
0
        private async Task ExecuteSendPrivateMessageAsync(CreatePrivateChatMessageDto model, CancellationToken ct = default)
        {
            model.UserId = Context.UserIdentifier;

            GetPrivateChatMessageDto message = await _privateChatMessageService.AddMessageAsync(model, ct);

            GetPrivateChatDto chat = await _privateChatService.GetChatByIdAsync(model.ChatId, ct);

            await Clients.Users(chat.InvitedUser.Id, chat.CreatedByUser.Id).SendAsync(nameof(ChatMessageHub), message, cancellationToken: ct);
        }
        public async Task <GetPrivateChatMessageDto> AddMessageAsync(CreatePrivateChatMessageDto messageDto, CancellationToken ct = default)
        {
            _logger.LogInformation("Create private chat message {PrivateChatMessage}", messageDto);

            PrivateChat chat = await _unitOfWork.PrivateChatRepository.GetAsync(messageDto.ChatId, ct);

            if (chat == null)
            {
                _logger.LogWarning("Private chat with id {PrivateChatId} not found", messageDto.ChatId);
                throw new ChatNotFoundException();
            }

            PrivateChatMessage message = _mapper.Map <PrivateChatMessage>(messageDto);

            message.CreatedAt = message.UpdatedAt = DateTime.UtcNow;

            _unitOfWork.PrivateChatMessageRepository.Create(message);

            await _unitOfWork.CommitAsync(ct);

            return(_mapper.Map <GetPrivateChatMessageDto>(message));
        }
Пример #3
0
 public async Task SendPrivateMessageAsync(CreatePrivateChatMessageDto model)
 {
     await ExecuteActionAsync(model, ExecuteSendPrivateMessageAsync, _createPrivateMessageValidator);
 }