public RideCategory GetMostBrokenCategory(List <Ride> ridesList = null) { CategoryRepository categoryRepository = new CategoryRepository(); RideRepository rideRepository = new RideRepository(); ReportRepository reportRepository = new ReportRepository(); List <RideCategory> categories = categoryRepository.GetRideCategories(); RideCategory categoryToReturn = null; int breakdowns = 0; List <Ride> rides = ridesList; foreach (RideCategory category in categories) { if (categoryToReturn is null) { categoryToReturn = category; if (rides is null) { breakdowns = reportRepository.TotalBreakdowns(rideRepository.GetMostBrokenRide(category.Id).Id); } else { breakdowns = reportRepository.TotalBreakdowns(rideRepository.GetMostBrokenRide(category.Id, rides).Id, rides); } } else { int categoryBreakdowns = 0; if (rides is null) { Ride mostBrokenRide = rideRepository.GetMostBrokenRide(category.Id); if (mostBrokenRide != null) { categoryBreakdowns = reportRepository.TotalBreakdowns(mostBrokenRide.Id); } } else { Ride mostBrokenRide = rideRepository.GetMostBrokenRide(category.Id, rides); if (mostBrokenRide != null) { categoryBreakdowns = reportRepository.TotalBreakdowns(mostBrokenRide.Id, rides); } } if (categoryBreakdowns > breakdowns) { categoryToReturn = category; breakdowns = categoryBreakdowns; } } } return(categoryToReturn); }
public Ride GetMostBrokenRide(int?categoryId = null, List <Ride> ridesList = null) { RideRepository rideRepository = new RideRepository(); ReportRepository reportRepository = new ReportRepository(); List <Ride> rides = ridesList; if (rides is null) { rides = rideRepository.GetRides(); } Ride rideToReturn = null; int breakdowns = 0; foreach (Ride ride in rides) { if (rideToReturn is null) { if (categoryId is null) { rideToReturn = ride; breakdowns = reportRepository.TotalBreakdowns(ride.Id, rides); } else if (ride.Category.Id == categoryId) { rideToReturn = ride; breakdowns = reportRepository.TotalBreakdowns(ride.Id, rides); } } else { int rideBreakdowns = reportRepository.TotalBreakdowns(ride.Id, rides); if (rideBreakdowns > breakdowns) { if (categoryId is null) { rideToReturn = ride; breakdowns = rideBreakdowns; } else if (ride.Id == categoryId) { rideToReturn = ride; breakdowns = rideBreakdowns; } } } } return(rideToReturn); }