/// <summary> /// Generates summary lines for the given report and orders by most /// miles driven /// </summary> private string GenerateReport(IDriveReport driveReport) { var reportLines = driveReport.AllDriverData .OrderByDescending(d => d.MilesDriven) .Select(d => GenerateReportLine(d)); return(string.Join('\n', reportLines)); }
/// <summary> /// Adds this trip to the given drive report if it is valid and returns /// the modifed report object /// </summary> public IDriveReport Process(IDriveReport driveReport) { const double minTripSpeed = 5.0; const double maxTripSpeed = 100.0; var timeDriven = EndTime - StartTime; var tripSpeed = MilesDriven / timeDriven.TotalHours; if (timeDriven <= TimeSpan.Zero || tripSpeed < minTripSpeed || tripSpeed > maxTripSpeed) { driveReport.AddInvalidTrip(DriverName, MilesDriven, StartTime, EndTime); return(driveReport); } var highwayMiles = tripSpeed >= 60.0 ? MilesDriven : 0.0; return(driveReport.AddTrip(DriverName, MilesDriven, highwayMiles, timeDriven)); }
/// <summary> /// Adds this driver to the given drive report and returns the modified /// report object /// </summary> public IDriveReport Process(IDriveReport driveReport) { return(driveReport.AddDriver(Name)); }