public async Task Notify(Guid receiverId, string message) { if (Guid.TryParse(Context.UserIdentifier, out Guid userId)) { Group group = await _groupRepository.GetByIdAsync(receiverId); if (group != null) { Message msg = await _messageService.CreateMessageAsync(userId, message, null, group.Id); //todo: need to save ConnectionId in DB await Clients.Client(Context.ConnectionId).SendAsync("Receive", MessageViewModelService.ConvertTo(msg, userId, receiverId)); await Clients.GroupExcept(group.Id.ToString(), Context.ConnectionId).SendAsync("Receive", MessageViewModelService.ConvertTo(msg, null, receiverId)); } else { Message msg = await _messageService.CreateMessageAsync(userId, message, receiverId, null); await Clients.User(userId.ToString()).SendAsync("Receive", MessageViewModelService.ConvertTo(msg, userId, receiverId)); await Clients.User(receiverId.ToString()).SendAsync("Receive", MessageViewModelService.ConvertTo(msg, receiverId, userId)); } } }
public MessageController(AuthService authService, MessageViewModelService messageViewModelService) { _authService = authService; _messageViewModelService = messageViewModelService; }