private double GetTravelDurationOnOrbit(IWeather weather, VehicleTypeEnum vehicleTypeEnum) { double CraterCountForInputWeather = weather.GetModifiedCratersCountBasedOnWeather(NoOfCraters); double timeToCrossCrater; double timeToCrossOrbit; switch (vehicleTypeEnum) { case VehicleTypeEnum.BIKE: Bike objbike = ObjectFactory.GetBikeInstance; timeToCrossCrater = (objbike.TimeToCrossCrater * CraterCountForInputWeather); timeToCrossOrbit = ((_distance / (_speed > objbike.Speed ? objbike.Speed : _speed)) * 60); break; case VehicleTypeEnum.CAR: Car objcar = ObjectFactory.GetCarInstance; timeToCrossCrater = (objcar.TimeToCrossCrater * CraterCountForInputWeather); timeToCrossOrbit = ((_distance / (_speed > objcar.Speed ? objcar.Speed : _speed)) * 60); break; case VehicleTypeEnum.TUKTUK: Tuktuk objtuktuk = ObjectFactory.GetTuktukInstance; timeToCrossCrater = (objtuktuk.TimeToCrossCrater * CraterCountForInputWeather); timeToCrossOrbit = ((_distance / (_speed > objtuktuk.Speed ? objtuktuk.Speed : _speed)) * 60); break; default: throw new InvalidOperationException("Invalid Vehicle Type"); } return(timeToCrossCrater + timeToCrossOrbit); }