private static void fillFuelInVehicle() { float fuelToFill; Console.WriteLine("Please enter registration plate number: "); string plateNumber = Console.ReadLine(); if (s_Garage.GetVehicleEnergyType(plateNumber) is ElectricBattery) { Console.WriteLine(string.Format("An electric vehicle, please choose another vehicle")); } else { Energy.eEnergyType energyType = (Energy.eEnergyType)getUserChoiceFromEnumValues(typeof(FuelTank.eFuelType)); Console.WriteLine("Please enter how many liters of fuel to add: "); string fuelAmountAsString = Console.ReadLine(); if (!float.TryParse(fuelAmountAsString, out fuelToFill)) { throw new FormatException(); } s_Garage.FuelOrChargeVehicle(plateNumber, energyType, fuelToFill); Console.WriteLine("Fuel was added successfully"); } }
public void FuelOrChargeVehicle(string i_PlateNumber, Energy.eEnergyType i_EnergyType, float i_AmountToFill) { Energy.eEnergyType m_EnergyType = i_EnergyType; GarageVehicle vehicleToFillEnergy = getVehicleFromDictionary(i_PlateNumber); if (vehicleToFillEnergy == null) { throw new ArgumentException(string.Format("Vehicle with registration plate number {0} not found ", i_PlateNumber)); } else if (vehicleToFillEnergy.Vehicle.EnergyType is ElectricBattery) { (vehicleToFillEnergy.Vehicle.EnergyType as ElectricBattery).Charge(i_AmountToFill); } else if (vehicleToFillEnergy.Vehicle.EnergyType is FuelTank) { FuelTank.eFuelType m_fuelType = (FuelTank.eFuelType)Enum.Parse(typeof(FuelTank.eFuelType), m_EnergyType.ToString()); (vehicleToFillEnergy.Vehicle.EnergyType as FuelTank).FillTank(i_AmountToFill, m_fuelType); } else { throw new ArgumentException("Energy type is incompatible"); } }
public static Motorcycle CreateMotorCycle(string i_LicensePlate, string i_Model, Dictionary <eVehicleData, string> i_DataMemory, Dictionary <Vehicle.eWheelData, string> i_Wheel, Energy.eEnergyType i_EnergyType) { checkNumericStrings(i_DataMemory[eVehicleData.EngineCapacity]); Motorcycle.eLicenseType licenceType = Motorcycle.parseLicenseType(i_DataMemory[eVehicleData.LicenceType]); int engineCapacity = int.Parse(i_DataMemory[eVehicleData.EngineCapacity]); Energy energyType = null; if (i_EnergyType == Energy.eEnergyType.Regular) { checkNumericStrings(i_DataMemory[eVehicleData.AmountOfFuelLeft]); energyType = new RegularEnergy(RegularEnergy.eFuelType.Octan95, float.Parse(i_DataMemory[eVehicleData.AmountOfFuelLeft]), k_RegularMotorcycleFullTank); } else if (i_EnergyType == Energy.eEnergyType.Electric) { checkNumericStrings(i_DataMemory[eVehicleData.HoursLeftInBattery]); energyType = new ElectricEnergy(float.Parse(i_DataMemory[eVehicleData.HoursLeftInBattery]), k_ElectricMotorcycleMaxBatteryHourTime); } return(new Motorcycle(licenceType, engineCapacity, i_Model, i_LicensePlate, i_Wheel, energyType)); }
public static Truck CreateTruck(string i_LicensePlate, string i_Model, Dictionary <eVehicleData, string> i_DataMemory, Dictionary <Vehicle.eWheelData, string> i_Wheel, Energy.eEnergyType i_EnergyType) { checkNumericStrings(i_DataMemory[eVehicleData.CargoVolume], i_DataMemory[eVehicleData.AmountOfFuelLeft]); bool isHavingHazardousMeterials = Truck.parseHazardousMeterials(i_DataMemory[eVehicleData.HavingHazardousMeterials]); float cargoVolume = float.Parse(i_DataMemory[eVehicleData.CargoVolume]); Energy energyType = new RegularEnergy(RegularEnergy.eFuelType.Soler, float.Parse(i_DataMemory[eVehicleData.AmountOfFuelLeft]), k_RegularTruckFullTank); return(new Truck(isHavingHazardousMeterials, cargoVolume, i_Model, i_LicensePlate, i_Wheel, energyType)); }
public static Car CreateCar(string i_LicensePlate, string i_Model, Dictionary <eVehicleData, string> i_DataMemory, Dictionary <Vehicle.eWheelData, string> i_Wheel, Energy.eEnergyType i_EnergyType) { checkNumericStrings(i_DataMemory[eVehicleData.NumOfDoors]); Car.eColorType color = Car.parseColor(i_DataMemory[eVehicleData.Color]); int numOfDoors = Car.parseNumOfDoors(i_DataMemory[eVehicleData.NumOfDoors]); Energy energyType = null; if (i_EnergyType == Energy.eEnergyType.Regular) { checkNumericStrings(i_DataMemory[eVehicleData.AmountOfFuelLeft]); energyType = new RegularEnergy(RegularEnergy.eFuelType.Octan96, float.Parse(i_DataMemory[eVehicleData.AmountOfFuelLeft]), k_RegualrCarFullTank); } else if (i_EnergyType == Energy.eEnergyType.Electric) { checkNumericStrings(i_DataMemory[eVehicleData.HoursLeftInBattery]); energyType = new ElectricEnergy(float.Parse(i_DataMemory[eVehicleData.HoursLeftInBattery]), k_ElectricCarMaxBatteryHourTime); } return(new Car(color, numOfDoors, i_Model, i_LicensePlate, i_Wheel, energyType)); }