コード例 #1
0
        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);
                    }
                }
            }
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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);
            }
        }
コード例 #4
0
        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);
                }
            }
        }