Example #1
0
        public void ReFuel(string i_PlateNumber, eFuelType i_FuelType, float i_FuelAmount)
        {
            if (r_VehiclesStorage.ContainsKey(i_PlateNumber) == true)
            {
                Vehicle currentVehicle = r_VehiclesStorage[i_PlateNumber].Vehicle;

                if (currentVehicle.Engine.Type == eEngineType.Fuel)
                {
                    FuelEngine currentEngine = currentVehicle.Engine as FuelEngine;
                    if (currentEngine.FuelType == i_FuelType)
                    {
                        if (currentEngine.CurrentEnergyCapacity + i_FuelAmount <= currentEngine.MaxEnergyCapacity)
                        {
                            currentEngine.ReFuel(i_FuelAmount);
                            currentVehicle.EnergyPresentage = (currentEngine.CurrentEnergyCapacity / currentEngine.MaxEnergyCapacity) * 100;
                        }
                        else
                        {
                            throw new ValueOutOfRangeException(0, currentEngine.MaxEnergyCapacity - currentEngine.CurrentEnergyCapacity, "Additional amount ");
                        }
                    }
                    else
                    {
                        throw new ArgumentException("Fuel type mismatch!");
                    }
                }
                else
                {
                    throw new ArgumentException("Engine Type mismatch!, Please Enter Fueled Car Plate Number");
                }
            }
            else
            {
                throw new ArgumentException("Vehicle does not exist in the garage!");
            }
        }