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)); }
public async Task SendPrivateMessageAsync(CreatePrivateChatMessageDto model) { await ExecuteActionAsync(model, ExecuteSendPrivateMessageAsync, _createPrivateMessageValidator); }