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); }