public async Task Send(string message, string receiverId) { var senderId = this.userManager.GetUserId(this.Context.User); var sender = await this.userManager.FindByIdAsync(senderId); var messageId = await this.messagesService.CreateAsync(senderId, receiverId, message); var messageViewModel = this.messagesService.GetByIdAsViewModel(messageId); var chatViewModelForCurrentUser = new MessageChatViewModel() { SenderName = sender.UserName, SentOn = messageViewModel.SentOn.ToLocalTime().ToString(), Text = message, IsCurrentUserMessage = true, }; var chatViewModelForOtherUser = new MessageChatViewModel() { SenderName = sender.UserName, SentOn = messageViewModel.SentOn.ToLocalTime().ToString(), Text = message, IsCurrentUserMessage = false, }; await this.Clients.Users(receiverId).SendAsync( "NewMessage", chatViewModelForOtherUser); await this.Clients.Caller.SendAsync( "NewMessage", chatViewModelForCurrentUser); }
private void OnSignalReceived(object sender, OTSessionDelegateSignalEventArgs e) { try { messagesOpentok = JsonConvert.DeserializeObject <MessagesOpentok>(e.StringData); if (e.Type == "infoCall") { _medicalVideoCall.LoadCallHistoryId(messagesOpentok); _medicalVideoCall.ServiceDate = messagesOpentok.ServiceDate; _medicalVideoCall.ServiceNumber = messagesOpentok.ServiceNumber; } if (!String.IsNullOrEmpty(messagesOpentok.from)) { _medicalVideoCall.VideoCallStatusAsync(messagesOpentok.type, messagesOpentok.info?.doctorName, true); } if (e.Type.Equals("call") && messagesOpentok.type == 1 && Session.Connection.ConnectionId != e.Connection.ConnectionId) { InvitedConnection = e.Connection; } SendMessageAsync($"{{\"msg\":\"OK\",\"type\":1}}", "chat", true); SendMessageAsync($"{{\"status\":1}}", "file", true); if (e.Type.Equals("file")) { if (messagesOpentok.status == 3) { _medicalVideoCall.EnableUpload = true; } else if (messagesOpentok.status == 2) { _medicalVideoCall.EnableUpload = false; } } if (e.Type.Equals("chat")) { MessageChatViewModel message; if (messagesOpentok.type == 2) { message = new MessageChatViewModel { Text = messagesOpentok.msg, User = "******", CompleteName = $"Dr. {_medicalVideoCall.DoctorName}", IsFile = false }; _medicalVideoCall.EnableChat = true; _medicalVideoCall.Messages.Insert(0, message); } else if (messagesOpentok.type == 3) { message = new MessageChatViewModel { UrlFile = messagesOpentok.UrlFile, Text = messagesOpentok.msg, User = "******", CompleteName = $"Dr. {_medicalVideoCall.DoctorName}", IsFile = true }; _medicalVideoCall.EnableChat = true; _medicalVideoCall.Messages.Insert(0, message); } } RaiseMessageReceived(e.StringData); } catch (Exception ex) { ServiceLocator.Current.GetInstance <IExceptionService>().RegisterException(ex); } }