public async Task Send(MessageRequest messageRequest) { var message = await _messagesService.CreateEntityAsync(messageRequest); if (message == null) { return; } var createdMessage = await _messagesService.GetEntityByIdAsync(message.Id); var usersInChat = await _chatsService.GetUsersByChatIdAsync(createdMessage.ChatId); foreach (var userDto in usersInChat) { // Sending to email await SendToEmailIfNeeded(userDto, createdMessage); if (!UsersConnections.ContainsKey(userDto.Id)) { continue; } foreach (string connectionId in UsersConnections[userDto.Id]) { await Clients.Client(connectionId).SendAsync("ReceiveMessage", createdMessage); } } }
public virtual async Task <ActionResult <MessageDto> > Create([FromBody] MessageRequest request) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } var dto = await _messagesService.CreateEntityAsync(request); if (dto == null) { return(StatusCode(500)); } return(CreatedAtAction("GetById", new { id = dto.Id }, dto)); }