public override bool IsMatch(IPrincipal principal, HttpContextBase httpContext)
        {
            var currentWeather = _weatherService.Service.GetCurrentConditions();

            if (currentWeather == null)
            {
                return(false);
            }

            var windSpeed = currentWeather.CurrentConditions.WindSpeedMetric;

            if (Model.WindSpeedUnit == Enums.WindSpeedUnit.MilesPerHour)
            {
                windSpeed = SpeedConversions.MPStoMPH(windSpeed);
            }
            else if (Model.WindSpeedUnit == Enums.WindSpeedUnit.KilometersPerHour)
            {
                windSpeed = SpeedConversions.MPStoKMPH(windSpeed);
            }

            if (Model.Condition == Enums.Condition.EqualTo && windSpeed == Model.WindSpeed)
            {
                return(true);
            }
            else if (Model.Condition == Enums.Condition.GreaterThan && windSpeed >= Model.WindSpeed)
            {
                return(true);
            }
            else if (Model.Condition == Enums.Condition.LessThan && windSpeed < Model.WindSpeed)
            {
                return(true);
            }

            return(false);
        }
        public override bool IsMatch(IPrincipal principal, HttpContextBase httpContext)
        {
            var currentWeather = _weatherService.Service.GetCurrentConditions();

            if (currentWeather == null)
            {
                return(false);
            }

            var Tf   = TemperatureConversions.KelvinToF(currentWeather.CurrentConditions.TemperatureK);
            var Wmph = SpeedConversions.MPStoMPH(currentWeather.CurrentConditions.WindSpeedMetric);

            double TwcF = Tf;

            // Wind chill calculations don't work (and aren't meaningful) for winds of less than 3MPH.
            if (Wmph >= 3)
            {
                TwcF = TemperatureConversions.CalculatedWindChill(Tf, Wmph);
            }

            var temperature = TwcF;

            if (Model.TemperatureScale == Enums.TemperatureScale.Celcius)
            {
                temperature = TemperatureConversions.FahrenheitToCelcius(TwcF);
            }

            if (Model.Condition == Enums.Condition.EqualTo && temperature == Model.Temperature)
            {
                return(true);
            }
            else if (Model.Condition == Enums.Condition.GreaterThan && temperature >= Model.Temperature)
            {
                return(true);
            }
            else if (Model.Condition == Enums.Condition.LessThan && temperature < Model.Temperature)
            {
                return(true);
            }

            return(false);
        }