/// <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); }
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())); }