Ejemplo n.º 1
0
        public List <DatabasePerHourStat> CalculateHourlyAverages(List <DateTime> hoursToCalulate)
        {
            List <DatabasePerHourStat> perHourStats = new List <DatabasePerHourStat>();

            DatabasePerHourStat          hourStat             = null;
            List <DatabasePerSecondStat> tempAllSecondsInHour = null;
            int minPeopleInHour = -1;
            int maxPeopleInHour = -1;
            int tempSum         = 0;

            foreach (DateTime hour in hoursToCalulate)
            {
                tempAllSecondsInHour = _dbQueryService.GetAllSecondsForHour(hour);

                if (tempAllSecondsInHour.Count != 3600)
                {
                    // Write to log that this hour is missing PerSecondStats.
                    return(null);
                }

                minPeopleInHour = tempAllSecondsInHour.First().NumDetectedObjects;
                maxPeopleInHour = tempAllSecondsInHour.First().NumDetectedObjects;
                tempSum         = 0;

                // Calculate average, min and max. Create DatabasePerHourStat.
                foreach (DatabasePerSecondStat second in tempAllSecondsInHour)
                {
                    tempSum += second.NumDetectedObjects;

                    if (second.NumDetectedObjects < minPeopleInHour)
                    {
                        minPeopleInHour = second.NumDetectedObjects;
                    }

                    if (second.NumDetectedObjects > maxPeopleInHour)
                    {
                        maxPeopleInHour = second.NumDetectedObjects;
                    }
                }

                hourStat = new DatabasePerHourStat
                {
                    Day  = DateTimeTools.GetHourBeginning(hour),
                    Hour = hour.Hour,
                    AverageDetectedObjects = (tempSum / tempAllSecondsInHour.Count),
                    MaximumDetectedObjects = maxPeopleInHour,
                    MinimumDetectedObjects = minPeopleInHour
                };

                perHourStats.Add(hourStat);
            }

            return(perHourStats);
        }