Esempio n. 1
0
 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);
     }
 }
Esempio n. 2
0
 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);
        }