Beispiel #1
0
        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 }));
        }