public async Task <IActionResult> Handle(GetUserRequest request, CancellationToken cancellationToken) { var userId = _currentUserAccessor.GetUserId(); var user = await _authDbContext.Users.FindAsync(userId); var response = _mapper.Map <UserResponse>(user); return(new OkObjectResult(response)); }
public async Task <IActionResult> Handle(GetChannelListRequest request, CancellationToken cancellationToken) { var userId = _currentUserAccessor.GetUserId(); var channels = await _chatChannelRepository.FindByPredicateAsync(x => x.ParticipantUserIds.Contains(userId)); var response = _mapper.Map <IEnumerable <ChatChannelResponse> >(channels); return(new OkObjectResult(response)); }
public async Task <IActionResult> Handle(GetMessageListRequest request, CancellationToken cancellationToken) { var query = new ListChatMessagesQuery { ChannelId = request.ChannelId, UserId = _userAccessor.GetUserId() }; var result = await _mediator.Send(query, cancellationToken); return(new OkObjectResult(result)); }
public async Task <IActionResult> Handle(DeleteCurrentParticipantFromChannelRequest request, CancellationToken cancellationToken) { var userId = _currentUserAccessor.GetUserId(); var channel = await _chatChannelEntityRepository.FindAsync(request.ChannelId); if (!channel.ParticipantUserIds.Contains(userId)) { return(new UnauthorizedResult()); } channel.ParticipantUserIds.Remove(userId); await _chatChannelEntityRepository.UpdateAsync(channel); return(new OkResult()); }
public async Task <IActionResult> Handle(PostChannelRequest request, CancellationToken cancellationToken) { var userId = _currentUserAccessor.GetUserId(); request.Participants.Add(userId); var channel = new ChatChannel { Title = request.Title, ParticipantUserIds = request.Participants, CreatorUserId = userId }; // TODO: Check whether all participants even exist in DB await _channelEntityRepository.AddAsync(channel); return(new OkResult()); }
public async Task SendAsync(string channelId, string message) { var userId = _currentUserAccessor.GetUserId(); Ensure.That(userId).IsNotNullOrEmpty(); var channel = await GetChannelAsync(channelId); Ensure.That(channel).IsNotNull(); var chatMessage = new ChatMessage { ChannelId = channelId, Message = message, UserId = userId }; await _chatMessageEntityRepository.AddAsync(chatMessage); await _hubContext.Clients.Users(channel.ParticipantUserIds.ToList()) .ReceiveMessage(chatMessage); }