//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
        #endregion

        #region Public Query method
        //===================================================================================
        /// <summary>
        /// This method executes a query
        /// </summary>
        /// <param name="QueryData"> Evado.Integration.Model.EiData wiht query parameters.</param>
        /// <returns> Evado.Integration.Model.EiData object</returns>
        //-----------------------------------------------------------------------------------
        public Evado.Integration.Model.EiData ProcessQuery(
            Evado.Integration.Model.EiData QueryData)
        {
            this.LogMethod("ProcessQuery method.");
            this.LogDebug("Settings.LoggingLevel: " + this.ClassParameters.LoggingLevel);
            this.LogDebug("QueryType: " + QueryData.QueryType);
            this.writeProcessLog("Integration Service - Commence processing query data.");
            //
            // Initialise the methods variables and objects.
            //
            Evado.Integration.Model.EiData        resultData      = new  Evado.Integration.Model.EiData( );
            Evado.Digital.Model.EdQueryParameters queryParameters =
                new Evado.Digital.Model.EdQueryParameters( );

            //
            // Validate that the query data has parameters.
            //
            if (QueryData.ParameterList == null)
            {
                this.writeProcessLog("Integration Service - Project identifier not provided.");
                this.LogDebug("Parameter list is null.");

                resultData.EventCode    = Evado.Integration.Model.EiEventCodes.Integration_Import_Parameter_Error;
                resultData.ErrorMessage = "Integration Service - Parameter list is empty.";
                return(resultData);
            }
            if (QueryData.ParameterList.Count == 0)
            {
                this.writeProcessLog("Integration Service - Parameter list is empty.");
                this.LogDebug("Parameter list is empty.");

                resultData.EventCode    = Evado.Integration.Model.EiEventCodes.Integration_Import_Parameter_Error;
                resultData.ErrorMessage = "Integration Service - Parameter list is empty.";
                return(resultData);
            }

            string projectid = QueryData.GetQueryParameterValue(Evado.Integration.Model.EiQueryParameterNames.Project_Id);


            //
            // select the query QueryType
            //
            switch (QueryData.QueryType)
            {
            default:
            {
                resultData.EventCode    = EiEventCodes.Integration_Import_Type_Id_Error;
                resultData.ErrorMessage = Evado.Model.EvStatics.enumValueToString(EiEventCodes.Integration_Import_Type_Id_Error);
                break;
            }
            }

            this.LogMethodEnd("ProcessQuery");
            return(resultData);
        }//END Query method.
        }//END ImportCsvData method.

        //===================================================================================
        /// <summary>
        /// This method executes a CSV import or export query.
        /// </summary>
        /// <param name="UserProfile">Evado.Digital.Model.EdUserProfile object.</param>
        /// <param name="QueryType">EiQueryTypes: Csv encoded data object.</param>
        /// <param name="CsvDataList">List of String: Csv encoded data object.</param>
        /// <returns> Evado.Integration.Model.EiData object</returns>
        //-----------------------------------------------------------------------------------
        public Evado.Integration.Model.EiData ImportData(
            Evado.Digital.Model.EdUserProfile UserProfile,
            EiQueryTypes QueryType,
            List <String> CsvDataList)
        {
            this.LogMethod("ImportData method.");
            this.LogDebug("UserProfile: " + UserProfile.CommonName);
            this.LogDebug("QueryType: " + QueryType);
            this.writeProcessLog("CSV Import Service - Commence processing query data.");
            //
            // Initialise the methods variables and objects.
            //
            Evado.Integration.Model.EiData        resultData      = new  Evado.Integration.Model.EiData( );
            Evado.Digital.Model.EdQueryParameters queryParameters =
                new Evado.Digital.Model.EdQueryParameters( );

            //
            // Get extract the data from the CSV file.
            //
            EiData ImportData = this.getDataObjectFromCsv(
                CsvDataList,
                QueryType);

            /*
             * if ( this.Settings.LoggingLevel > 4 )
             * {
             * foreach ( EiColumnParameters parm in ImportData.Columns )
             * {
             *  string content = String.Format ( "Parm: Field: {0}, Type: {1}, Index: {2}", parm.EvadoFieldId, parm.DataType, parm.Index );
             *  this.LogValue ( content );
             * }
             * }
             */

            //
            // Execute the query.
            //
            resultData = EI_Services.ProcessQuery(ImportData);

            this.LogClass(EI_Services.Log);

            this._ProcessLog.AppendLine(resultData.ProcessLog);

            this.LogMethodEnd("ImportData");
            return(resultData);
        }//END ImportCsvData method.
        //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
        #endregion

        #region Public Query method

        //===================================================================================
        /// <summary>
        /// This method executes a CSV import or export query.
        /// </summary>
        /// <param name="QueryData"> Evado.Integration.Model.EiData.</param>
        /// <returns>List of String</returns>
        //-----------------------------------------------------------------------------------
        public List <String> ExportData(
            Evado.Integration.Model.EiData QueryData)
        {
            this.LogMethod("ExportData method.");
            this.LogDebug("QueryType: " + QueryData.QueryType);
            this.writeProcessLog("CSV Export Service - Commence processing query data.");
            //
            // Initialise the methods variables and objects.
            //
            Evado.Integration.Model.EiData        resultData      = new  Evado.Integration.Model.EiData( );
            Evado.Digital.Model.EdQueryParameters queryParameters =
                new Evado.Digital.Model.EdQueryParameters( );
            List <String> CsvOutput = new List <string> ( );

            //
            // Query the Ei service
            //
            resultData = EI_Services.ProcessQuery(QueryData);

            this.LogClass(EI_Services.Log);

            this._ProcessLog.AppendLine(resultData.ProcessLog);

            if (resultData.DataRows == null)
            {
                this.LogDebug("No data was generated by the query.");
                this.writeProcessLog("No data was generated by the query.");
                return(new List <string> ( ));
            }
            //
            // Convert the result data object into a CSV file.
            //
            var result = this.getCsvFromDataObject(resultData);

            this.LogMethodEnd("ExportData");

            return(result);
        }//END ImportCsvData method.