Esempio n. 1
0
        /// <summary>
        /// Build the Dyanmic Email Template variables for the SendGrid template being used for this notification message.
        /// </summary>
        /// <param name="data">An array of <see cref="County"/> objects to build the template variables from.</param>
        /// <returns>A <see cref="NotifyEmailParams"/> object</returns>
        private object getJSONParameters(County[] data, Subscriber subscriber)
        {
            dynamic parameters = new ExpandoObject();

            parameters.SUBSCRIBERID  = subscriber.ID.ToString();
            parameters.DOMAIN        = $"https://{_emailSettings.Host}";
            parameters.ASOFDATE      = DateTime.Today.ToString("dddd, MMMM d");
            parameters.NOTIFICATIONS = data.Where(d => d.ActiveCases.HasValue).Select(d => new
            {
                COUNTY_NAME               = d.Name.Replace(" County", ""),
                STATE_NAME                = d.StateAbbreviation,
                CONFIRMED_CASES           = d.ConfirmedCases.HasValue ? d.ConfirmedCases.Value.ToString("N0") : null,
                CONFIRMED_PCT_CHANGE_WEEK = d.ConfirmedPastWeekPercentChange.HasValue ? County.IncreaseOrDecreaseBlurb(d.ConfirmedPastWeekPercentChange) : null,
                CONFIRMED_PCT_CHANGE_DAY  = d.ConfirmedYesterdayPercentChange.HasValue ? County.IncreaseOrDecreaseBlurb(d.ConfirmedYesterdayPercentChange) : null,
                ACTIVE_CASES_PER_MILLION  = d.ActiveCasesTodayPerMillion.HasValue ? d.ActiveCasesTodayPerMillion.Value.ToString("N0") : null,
                ACTIVE_PCT_CHANGE_WEEK    = d.ActivePastWeekPercentChange.HasValue ? County.IncreaseOrDecreaseBlurb(d.ActivePastWeekPercentChange) : null,
                ACTIVE_PCT_CHANGE_DAY     = d.ActiveYesterdayPercentChange.HasValue ? County.IncreaseOrDecreaseBlurb(d.ActiveYesterdayPercentChange) : null,
            });
            return(parameters);
        }
Esempio n. 2
0
        private async Task <bool> SendSMSMessages(string smsHandle, County[] counties)
        {
            StringBuilder smsBuilder = new StringBuilder();
            var           today      = DateTime.Today.ToString("MM/dd");
            var           ourLink    = _smsSettings.ShortLink;

#if DEBUG
            ourLink = _smsSettings.LocalShortLink;
#endif
            var aboutDataLink = _smsSettings.AboutShortLink;
#if DEBUG
            aboutDataLink = _smsSettings.LocalAboutShortLink;
#endif
            smsBuilder.Clear();
            smsBuilder.AppendLine($"Data presented below:");
            smsBuilder.AppendLine($"-Total Confirmed, change (7-day/2-day)");
            smsBuilder.AppendLine($"-Est. Active (per mil), change (7-day/2-day)");
            string actPerMil, pctChange, confirmedCases, confirmedChange;
            foreach (var cs in counties)
            {
                actPerMil = pctChange = confirmedCases = confirmedChange = "";
                actPerMil = cs.ActiveCasesTodayPerMillion.HasValue ? cs.ActiveCasesTodayPerMillion.Value.ToString("N0") : "?";
                pctChange = cs.ActivePastWeekPercentChange.HasValue ? $" {County.IncreaseOrDecreaseBlurb(cs.ActivePastWeekPercentChange)} / {County.IncreaseOrDecreaseBlurb(cs.ActiveYesterdayPercentChange)}" : " ? / ?";

                actPerMil = cs.ActiveCasesTodayPerMillion.HasValue ? cs.ActiveCasesTodayPerMillion.Value.ToString("N0") : "?";
                pctChange = cs.ActivePastWeekPercentChange.HasValue ? $" {County.IncreaseOrDecreaseBlurb(cs.ActivePastWeekPercentChange)} / {County.IncreaseOrDecreaseBlurb(cs.ActiveYesterdayPercentChange)}" : " ? / ?";

                confirmedCases  = cs.ConfirmedCases.HasValue ? cs.ConfirmedCases.Value.ToString("N0") : "?";
                confirmedChange = cs.ConfirmedPastWeekPercentChange.HasValue ? $" {County.IncreaseOrDecreaseBlurb(cs.ConfirmedPastWeekPercentChange)} / {County.IncreaseOrDecreaseBlurb(cs.ConfirmedYesterdayPercentChange)}" : " ? / ?";

                smsBuilder.AppendLine();
                smsBuilder.AppendLine($"{cs.Name.Replace(" County", "")}, {cs.StateAbbreviation}");
                smsBuilder.AppendLine($"{confirmedCases}, {confirmedChange}");
                smsBuilder.AppendLine($"{actPerMil}, {pctChange}");
            }
            smsBuilder.AppendLine();
            smsBuilder.AppendLine("Resources: https://bit.ly/2KwG88x");
            smsBuilder.AppendLine($"Manage/About data: {aboutDataLink}");
            return(await _smsService.SendMessage(smsHandle, smsBuilder.ToString()));
        }