public Task Handle(DriverAddedEvent @event, CancellationToken cancellationToken)
        {
            _eventRepository.AddEvent(@event);
            var trips = _tripRepository.GetTripsByDriverName(@event.DriverName);

            if (!trips.Any())
            {
                _driverReportRepository.AddDriverReport(new DriverReport
                {
                    Name         = @event.DriverName,
                    TotalMiles   = 0,
                    AverageSpeed = 0
                });
            }
            return(Task.CompletedTask);
        }
        public Task Handle(TripAddedEvent @event, CancellationToken cancellationToken)
        {
            _eventRepository.AddEvent(@event);
            var trips = _tripRepository.GetTripsByDriverName(@event.DriverName);

            if (trips.Any())
            {
                var totalMiles       = trips.Sum(trip => trip.MilesDriven);
                var totalTimeInHours = trips.Sum(trip => (trip.StopTime - trip.StartTime).TotalHours);
                var averageSpeed     = totalMiles > 0 && totalTimeInHours > 0 ? totalMiles / totalTimeInHours : 0.0;
                var driverReport     = new DriverReport
                {
                    Name         = @event.DriverName,
                    TotalMiles   = (int)Math.Round(totalMiles),
                    AverageSpeed = (int)Math.Round(totalMiles / totalTimeInHours)
                };
                _driverReportRepository.AddDriverReport(driverReport);
            }
            return(Task.CompletedTask);
        }