public async Task <LightMessage> CreateMessageForUserAsync(string receiverUserName, string text, string senderUserName, string imgUrl = null) { if (!await IsUserNameExistsAsync(receiverUserName) || !await IsUserNameExistsAsync(senderUserName)) { return(null); } User sender = repository.GetUserByName(senderUserName); User receiver = repository.GetUserByName(receiverUserName); var message = new Message { SenderId = sender.Id, ReceiverId = receiver.Id, Time = DateTime.Now, Text = text, ImgUrl = imgUrl }; await repository.SaveNewMessageAsync(message); LightMessage lightMessage = new LightMessage { Sender = sender.Name, Receiver = receiver.Name, Text = text, Time = message.Time, ImgUrl = message.ImgUrl }; return(lightMessage); }
public async Task <IActionResult> Index(FormModel form) { LightMessage message = await dataService.SaveNewImgMessageAsync(form); string senderConnectionId = dataService.GetConnectionByUserName(message.Sender); string receiverConnectionId = dataService.GetConnectionByUserName(message.Receiver); await hubContext.Clients.Clients(senderConnectionId, receiverConnectionId).SendAsync("reciveMessage", message); return(Ok()); }
public void ProcessMessage(LightMessage message) { switch (message) { case LightMessage.Reset: ChangeState(LightState.Red); break; case LightMessage.Next: switch (CurrentState) { case LightState.None: ChangeState(LightState.Red); break; case LightState.Red: ChangeState(LightState.RedAmber); break; case LightState.RedAmber: ChangeState(LightState.Green); break; case LightState.Green: ChangeState(LightState.Amber); break; case LightState.Amber: ChangeState(LightState.Red); break; default: throw new ApplicationException("Unexpected state in RawTrafficLight::Next"); } break; case LightMessage.Dance: throw new ApplicationException("Unexpected message in RawTrafficLight::Next"); case LightMessage.OtherMessagesGoHere: throw new ApplicationException("Unexpected message in RawTrafficLight::Next"); } }
public async Task <bool> SendMessageToUserAsync(string userName, string text) { User sender = dataService.GetUserByConnection(Context.ConnectionId); LightMessage message = await dataService.CreateMessageForUserAsync(userName, text, sender.Name); if (message == null) { return(false); } await Clients.Caller.SendAsync("reciveMessage", message); string connectionId = dataService.GetConnectionByUserName(message.Receiver); if (connectionId != null) { await Clients.Client(connectionId).SendAsync("reciveMessage", message); } return(true); }
public void ProcessMessage(LightMessage message) { _machine.EnqueueMessage(message); }
static void led(LightMessage l) { }