// Change vehicle status
        internal void ChangeVehicleStatus(GarageLogic.Garage i_Garage)
        {
            // gets license number and checks if exist in garage, if not may exit to main menu
            m_CurrentLicnese = GetLicense(i_Garage);
            if (m_CurrentLicnese.Equals("-1"))
            {
                return;
            }

            Dictionary <string, GarageLogic.Garage.eCarStatus> statuses = new Dictionary <string, GarageLogic.Garage.eCarStatus>();

            int number = 1;

            Console.WriteLine("Please pick one of the Statuses below: ");

            // iterate through car statuses available and print them
            foreach (GarageLogic.Garage.eCarStatus status in Enum.GetValues(typeof(GarageLogic.Garage.eCarStatus)))
            {
                Console.WriteLine(number + ". " + status.ToString());
                statuses.Add(number.ToString(), status);
                number++;
            }

            number--;

            // sets and validate a car status to change to
            string statusPicked = Console.ReadLine();

            while (!ValidtysUI.CheckMainPickValidity(statusPicked, 1, number))
            {
                Console.WriteLine("Illegal input, Please pick a number between 1 to " + number);
                statusPicked = Console.ReadLine();
            }

            // changes car status
            i_Garage.ChangeCarStatus(m_CurrentLicnese, statuses[statusPicked]);

            // show success message and takes back to main menu
            SuccessFinishOperation();
        }
        // Adds a vehicle to the garage, if vehicle is already in the garage, sets status as maintenence
        internal void AddVehicle(GarageLogic.Garage i_Garage)
        {
            string vehicle = string.Empty;
            Dictionary <string, string> parametrs = new Dictionary <string, string>();
            string licenseNumber  = string.Empty;
            string typeOfWheels   = string.Empty;
            string modelType      = string.Empty;
            bool   validationFlag = false;
            string name           = string.Empty;
            string phoneNumber    = string.Empty;

            Console.Clear();
            // Gets license number, if already exists change status to maintenence
            Console.WriteLine("Enter License Number");
            licenseNumber = Console.ReadLine();
            try
            {
                i_Garage.IsNotInGarage(licenseNumber);
            }
            catch
            {
                i_Garage.ChangeCarStatus(licenseNumber, Garage.eCarStatus.Maintenence);
                Console.WriteLine("Vehicle already in garage, status changes to maintenence");
                Thread.Sleep(1200);
                return;
            }

            Console.Clear();

            // get customer inforamtion
            Console.WriteLine("Please write your name");
            name = Console.ReadLine();
            Console.WriteLine("Please write your phone number");
            phoneNumber = Console.ReadLine();

            Console.Clear();

            // get and validate vehicle type
            System.Console.WriteLine("Please enter your vehicle type, those are the vehicle we support:");
            int i = 0;

            foreach (VehicleCreation.eVehicleType typeOfCar in Enum.GetValues(typeof(VehicleCreation.eVehicleType)))
            {
                System.Console.WriteLine("* For " + typeOfCar.ToString() + " Press " + i);
                i++;
            }

            while (!validationFlag)
            {
                try
                {
                    vehicle        = System.Console.ReadLine();
                    validationFlag = Validation.TypeOfVehicle(vehicle);
                }
                catch (Exception e)
                {
                    validationFlag = false;
                    System.Console.WriteLine(e.Message);
                }
            }

            parametrs.Add("Licence Number", licenseNumber);
            parametrs.Add("Vehicle Type", vehicle.ToString());
            Enum.TryParse <VehicleCreation.eVehicleType>(vehicle, out VehicleCreation.eVehicleType vehicleType);

            // get Vehicle Model
            Console.WriteLine("Please enter vehicle model");
            modelType = Console.ReadLine();
            parametrs.Add("Model Type", modelType);

            Console.Clear();

            // get wheels information
            System.Console.WriteLine("please enter the type of your wheels");
            typeOfWheels = Console.ReadLine();
            parametrs.Add("Type Of Wheel", typeOfWheels);

            string maxAirPressure = string.Empty;

            System.Console.WriteLine("Please enter the max air of your wheels");
            bool isNumber = false;

            while (!isNumber)
            {
                maxAirPressure = Console.ReadLine();
                try
                {
                    ValidtysUI.CheckIfANumber(maxAirPressure);
                    isNumber = true;
                }
                catch (FormatException e)
                {
                    Console.WriteLine(e.Message);
                }
            }

            isNumber = false;
            parametrs.Add("Maximal Air Pressure", maxAirPressure);

            string currentAirPressure = string.Empty;

            System.Console.WriteLine("Please enter the current air of your wheels");
            bool isVaildAir = false;

            while (!isVaildAir)
            {
                currentAirPressure = Console.ReadLine();
                try
                {
                    ValidtysUI.CheckInputValidity(currentAirPressure, maxAirPressure);
                    isVaildAir = true;
                }
                catch (ArgumentException e)
                {
                    Console.WriteLine(e.Message);
                }
                catch (FormatException e)
                {
                    Console.WriteLine(e.Message);
                }
            }

            parametrs.Add("Current Wheel Pressure", currentAirPressure);

            Console.Clear();

            // get engine information
            string maximumEnergy = string.Empty;
            bool   isValid       = false;

            Console.WriteLine("Please enter the maximun energy of your vehicle");

            while (!isNumber)
            {
                maximumEnergy = Console.ReadLine();
                try
                {
                    ValidtysUI.CheckIfANumber(maximumEnergy);
                    isNumber = true;
                }
                catch (FormatException e)
                {
                    Console.WriteLine(e.Message);
                }
            }

            parametrs.Add("Max energy", maximumEnergy);

            string energyLeft = string.Empty;

            Console.WriteLine("Please enter the enregy left in the vehicle");

            while (!isValid)
            {
                energyLeft = Console.ReadLine();
                try
                {
                    ValidtysUI.CheckInputValidity(energyLeft, maximumEnergy);
                    isValid = true;
                }
                catch (ArgumentException e)
                {
                    Console.WriteLine(e.Message);
                }
                catch (FormatException e)
                {
                    Console.WriteLine(e.Message);
                }
            }

            parametrs.Add("Amount Of Energy Left", energyLeft);

            Console.WriteLine("Is the vehicle electric?");
            Console.WriteLine("1. yes");
            Console.WriteLine("2. no");

            string answer = Console.ReadLine();

            Engine.eEngineType type = Engine.eEngineType.Electric;
            bool isOneOrTwo         = false;

            while (!isOneOrTwo)
            {
                if (answer == "1")
                {
                    type       = Engine.eEngineType.Electric;
                    isOneOrTwo = true;
                }

                if (answer == "2")
                {
                    type = Engine.eEngineType.Fuel;
                    int numberOfChoice = 1;
                    Console.WriteLine("Please pick one of the Fuel types below: ");

                    // iterate through gas types available and prints them
                    foreach (GarageLogic.FuelEngine.eFuelType fuelType in Enum.GetValues(typeof(GarageLogic.FuelEngine.eFuelType)))
                    {
                        Console.WriteLine(numberOfChoice + ". " + fuelType.ToString());
                        numberOfChoice++;
                    }

                    bool   isFuelType     = false;
                    string chosenFuelType = string.Empty;
                    while (!isFuelType)
                    {
                        chosenFuelType = Console.ReadLine();
                        try
                        {
                            ValidtysUI.CheckFuelType(chosenFuelType);

                            Array enumValues  = Enum.GetValues(typeof(FuelEngine.eFuelType));
                            int   chosenAsInt = int.Parse(chosenFuelType) - 1;
                            parametrs.Add("Fuel Kind", enumValues.GetValue(chosenAsInt).ToString());
                            isFuelType = true;
                        }
                        catch (ArgumentException e)
                        {
                            Console.WriteLine(e.Message);
                        }
                        catch (FormatException e)
                        {
                            Console.WriteLine(e.Message);
                        }
                    }

                    isOneOrTwo = true;
                }

                if (answer != "1" && answer != "2")
                {
                    Console.WriteLine("please enter 1 or 2");
                    answer = Console.ReadLine();
                }
            }

            parametrs.Add("Engine Type", type.ToString());
            Console.Clear();

            ExpendVehicleParameter(vehicleType, parametrs);
            VehicleCreation BuildVehicle = new VehicleCreation(parametrs, vehicleType);
            Vehicle         newVehicle   = BuildVehicle.Vehicle;

            i_Garage.AddCustomer(name, phoneNumber, newVehicle);

            // show success message and takes back to main menu
            SuccessFinishOperation();
        }