Example #1
0
        public static DriverStyleReview GetDriverStyleReview(
            this PerUnitDriverRidesReview perUnitDriverRidesReview,
            Company company, double rateScaleMaximum)
        {
            DriverRidesReview ridesReview = perUnitDriverRidesReview.DriverRidesReview;
            DriverStyleReview styleReview = new DriverStyleReview {
                DaysPeriod           = ridesReview.DaysPeriod,
                DriverUsername       = ridesReview.DriverUsername,
                AverageRideMilesRate = ridesReview.AverageRideMiles
                                       .Normalize(company.MaxAverageRideMiles, rateScaleMaximum),
                AverageSpeedRate = ridesReview.AverageSpeed
                                   .Normalize(company.MaxAverageSpeed, rateScaleMaximum),
                MileageRate = ridesReview.Mileage
                              .Normalize(company.MaxMileage, rateScaleMaximum),
                OverSpeedingAmountRate = ridesReview.OverSpeedingAmount
                                         .Normalize(company.MaxOverSpeedingAmount, rateScaleMaximum),
                PhoneUsageSecondsRate = ridesReview.PhoneUsageSeconds
                                        .Normalize(company.MaxPhoneUsageSeconds, rateScaleMaximum),
                SharpSlowDownsAmountRate = ridesReview.SharpSlowDownsAmount
                                           .Normalize(company.MaxSharpSlowDownsAmount, rateScaleMaximum),
                SharpSpeedUpsAmountRate = ridesReview.SharpSpeedUpsAmount
                                          .Normalize(company.MaxSharpSpeedUpsAmount, rateScaleMaximum),
                SharpSteeringsWheelAmountRate = ridesReview.SharpSteeringsWheelAmount
                                                .Normalize(company.MaxSharpSteeringsWheelAmount, rateScaleMaximum),
                SharpTurnEntriesAmountRate = ridesReview.SharpTurnEntriesAmount
                                             .Normalize(company.MaxSharpTurnEntriesAmount, rateScaleMaximum),
            };

            return(styleReview);
        }
Example #2
0
 public static PerUnitDriverRidesReview GetPerUnitDriverRidesReview(
     this DriverRidesReview driverRidesReview, double mileageUnit)
 {
     return(new PerUnitDriverRidesReview {
         MileageUnit = mileageUnit,
         DriverRidesReview = new DriverRidesReview {
             AverageRideMiles = driverRidesReview.AverageRideMiles,
             AverageSpeed = driverRidesReview.AverageSpeed,
             DaysPeriod = driverRidesReview.DaysPeriod,
             DriverUsername = driverRidesReview.DriverUsername,
             Mileage = driverRidesReview.Mileage,
             TotalRides = driverRidesReview.TotalRides,
             PhoneUsageSeconds = driverRidesReview.PhoneUsageSeconds /
                                 driverRidesReview.Mileage * mileageUnit,
             OverSpeedingAmount = Convert.ToInt32(Math.Floor(
                                                      driverRidesReview.OverSpeedingAmount /
                                                      driverRidesReview.Mileage * mileageUnit)),
             SharpSlowDownsAmount = Convert.ToInt32(Math.Floor(
                                                        driverRidesReview.SharpSlowDownsAmount /
                                                        driverRidesReview.Mileage * mileageUnit)),
             SharpSpeedUpsAmount = Convert.ToInt32(Math.Floor(
                                                       driverRidesReview.SharpSpeedUpsAmount /
                                                       driverRidesReview.Mileage * mileageUnit)),
             SharpSteeringsWheelAmount = Convert.ToInt32(Math.Floor(
                                                             driverRidesReview.SharpSteeringsWheelAmount /
                                                             driverRidesReview.Mileage * mileageUnit)),
             SharpTurnEntriesAmount = Convert.ToInt32(Math.Floor(
                                                          driverRidesReview.SharpTurnEntriesAmount /
                                                          driverRidesReview.Mileage * mileageUnit)),
         }
     });
 }
Example #3
0
        public async Task <DriverStyleReview> GetDriverStyleReview(DriverRidesReview driverRidesReview)
        {
            Driver driver = await driverRepository.GetByUsernameWithCompany(driverRidesReview.DriverUsername);

            DriverStyleReview driverStyleReview = driverRidesReview
                                                  .GetPerUnitDriverRidesReview(driver.Company.MileageUnit)
                                                  .GetDriverStyleReview(driver.Company, rateScaleMaximum);

            List <KeyValuePair <int, double> > ratesPriorities =
                GetRatesPriorities(driverStyleReview, driver.Company);


            driverStyleReview.TotalScore = convolutionService
                                           .CountConvolution(ratesPriorities.ToRatesWeightsList());

            return(driverStyleReview);
        }
Example #4
0
        public async Task <IActionResult> GetDriverStyleRateByUsername(string username, int?daysPeriod = null)
        {
            DriverRidesReview driverRidesReview = await driverService.GetReviewAsync(username, daysPeriod);

            return(Ok(await drivingStyleService.GetDriverStyleReview(driverRidesReview)));
        }