public async Task <DirectMessageResult> SendDirectMessageAsync(SendDirectMessageDto sendDirectMessageDto) { var toUser = await _accountService.GetAccountByIdAsync(sendDirectMessageDto.ToId); if (toUser == null) { return(DirectMessageResult.Fail(new ErrorList().AddError("ToId", "User not found"))); } var directMessage = new DirectMessage(sendDirectMessageDto.MessageText, sendDirectMessageDto.From, toUser); await _directMessageRepository.InsertAsync(directMessage); await _directMessageRepository.CommitAsync(); return(DirectMessageResult.Ok(directMessage)); }
public async Task <IActionResult> SendDirectMessage(SendDirectMessageDto sendDirectMessageDto) { sendDirectMessageDto.From = await GetAuthenticatedUserAccount(); var result = await _directMessageService.SendDirectMessageAsync(sendDirectMessageDto); if (result.Failed) { return(BadRequest(new ValidationErrorResponse(result.Error))); } var vm = DirectMessageViewModel.FromEntity(result.Data); await _hubContext.Clients .User(result.Data.To.Id.ToString()) .SendAsync( DirectMessageHub.DirectMessageReceivedMessage, vm ); var url = Url.Link("GetDirectMessageById", new { id = result.Data.Id }); return(Created(url, new { Message = vm })); }