Exemple #1
0
        private static Statistics GetStatistics(CarWasher carWasher)
        {
            try
            {
                var visitors = carWasher.GetAllVisitors();

                var processedVisitors = visitors.Where(v => v.ProcessedOn.HasValue && v.Status == Enums.Enum.VisitorStatus.Processed);

                TimeSpan averageProcessingTime, averageTotalTime, averageWaitingTime;
                if (processedVisitors.Any())
                {
                    averageTotalTime      = TimeSpan.FromMilliseconds(processedVisitors.Average(v => (v.ProcessedOn.Value - v.GeneratedOn).TotalMilliseconds));
                    averageWaitingTime    = TimeSpan.FromMilliseconds(processedVisitors.Average(v => ((v.ProcessedOn.Value - v.GeneratedOn) - v.ProcessingDuration).TotalMilliseconds));
                    averageProcessingTime = averageTotalTime - averageWaitingTime;
                }

                var statistics = new Statistics
                {
                    GeneratedVisitors     = visitors.Count(),
                    ProcessedVisitors     = processedVisitors.Count(),
                    RejectedVisitors      = visitors.Count(v => v.Status == Enums.Enum.VisitorStatus.Rejected),
                    AverageProcessingTime = averageProcessingTime,
                    AverageTotalTime      = averageTotalTime,
                    AverageWaitingTime    = averageWaitingTime
                };

                return(statistics);
            }
            catch (Exception ex)
            {
                Console.WriteLine($"Error getting statistics. Exception: {ex.Message}");
                return(null);
            }
        }