//FUNCTION        :readFile
        //DESCRIPTION     :read content of the database.txt and generate instance according to the content. and save the instance to the arraylist.
        //
        //PARAMETERS      :
        //                ref ArrayList motorcycleArry: The reference of the arrarylist save the motorcycle instances.
        //                ref ArrayList autoMobileArray: The reference of the arrarylist save the automobile instances.
        //                ref ArrayList truckArray:       The reference of the arrarylist save the truck instances.
        //RETURNS         :void
        private static void readFile(ref ArrayList motorcycleArry, ref ArrayList autoMobileArray, ref ArrayList truckArray)
        {
            // int motor_id = 0;
            int auto_id = 0;
            int truck_id = 0;
            int motor_id = 0;

            if (!File.Exists("Database.txt"))
            {
                File.Create("Database.txt").Close();
                return;
            }

            System.IO.StreamReader file = new System.IO.StreamReader("Database.txt");

            string line;

            char[] delimiterChars = { '|' };

            while ((line = file.ReadLine()) != null)
            {

                string[] words = line.Split(delimiterChars);

                if (words[0] == "automobile")
                {
                    //new instance according to the information from the database.txt file.
                    Automobile temp = new Automobile(words[1], words[2], Convert.ToInt32(words[3]), Convert.ToInt32(words[4]), words[5], Convert.ToInt32(words[6]), Convert.ToInt32(words[7]), Convert.ToInt32(words[8]), words[9]);
                    auto_id++;
                    //generate the vehicle id.
                    string strId = "AM" + auto_id;
                    temp.Vehicle_Id = strId;
                    //add a instance to the arraylist.
                    autoMobileArray.Add(temp);

                }
                else if (words[0] == "truck")
                {
                    Truck temp = new Truck(words[1], words[2], Convert.ToInt32(words[3]), Convert.ToInt32(words[4]), words[5], Convert.ToInt32(words[6]), Convert.ToInt32(words[7]), (float)Convert.ToDecimal(words[8]), (float)Convert.ToDecimal(words[9]));
                    truck_id++;
                    string strId2 = "ST" + truck_id;
                    temp.Vehicle_Id = strId2;
                    truckArray.Add(temp);
                }
                else if (words[0] == "motorcycle")
                {
                    Motorcycle temp = new Motorcycle(words[1], words[2], Convert.ToInt32(words[3]), Convert.ToInt32(words[4]), words[5], Convert.ToInt32(words[6]), Convert.ToInt32(words[7]), words[8]);
                    motor_id++;
                    string strId3 = "MC" + motor_id;
                    temp.Vehicle_Id = strId3;
                    motorcycleArry.Add(temp);
                }

            }
            //close file
            file.Close();
        }
        // FUNCTION NAME : validate_vehicle_data(string vehicle_type)
        //
        // PARAMETER     : string vehicle_type: contains the type of the vehicle as a string.
        //
        // RETURN        : void
        //
        // DESCRIPTION   : It gets the input from the user and validates before adding to the list.
        private void validate_vehicle_data(string vehicle_type)
        {
            //local variables.
               string manufacturer="";
               string model="";
               string model_year="";
               string initial_purchase_price="";
               string purchase_date="";
               string current_odometer="";
               string size_of_engine="";
               string type_of_motorcycle="";
               string number_of_doors="";
               string type_of_fuel="";
               string cargo_capacity="";
               string towing_capacity="";
               string vehicle_id = "";

               int m_year = 0, i_purchase_price=0, odometer=0, s_engine=0, n_doors=0, c_capacity=0, t_capacity = 0;

               //if validation fails , then it will be used to ask again.
               bool ask_again = true;

               //get the manufacturer from the user.
               while (ask_again)
               {
               System.Console.Write("Enter the manufacturer\t\t   : ");
               manufacturer = System.Console.ReadLine();

               //validate the data in other function which returns the bool value to ask again or not from the user.
               ask_again = validate_string(manufacturer);
               }

               //get the vehicle model from the user.
               ask_again = true;
               while (ask_again)
               {
               System.Console.Write("Enter the vehicle model\t\t   : ");
               model = System.Console.ReadLine();

               //validate the data in other function which returns the bool value to ask again or not from the user.
               ask_again= validate_as_num_aplha(model);
               }

               //get the vehicle model year from the user.
               ask_again = true;
               while (ask_again)
               {
               System.Console.Write("Enter the vehicle model year\t   : ");
               model_year = System.Console.ReadLine();

               //validate the data as int in other function which returns the bool value to ask again or not from the user.
               ask_again = validate_as_int(model_year, ref m_year);

               }

               //get the initial purchase price of motorcycle from the user.
               if (vehicle_type == "motorcycle")
               {
               ask_again = true;
               while (ask_again)
               {
                   System.Console.Write("Enter the initial purchase price \n\t (minimum value is $1500 ) : ");
                   initial_purchase_price = System.Console.ReadLine();

                   //validate the data as int in other function which returns the bool value to ask again or not from the user.
                   ask_again = validate_as_int(initial_purchase_price, ref i_purchase_price);

                   //compare it with minimum value.
                   if (i_purchase_price < 1500)
                   {
                       Console.WriteLine("\t\t\t( ERROR - Enter a value greater than $1500... )\n");
                       ask_again = true;
                   }
               }
               }

               //get the initial purchase price of automobile from the user.
               if (vehicle_type == "automobile")
               {
               ask_again = true;
               while (ask_again)
               {
                   System.Console.Write("Enter the initial purchase price \n\t (minimum value is $500 )  : ");
                   initial_purchase_price = System.Console.ReadLine();

                   //validate the data as int in other function which returns the bool value to ask again or not from the user.
                   ask_again = validate_as_int(initial_purchase_price, ref i_purchase_price);

                   //compare it with minimum value.
                   if(i_purchase_price < 500)
                   {
                       Console.WriteLine("\t\t\t( ERROR - Enter a value greater than $500... )\n");
                       ask_again = true;
                   }
               }
               }

               //get the initial purchase price of truck from the user.
               if (vehicle_type == "truck")
               {
               ask_again = true;
               while (ask_again)
               {
                   System.Console.Write("Enter the initial purchase price\n\t(minimum value is $0 )\t   : ");
                   initial_purchase_price = System.Console.ReadLine();

                   //validate the data as int in other function which returns the bool value to ask again or not from the user.
                   ask_again = validate_as_int(initial_purchase_price, ref i_purchase_price);

                   //compare it with minimum value.
                   if (i_purchase_price < 0)
                   {
                       Console.WriteLine("\t\t\t( ERROR - Enter a value greater than $0... )\n");
                       ask_again = true;
                   }
               }
               }

               //get the initial purchase date of vehicle from the user.
               ask_again = true;
               while (ask_again)
               {
               System.Console.Write("Enter the purchase date\t\t   : ");
               purchase_date = System.Console.ReadLine();

               //validate the data as datetime type in other function which returns the bool value to ask again or not from the user.
               ask_again = validate_as_date_time(purchase_date);
               }

               //get the odometer reading of vehicle from the user.
               ask_again = true;
               while (ask_again)
               {
               System.Console.Write("Enter the current odometer reading : ");
               current_odometer = System.Console.ReadLine();

               //validate the data as int in other function which returns the bool value to ask again or not from the user.
               ask_again = validate_as_int(current_odometer, ref odometer);
               }

               //get the size of engine of vehicle from the user.
               ask_again = true;
               while (ask_again)
               {
               System.Console.Write("Enter the size of engine\t   : ");
               size_of_engine = System.Console.ReadLine();

               //validate the data as int in other function which returns the bool value to ask again or not from the user.
               ask_again = validate_as_int(size_of_engine,ref s_engine);
               }

               //get the type of motorcycle from the user.
               if (vehicle_type == "motorcycle")
               {
               ask_again = true;
               while (ask_again)
               {
                   System.Console.Write("Enter the type of motorcycle \t   : ");
                   type_of_motorcycle = System.Console.ReadLine();

                   //validate the data as string in other function which returns the bool value to ask again or not from the user.
                   ask_again = validate_string(type_of_motorcycle);
               }

               //concatenate the motorcycle id to the vehicle id.
               vehicle_id = "MC" + motorcycle_id;

               //create an instance of motorcycle and call the constructor to store the data in the properties.
               Motorcycle obj = new Motorcycle(manufacturer,model,m_year,i_purchase_price,purchase_date,odometer,s_engine,type_of_motorcycle);

               //calls the accessor method of vehicle id property to set it a value.
               obj.Vehicle_Id = vehicle_id;

               //add the motorcycle object in list.
               list_motorcycle.Add(obj);

               }

               if(vehicle_type=="automobile")
               {
               //get the number of doors from the user.
               ask_again = true;
               while (ask_again)
               {

                   System.Console.Write("Enter the number of doors(2,3, or 5): ");
                   number_of_doors = System.Console.ReadLine();

                   //validate the data as int in other function which returns the bool value to ask again or not from the user.
                   ask_again = validate_as_int(number_of_doors, ref n_doors);

                   //number of doors has to be between 2-5.
                   if(n_doors >=2 && n_doors<=5)
                   {
                       ask_again = false;
                   }
                   else
                   {
                       Console.WriteLine("\n\t\t\t( ERROR - Number of doors can be 2,3,4 or 5...)");
                       ask_again = true;
                   }
               }

               //get the type of fuel from the user.
               ask_again = true;
               while (ask_again)
               {
                   System.Console.Write("Enter the type of fuel\t\t   : ");
                   type_of_fuel = System.Console.ReadLine();
                   ask_again = validate_string(type_of_fuel);

                   if( (string.Compare(type_of_fuel, "Electric", true) == 0) || (string.Compare(type_of_fuel, "Diesel", true)==0) || (string.Compare(type_of_fuel, "Gas", true) == 0))
                   {
                       ask_again = false;
                   }
                   else
                   {
                       Console.WriteLine("\n\t\t\t(ERROR - Fuel type can be Electric,Diesel or Gas... )\n");
                       ask_again = true;
                   }
               }

               //concatenate the motorcycle id to the vehicle id.
               vehicle_id = "AM" + automobile_id;

               //create an instance of automobile and call the constructor to store the data in the properties.
               Automobile obj1 = new Automobile(manufacturer,model,m_year,i_purchase_price,purchase_date,odometer,s_engine,n_doors,type_of_fuel);

               //calls the accessor method of vehicle id property to set it a value.
               obj1.Vehicle_Id = vehicle_id ;

               //add the automobile object in list.
               list_automobile.Add(obj1);

               }

               if(vehicle_type=="truck")
               {
               //get the cargo capacity from the user.
               ask_again = true;
               while (ask_again)
               {
                   System.Console.Write("Enter the cargo capacity\t   : ");
                   cargo_capacity = System.Console.ReadLine();

                   //validate the data as int in other function which returns the bool value to ask again or not from the user.
                   ask_again = validate_as_int(cargo_capacity, ref c_capacity);
               }

               //get the towing capacity from the user.
               ask_again = true;
               while (ask_again)
               {
                   System.Console.Write("Enter the towing capacity\t   : ");
                   towing_capacity = System.Console.ReadLine();
                   ask_again = validate_as_int(towing_capacity, ref t_capacity);
               }

               //concatenate the truck id to the vehicle id.
               vehicle_id = "ST" + truck_id;

               //create an instance of truck and call the constructor to store the data in the properties.
               Truck obj2 = new Truck(manufacturer, model, m_year, i_purchase_price,purchase_date, odometer, s_engine,c_capacity,t_capacity);

               //calls the accessor method of vehicle id property to set it a value.
               obj2.Vehicle_Id = vehicle_id;

               //add the automobile object in list.
               list_truck.Add(obj2);
               }
        }