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); }
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)), } }); }
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); }
public async Task <IActionResult> GetDriverStyleRateByUsername(string username, int?daysPeriod = null) { DriverRidesReview driverRidesReview = await driverService.GetReviewAsync(username, daysPeriod); return(Ok(await drivingStyleService.GetDriverStyleReview(driverRidesReview))); }