// ----------------------------------------------------------------------------------------
        /// <!-- ImportErrorsInsert -->
        /// <summary>
        ///      Inserts all module import errors into the database
        /// </summary>
        /// <param name="statusErrorLog"></param>
        /// <param name="itemIdByLineNum"></param>
        /// <param name="connection"></param>
        /// <returns></returns>
        public static int ImportErrorsInsert(DataTable statusErrorLog, Dictionary <int, int> itemIdByLineNum
                                             , string moduleName, InfoAspect aspect)
        {
            int errorCount = 0;

            try
            {
                string query = ImportDalCommon.ImportErrorQuery(moduleName);
                for (int row = 0; row < statusErrorLog.Rows.Count; ++row)
                {
                    // ------------------------------------------------------------------
                    //  Process the row
                    // ------------------------------------------------------------------
                    string statusErrorCode = statusErrorLog.Rows[row]["Status_Error_Code"].ToString();
                    if (!Regex.IsMatch(statusErrorCode, "0[01]$"))
                    {
                        ImportDalCommon.ImportErrorInsert(query, statusErrorLog, row, statusErrorCode
                                                          , itemIdByLineNum, moduleName, aspect.Enter(moduleName, "ImportErrorInsert")); aspect--;
                        errorCount++;
                    }
                }
            }
            catch (Exception ex) { Pause(); aspect.Rethrow(ex); }

            return(errorCount);
        }
        // ----------------------------------------------------------------------------------------
        /// <!-- ImportErrorInsert -->
        /// <summary>
        ///      Inserts a module import error row
        /// </summary>
        /// <param name="query"></param>
        /// <param name="statusErrorLog"></param>
        /// <param name="row"></param>
        /// <param name="itemIdByLineNum"></param>
        /// <param name="connection"></param>
        /// <returns></returns>
        public static void ImportErrorInsert(string query, DataTable statusErrorLog, int row
                                             , string statusErrorCode, Dictionary <int, int> itemIdByLineNum, string moduleName, InfoAspect aspect)
        {
            SqlCommand errorInsert = new SqlCommand(query, aspect.SecondaryConnection);

            using (errorInsert)
            {
                // ------------------------------------------------------------------
                //  Insert the error into the error table
                // ------------------------------------------------------------------
                int lineNumber = int.Parse(statusErrorLog.Rows[row]["FileLineNumber"].ToString());
                int itemId     = itemIdByLineNum[lineNumber];
                ImportDalCommon.ImportErrorFill(errorInsert, itemId, statusErrorCode, statusErrorLog.Rows[row], moduleName);
                int errorId = (int)errorInsert.ExecuteScalar();
            }
        }
        // ----------------------------------------------------------------------------------------
        /// <!-- Import -->
        /// <summary>
        ///      Imports a DataTable of location elements into one of the location tables
        /// </summary>
        /// <param name="importData"></param>
        /// <param name="aspect"></param>
        /// <returns></returns>
        public DataTable Import(DataTable importData, string tableName, InfoAspect aspect)
        {
            // --------------------------------------------------------------------------
            //  Initialize variables
            // --------------------------------------------------------------------------
            DataTable importedData = ImportDalCommon.InitializeImportedDataTable(importData, tableName + "DbId", aspect.Enter()); aspect--; // the output table
            string    insertQuery  = InsertQuery(tableName, aspect.Enter()); aspect--;
            string    updateQuery  = UpdateQuery(tableName, aspect.Enter()); aspect--;


            for (int row = 0; row < importData.Rows.Count; ++row)
            {
                DataRow field = importData.Rows[row];
                try
                {
                    // ------------------------------------------------------------------
                    //  Insert or Update a valid location record in one of four location tables
                    // ------------------------------------------------------------------
                    bool     isValid = (bool)field["IsValid"];
                    SqlInt32 id      = SqlInt32.Null;
                    if (isValid)
                    {
                        bool isUpdate = (bool)field["IsUpdate"];
                        if (!isUpdate)
                        {
                            isUpdate = ElementExists(tableName, field, aspect.Enter()); aspect--;
                        }
                        if (isUpdate)
                        {
                            id = Update(tableName, field, importedData, aspect.Enter(tableName, "Update")); aspect--;
                        }
                        else
                        {
                            id = Insert(insertQuery, tableName, field, importedData, aspect.Enter(tableName, "Insert")); aspect--;
                        }
                    }
                }
                catch (Exception ex) { Pause(); aspect.Rethrow(ex); }
            }

            return(importedData);
        }