From a3ad4472de9096ec0a12d15097048578b3514d4b Mon Sep 17 00:00:00 2001 From: marcinzelent Date: Mon, 4 Dec 2017 10:14:32 +0100 Subject: Improved calculating of AQI and sending e-mail. --- PollutometerWebApi/EmailService.cs | 119 ------------------------------------- 1 file changed, 119 deletions(-) delete mode 100644 PollutometerWebApi/EmailService.cs (limited to 'PollutometerWebApi/EmailService.cs') diff --git a/PollutometerWebApi/EmailService.cs b/PollutometerWebApi/EmailService.cs deleted file mode 100644 index 3681dd2..0000000 --- a/PollutometerWebApi/EmailService.cs +++ /dev/null @@ -1,119 +0,0 @@ -using System; -using System.Collections.Generic; -using PollutometerWebApi.Singletons; - -namespace PollutometerWebApi -{ - public class EmailService - { - public EmailService() - { - } - - public static void Start() - { - var startTimeSpan = TimeSpan.Zero; - var periodTimeSpan = TimeSpan.FromMinutes(60); - - var timer = new System.Threading.Timer((e) => - { - var command = "SELECT * FROM Readings " + - "WHERE TimeStamp IN(SELECT MAX(TimeStamp) FROM Readings)"; - var reading = SqlOperator.GetReadings(command)[0]; - - Dictionary results = new Dictionary(); - results["CO"] = CalculateAqi(reading.Co, "CO"); - results["NO"] = CalculateAqi(reading.No, "NO"); - results["SO"] = CalculateAqi(reading.So, "SO"); - - double max = 0; - string gasName = ""; - foreach (var result in results) - { - if (result.Value > max) - { - max = result.Value; - gasName = result.Key; - } - } - - if(max >= 151) EmailSender.SendEmail(gasName, max); - }, null, startTimeSpan, periodTimeSpan); - } - - static double CalculateAqi(double c, string t) - { - double[,,] breakpoints = - { - { - {0, 4.4}, - {4.5, 9.4}, - {9.5, 12.4}, - {12.5, 15.4}, - {15.5, 30.4}, - {30.5, 40.4}, - {40.5, 50.4} - }, - { - {0.000, 0.034}, - {0.035, 0.144}, - {0.145, 0.224}, - {0.225, 0.304}, - {0.305, 0.604}, - {0.605, 0.804}, - {0.805, 1.004} - }, - { - {0, 0.05}, - {0.08, 0.10}, - {0.15, 0.20}, - {0.25, 0.31}, - {0.65, 1.24}, - {1.25, 1.64}, - {1.65, 2.04} - }, - { - {0, 50}, - {51, 100}, - {101, 150}, - {151, 200}, - {201, 300}, - {301, 400}, - {401, 500} - } - }; - - double i, cLow = 0, cHigh = 0, iLow = 0, iHigh = 0; - int g = 0; - - switch (t) - { - case "CO": - g = 0; - break; - case "SO": - g = 1; - break; - case "NO": - g = 2; - break; - } - - for (int j = 0; j < 7; j++) - { - if (c >= breakpoints[g, j, 0] && c <= breakpoints[g, j, 1]) - { - cLow = breakpoints[g, j, 0]; - cHigh = breakpoints[g, j, 1]; - iLow = breakpoints[3, j, 0]; - iHigh = breakpoints[3, j, 1]; - break; - } - } - - i = (iHigh - iLow) / (cHigh - cLow) * (c - cLow) + iLow; - - return i; - } - } -} -- cgit v1.2.3