private void DiscoverEvents(object state) { var events = _eventsService.GetEvents().Result; var users = _usersService.GetAllUsers().Result; foreach (var ev in events) { string eventMessage = $"{ev.Content}. Date and Time: {ev.EventDateTime}"; foreach (var user in users) { if (user.EventSocialEnabled && ev.EventType == Models.EventType.Social && ev.EventDateTime > DateTime.Now) { _messageBroadcastService.SendMessage(user.Name, user.Number, eventMessage); } else if (user.EventTherapyEnabled && ev.EventType == Models.EventType.Therapy && ev.EventDateTime > DateTime.Now) { _messageBroadcastService.SendMessage(user.Name, user.Number, eventMessage); } else if (user.EventConferenceEnabled && ev.EventType == Models.EventType.Conference && ev.EventDateTime > DateTime.Now) { _messageBroadcastService.SendMessage(user.Name, user.Number, eventMessage); } else if (user.EventSportEnabled && ev.EventType == Models.EventType.Sport && ev.EventDateTime > DateTime.Now) { _messageBroadcastService.SendMessage(user.Name, user.Number, eventMessage); } } } }
public async Task <bool> ExecuteHeartbeatProtocol(HeartbeatData heartbeat) { var user = await userService.GetUserById(heartbeat.UserId); var history = user.HeartbeatHistory?.ToList() ?? new List <HeartbeatHistory>(); history.Add(new HeartbeatHistory { AverageBpm = heartbeat.AverageBpm, DateTime = DateTime.Now }); user.HeartbeatHistory = history; if (heartbeat.AverageBpm > 100 && heartbeat.IsOutlyingStatus) { var builder = new StringBuilder(); builder.AppendLine("We noticed you are particuarly stressed."); builder.AppendLine("If false alarm reply OK."); builder.AppendLine("If you need a grounding exercise reply HELP."); builder.AppendLine("If you need advice reply ADVICE."); messageBroadcastService.SendMessage(user.Name, user.Number, builder.ToString()); user.AwaitingResponse = true; user.BpmMessageSentTime = DateTime.Now; } await userService.SaveUser(user.Id, user); return(true); }
private async void DiscoverMotivationals(object state) { _logger.LogInformation("Worker running at: {time}", DateTimeOffset.Now); var users = await _userService.GetAllUsers(); foreach (var user in users) { MotivationalQuote randomQuote = _motivationalQuotesService.GetRandomQuote().Result; var now = DateTime.Now; bool mustSend = false; if (user.Frequency.Frequency == MessageFrequency.Day) { if (now.Subtract(user.Frequency.LastMessaged) > TimeSpan.FromDays(-1)) { mustSend = true; } } else if (user.Frequency.Frequency == MessageFrequency.Hour) { if (now.Subtract(user.Frequency.LastMessaged) > TimeSpan.FromHours(-1)) { mustSend = true; } } else if (user.Frequency.Frequency == MessageFrequency.Minute) { if (now.Subtract(user.Frequency.LastMessaged) > TimeSpan.FromMinutes(-1)) { mustSend = true; } } else if (user.Frequency.Frequency == MessageFrequency.Never) { mustSend = false; } if (mustSend) { _messageBroadcastService.SendMessage(user.Name, user.Number, $"{randomQuote.Quote}. To stop receiving these messages reply STOP."); } var userFrequency = new UserFrequency { LastMessaged = now, Frequency = user.Frequency.Frequency }; user.Frequency = userFrequency; await _userService.UpdateUser(user.Id, user); } }
private async void MessageEmergencyContact(object state) { var users = await userService.GetAllUsers(); foreach (var user in users) { if (user.AwaitingResponse && ((user.BpmMessageSentTime + new TimeSpan(0, 0, 10)) > DateTime.Now)) { messageBroadcastService.SendMessage(user.EmergencyContact.Name, user.EmergencyContact.Number, $"We noticed {user.Name} has an unusually high heartrate. Please call them to make sure everything is ok on {user.Number}"); user.BpmMessageSentTime = null; user.AwaitingResponse = false; var callback = userService.SaveUser(user.Id, user); } } }