// Adds specific vehicle type info private static void ExpendVehicleParameter(VehicleCreation.eVehicleType i_VehicleType, Dictionary <string, string> io_Parameters) { Dictionary <string, string> aditionalInfo = AdditionalInfo.AditionalInfo(i_VehicleType); Dictionary <string, string> extraInfo = new Dictionary <string, string>(); bool validationFlag = false; while (!validationFlag) { foreach (string info in aditionalInfo.Keys.ToList()) { System.Console.WriteLine(info + " "); aditionalInfo[info] = System.Console.ReadLine(); } try { extraInfo = VehicleCreation.AddSpecInfo(i_VehicleType, aditionalInfo); validationFlag = true; } catch (Exception e) { validationFlag = false; System.Console.WriteLine(e.Message); } } foreach (KeyValuePair <string, string> info in extraInfo) { io_Parameters.Add(info.Key, info.Value); } }
/// <summary> /// sets the car status in garage to Enums.eStatusInGarage.InRepair /// </summary> /// <param name="i_OwnerName"></param> /// <param name="i_OwnerPhone"></param> /// <param name="i_VehicleType"></param> /// <param name="i_EnergySourceType"></param> /// <param name="i_CurrentEnergyAmount"></param> /// <param name="i_VehicleModelName"></param> /// <param name="i_WheelsManufacturerName"></param> /// <param name="i_LicensePlate"></param> /// <param name="i_CurrentAirPressure"></param> /// <param name="i_SpecificVehicleParams"> /// used in case of extra params thats relevant to specific vehicle type (see /// example) /// </param> /// <example> /// GarageManager garageManager = new GarageManager(); /// string owner = "Yossi"; /// string phoneNumber = "050-1234567"; /// VehicleCreation.eVehicleType vehicleType =VehicleCreation.eVehicleType.Car; /// VehicleCreation.eEnergySourceType energySourceType = VehicleCreation.eEnergySourceType.Fuel; /// float currentEnergyAmount = 40.0f; /// string vehicleModelName = "KIA"; /// string wheelsManufacturerName = "Michelin"; /// string licensePlate = "12-345-67"; /// float currentAirPressure = 20.0f; /// object[] specificCarParams = new object[2]; /// specificCarParams[(int)VehicleCreation.eCarSpecificParams.CarColor] = Enums.eCarColor.Red; /// specificCarParams[(int)VehicleCreation.eCarSpecificParams.NumberOfDoors] = Enums.eNumberOfDoors.Four; /// garageManager.EnterVehicleToGarage(owner,phoneNumber, vehicleType, energySourceType, currentEnergyAmount, /// vehicleModelName, wheelsManufacturerName, licensePlate, currentAirPressure, specificCarParams); /// </example> public void EnterVehicleToGarage(string i_OwnerName, string i_OwnerPhone, VehicleCreation.eVehicleType i_VehicleType, VehicleCreation.eEnergySourceType i_EnergySourceType, float i_CurrentEnergyAmount, string i_VehicleModelName, string i_WheelsManufacturerName, string i_LicensePlate, float i_CurrentAirPressure, params object[] i_SpecificVehicleParams) { if (!r_VehiclesDictionaryByLicensePlate.ContainsKey(i_LicensePlate)) { //new vehicle VehicleInGarageInfo newVehicleInGarageInfo = new VehicleInGarageInfo(i_OwnerName, i_OwnerPhone, Enums.eStatusInGarage.InRepair); Vehicle newVehicle = VehicleCreation.CreateNewVehicle(i_VehicleType, i_EnergySourceType, i_CurrentEnergyAmount, i_VehicleModelName, i_WheelsManufacturerName, i_LicensePlate, i_CurrentAirPressure, i_SpecificVehicleParams); r_VehiclesDictionaryByLicensePlate.Add(i_LicensePlate, newVehicle); r_VehiclesInGarageInfo.Add(newVehicle, newVehicleInGarageInfo); } else { //existing vehicle r_VehiclesInGarageInfo[r_VehiclesDictionaryByLicensePlate[i_LicensePlate]].StatusInGarage = Enums.eStatusInGarage.InRepair; } }
private void enterNewVehicleToGarage() { try { string messageToUser, ownerName, phoneNumber, vehicleModelName, wheelsManufacturerName, licensePlate; float currentEnergyAmount, currentAirPressure; messageToUser = "******"; ownerName = getSimpleStringFromUser(messageToUser); messageToUser = "******"; phoneNumber = getOwnerPhoneNumber(messageToUser); messageToUser = "******"; VehicleCreation.eVehicleType vehicleType = getEnumValueFromUserByType <VehicleCreation.eVehicleType>(messageToUser); messageToUser = "******"; VehicleCreation.eEnergySourceType energySourceType = getEnumValueFromUserByType <VehicleCreation.eEnergySourceType>(messageToUser); messageToUser = string.Format("Enter {0} current energy amount:", energySourceType); currentEnergyAmount = getFloatUserInput(messageToUser); messageToUser = "******"; vehicleModelName = getSimpleStringFromUser(messageToUser); messageToUser = "******"; wheelsManufacturerName = getSimpleStringFromUser(messageToUser); messageToUser = "******"; licensePlate = getVehicleLicensePlate(messageToUser); messageToUser = "******"; currentAirPressure = getFloatUserInput(messageToUser); object[] specificVehicleParams = getSpecificVehicleParams(vehicleType); r_GarageManager.EnterVehicleToGarage(ownerName, phoneNumber, vehicleType, energySourceType, currentEnergyAmount, vehicleModelName, wheelsManufacturerName, licensePlate, currentAirPressure, specificVehicleParams); writeSuccessMessage(string.Format("New {0} entered with license plate: {1}!", vehicleType, licensePlate)); } catch (Exception i_Exception) { writeErrorMessage(i_Exception.Message); } }
// return a dict of the aditinal info of a vehicle public static Dictionary <string, string> AditionalInfo(VehicleCreation.eVehicleType i_VehicleType) { Dictionary <string, string> aditionalInfo = null; if (i_VehicleType == VehicleCreation.eVehicleType.Car) { aditionalInfo = Car.GeneralCarInfo(); } if (i_VehicleType == VehicleCreation.eVehicleType.Motorcycle) { aditionalInfo = Motorcycle.GeneralMotorcycleInfo(); } if (i_VehicleType == VehicleCreation.eVehicleType.Truck) { aditionalInfo = Truck.GeneralTruckInfo(); } return(aditionalInfo); }
private object[] getSpecificVehicleParams(VehicleCreation.eVehicleType i_VehicleType) { object[] specificVehicleParams = null; string messasgeToUser; switch (i_VehicleType) { case VehicleCreation.eVehicleType.Car: specificVehicleParams = new object[Enum.GetValues(typeof(VehicleCreation.eCarSpecificParams)).Length]; messasgeToUser = "******"; specificVehicleParams[(int)VehicleCreation.eCarSpecificParams.CarColor] = getEnumValueFromUserByType <Enums.eCarColor>(messasgeToUser); messasgeToUser = "******"; specificVehicleParams[(int)VehicleCreation.eCarSpecificParams.NumberOfDoors] = getEnumValueFromUserByType <Enums.eNumberOfDoors>(messasgeToUser); break; case VehicleCreation.eVehicleType.Motorcycle: specificVehicleParams = new object[Enum.GetValues(typeof(VehicleCreation.eMotorcycelSpecificParams)).Length]; messasgeToUser = "******"; specificVehicleParams[(int)VehicleCreation.eMotorcycelSpecificParams.LicenseType] = getEnumValueFromUserByType <Enums.eLicenseType>(messasgeToUser); messasgeToUser = "******"; specificVehicleParams[(int)VehicleCreation.eMotorcycelSpecificParams.EngineVolume] = getIntUserInput(messasgeToUser); break; case VehicleCreation.eVehicleType.Truck: break; } return(specificVehicleParams); }