public void SendWhisper(PublishingEvent ev)
{
if (ev.Cancel) return;
AuthenticatedClient sender = (AuthenticatedClient) clientRepository.GetByID(ev.Message.clientId);
Whisper whisper = Whisper.FromMessage(ev.Message);
if (whisper == null)
{
ev.Cancel = true;
ev.CancellationReason = "Format error";
SendInfoToClient(sender, "Usage: /whisper <nickname> message");
return;
}
AuthenticatedClient receiver =
clientRepository.WhereSubscribedTo("/chat")
.Cast<AuthenticatedClient>()
.FirstOrDefault(user => user.HasUsername(whisper.Username));
if (receiver == null)
{
SendInfoToClient(sender, "User " + whisper.Username + " is not connected to the chat");
return;
}
SendInfoToClient(sender, "To " + whisper.Username + ": " + whisper.Message);
SendInfoToClient(receiver, sender.Username + " whispers: " + whisper.Message);
}