private async Task <CongestionTypes> UpdateCongestionLevel(TrafficMeter meter) { var sample = await _trafficLogRepoistory.GetSampleOfTrafficLogs(meter.Id); var averageSpeed = (sample.Sum(log => log.Speed) / sample.Count); //Low Congestion if average speed is equal to or greater than 70% of normal speed if (averageSpeed >= (meter.SpeedLimit * 0.7)) { return(CongestionTypes.Low); } //Medium Congestion if average speed is betwwen 40% and 70% of normal speed if ((meter.SpeedLimit * 0.4 <= averageSpeed && averageSpeed < (meter.SpeedLimit * 0.7))) { return(CongestionTypes.Medium); } //High Congestion if average speed is less than 40% of normal speed return(CongestionTypes.High); }
public void MeterUpdated(string region, TrafficMeter meter, TrafficLog log) { Clients.All.meterUpdated(region, meter, log); }