/// <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));
        }
Exemplo n.º 2
0
        /// <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));
        }
Exemplo n.º 3
0
 /// <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));
 }