Ejemplo n.º 1
0
 public CalculatedPollution[] CalculatePollutions(DateTime date, AirQualityPersisted state)
 {
     logger.LogInfo().WithCategory(LogCategory.AirQuality).WithMessage($"Calculating pollutions").Commit();
     CalculatedPollution[] pollution = new CalculatedPollution[]
     {
         CalculatePollution(date, Measurement.PM10, state.PM10, CalculatePM10PollutionIndex(state.PM10?.Value ?? 0)),
         CalculatePollution(date, Measurement.O3, state.O3, CalculateO3PollutionIndex(state.O3?.Value ?? 0)),
         CalculatePollution(date, Measurement.NO2, state.NO2, CalculateNO2PollutionIndex(state.NO2?.Value ?? 0)),
         CalculatePollution(date, Measurement.SO2, state.SO2, CalculateSO2PollutionIndex(state.SO2?.Value ?? 0))
     };
     return(pollution);
 }
Ejemplo n.º 2
0
 public CalculatedPollution[] CalculatePollution(AirQualityData data)
 {
     logger.LogInformation("Calculating pollution");
     CalculatedPollution[] pollution = new CalculatedPollution[]
     {
         CalculatePollution(data.Date, Measurement.PM10, data.PM10, CalculatePM10PollutionIndex(data.PM10 ?? 0)),
         CalculatePollution(data.Date, Measurement.O3, data.O3, CalculateO3PollutionIndex(data.O3 ?? 0)),
         CalculatePollution(data.Date, Measurement.NO2, data.NO2, CalculateNO2PollutionIndex(data.NO2 ?? 0)),
         CalculatePollution(data.Date, Measurement.SO2, data.SO2, CalculateSO2PollutionIndex(data.SO2 ?? 0))
     };
     return(pollution);
 }
Ejemplo n.º 3
0
        public static CalculatedPollution CalculateMaxPollution(CalculatedPollution[] pollutions)
        {
            CalculatedPollution result = null;

            foreach (var pollution in pollutions)
            {
                if (result == null || pollution.Index > result.Index)
                {
                    result = pollution;
                }
            }
            return(result);
        }
Ejemplo n.º 4
0
        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);
        }
Ejemplo n.º 5
0
        public CalculatedPollution CalculatePollution(DateTime measurementDate, Measurement measurement, double?value, double?index)
        {
            CalculatedPollution result = new CalculatedPollution {
                Measurement = measurement, Index = value ?? 0
            };
            bool isOutdated = false;

            if (!value.HasValue || (isOutdated = (DateTime.Now - measurementDate).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.LogInformation($"{outdatedText}{measurement} is {result.Pollution} ({value} with index {result.Index:0.00}) on {measurementDate}");
            return(result);
        }