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