private DateTime?EstimateCountyRiskLevelDate(CountyRiskLevel countyRiskLevel, decimal?criticalDaysMovingCasesPerOneHundredThousandAverage,
                                                     decimal?criticalDaysMovingRateChange)
        {
            bool areCasesRising = criticalDaysMovingRateChange >= 0;

            DateTime countyRiskLevelDate = DateTime.Today;

            if (areCasesRising)
            {
                if (countyRiskLevel.IsPassedRiskLevel || countyRiskLevel.IsCurrentRiskLevel)
                {
                    countyRiskLevelDate = EstimateCountyRiskLevelDateRisingCases(criticalDaysMovingCasesPerOneHundredThousandAverage, criticalDaysMovingRateChange, countyRiskLevel.RiskLelvelCasesMin);
                }
                //If cases are rising and this is a less restrictive level, return null
                if (countyRiskLevel.IsFutureRiskLevel)
                {
                    return(null);
                }
            }
            else
            {
                countyRiskLevelDate = EstimateCountyRiskLevelDateDecliningCases(criticalDaysMovingCasesPerOneHundredThousandAverage, criticalDaysMovingRateChange, countyRiskLevel.RiskLelvelCasesMax);
            }

            return(countyRiskLevelDate);
        }
        private void PopulateRiskLevel(CountyRiskLevel countyRiskLevel, County selectedCounty, DateTime latestUpdateDate)
        {
            if (selectedCounty.CriticalDaysMovingCasesPerOneHundredThousandAverage >= countyRiskLevel.RiskLelvelCasesMin &&
                selectedCounty.CriticalDaysMovingCasesPerOneHundredThousandAverage <= countyRiskLevel.RiskLelvelCasesMax)
            {
                countyRiskLevel.IsCurrentRiskLevel = true;
            }
            if (selectedCounty.CriticalDaysMovingCasesPerOneHundredThousandAverage < countyRiskLevel.RiskLelvelCasesMin)
            {
                countyRiskLevel.IsPassedRiskLevel = true;
            }
            if (selectedCounty.CriticalDaysMovingCasesPerOneHundredThousandAverage > countyRiskLevel.RiskLelvelCasesMax)
            {
                countyRiskLevel.IsFutureRiskLevel = true;
            }

            DateTime?riskLevelDate            = EstimateCountyRiskLevelDate(countyRiskLevel, selectedCounty.CriticalDaysMovingCasesPerOneHundredThousandAverage, selectedCounty.CriticalDaysMovingCasesRateChange);
            DateTime?zeroAvailableICUBedsDate = EstimateZeroAvailableICUBedsDate(selectedCounty.CriticalDaysMovingAvailableICUBedsAverage, selectedCounty.CriticalDaysMovingAvailableICUBedsRateChange);

            countyRiskLevel.EstimateRiskLevelDate = riskLevelDate;
            string riskLevelDateDisplay = riskLevelDate != null ? $"{riskLevelDate:MMMM d, yyyy}" : selectedCounty.CriticalDaysMovingCasesRateChange >= 0 ? "-" : "N/A";

            countyRiskLevel.EstimateRiskLevelDateDisplay              = riskLevelDateDisplay;
            countyRiskLevel.EstimateRiskLevelDateQualification        = riskLevelDate;
            countyRiskLevel.EstimateRiskLevelDateQualificationDisplay = riskLevelDateDisplay;
            countyRiskLevel.EstimateZeroAvailableICUBedsDate          = zeroAvailableICUBedsDate;
            string zeroAvailableICUBedsDateDisplay = zeroAvailableICUBedsDate != null ? $"{zeroAvailableICUBedsDate:MMMM d, yyyy}" : "N/A";

            countyRiskLevel.EstimateZeroAvailableICUBedsDateDisplay = zeroAvailableICUBedsDateDisplay;
        }