public static XElement ValueToXElement(string name, AirQualityValue node) { if (node != null) { return(new XElement(name, new XAttribute(nameof(node.LastDate), node.LastDate.ToString(CultureInfo.InvariantCulture)), node.Value.ToString(CultureInfo.InvariantCulture))); } else { return(null); } }
public static AirQualityValue XElementToNode(XElement element) { if (element == null) { return(null); } else { AirQualityValue value = new AirQualityValue { LastDate = DateTime.Parse((string)element.Attribute(nameof(value.LastDate)), CultureInfo.InvariantCulture), Value = double.Parse(element.Value, CultureInfo.InvariantCulture) }; return(value); } }
public CalculatedPollution CalculatePollution(DateTime measurementDate, Measurement measurement, AirQualityValue value, double?index) { CalculatedPollution result = new CalculatedPollution { Measurement = measurement, Index = value?.Value ?? 0 }; bool isOutdated = false; if (value == null || (isOutdated = (measurementDate - value.LastDate).TotalHours > 4)) { result.Pollution = AirPollution.Low; result.Index = 0; } else { if (index.Value < 50) { result.Pollution = AirPollution.Low; } else if (index < 75) { result.Pollution = AirPollution.Mid; } else if (index < 100) { result.Pollution = AirPollution.High; } else { result.Pollution = AirPollution.VeryHigh; } result.Index = index.Value; } string outdatedText = isOutdated ? "OUTDATED " : ""; logger.LogInfo().WithCategory(LogCategory.AirQuality) .WithMessage($"{outdatedText}{measurement} is {result.Pollution} ({value?.Value} with index {result.Index:0.00}) on {value?.LastDate}") .Commit(); return(result); }