/// <summary>
 /// Get all UserSettings
 /// </summary>
 /// <returns>A UserSettingsTD</returns>
 public static DataSet GetUserSettings()
 {
     using (new TransactionScope(TransactionScopeOption.Suppress))
     {
         var ds = new UserSettingsTD();
         var ta = new UserSettingsTDTableAdapters.UserSettingsTableAdapter();
         ta.Fill(ds.UserSettings);
         return(ds);
     }
 }
        /// <summary>
        /// Returns true or false if a UserSettings exists
        /// </summary>
        /// <param name="userName">The UserName to check existance</param>
        /// <returns>true if UserSettings exists, false if not</returns>
        public static bool IsExistingUserSettings(string userName)
        {
            if (string.IsNullOrEmpty(userName))
            {
                throw new Exception("The UserName is null or empty.");
            }

            using (new TransactionScope(TransactionScopeOption.Suppress))
            {
                var ta = new UserSettingsTDTableAdapters.UserSettingsTableAdapter();
                return(ta.IsExistingUserSettings(userName) == 0 ? false : true);
            }
        }
        /// <summary>
        /// Get UserSetting row by UserName
        /// </summary>
        /// <returns>A UserSettingsDataTable with one row if UserName exists</returns>
        public static DataTable GetUserSetting(string userName)
        {
            if (string.IsNullOrEmpty(userName))
            {
                throw new Exception("The UserName is null or empty.");
            }

            using (new TransactionScope(TransactionScopeOption.Suppress))
            {
                var ta = new UserSettingsTDTableAdapters.UserSettingsTableAdapter();
                return(ta.GetDataByUserName(userName));
            }
        }
        /// <summary>
        /// Service callable code to Delete/Insert/Update UserSettings
        /// </summary>
        /// <returns>A UserSettingsTD. If ALL updated OK contains updated data, if not contains the RowErrors</returns>
        public static DataSet UpdateUserSettings(DataSet userSettingsDataSet)
        {
            if (userSettingsDataSet == null || userSettingsDataSet.Tables["UserSettings"] == null)
            {
                throw new Exception("The DataSet and/or DataTable is null.");
            }

            var dtUserSettings = new UserSettingsDataTable();

            dtUserSettings.BeginLoadData();
            dtUserSettings.Merge(userSettingsDataSet.Tables["UserSettings"], false, MissingSchemaAction.Error);

            using (var ts = new TransactionScope(TransactionScopeOption.Required))
            {
                var taUserSettings = new UserSettingsTDTableAdapters.UserSettingsTableAdapter();

                #region do deletes
                foreach (UserSettingsRow deletedRow in dtUserSettings.Select("", "", DataViewRowState.Deleted))
                {
                    // get the primary key value(s) from the Original version (for child deletes)
                    var userName = (string)deletedRow["UserName", DataRowVersion.Original];

                    // do child deletes (if any exist)
                    //SettingsChildrenDataSet.UpdateSettingsChildren

                    // delete the row
                    taUserSettings.Delete(userName);
                }
                #endregion

                #region do inserts
                foreach (UserSettingsRow insertedRow in dtUserSettings.Select("", "", DataViewRowState.Added))
                {
                    //insertedRow["SubmitDt"] = DBNull.Value;  // for testing SetDefaultValues
                    insertedRow.SetDefaultValues();

                    if (insertedRow.IsValidRow())
                    {
                        taUserSettings.Update(insertedRow);
                    }
                    else
                    {
                        throw new Exception("A row to be inserted contains invalid data. Entire transaction cancelled.");
                    }
                }
                #endregion

                #region do updates
                foreach (UserSettingsRow modifiedRow in dtUserSettings.Select("", "", DataViewRowState.ModifiedCurrent))
                {
                    // get the primary key value(s) from the Original version
                    var userName = (string)modifiedRow["UserName", DataRowVersion.Original];

                    // do not allow key changes
                    var userNameCurr = (string)modifiedRow["UserName", DataRowVersion.Current];
                    if (userName != userNameCurr)
                    {
                        throw new Exception("Change of primary key(s) is not permitted. Entire transaction cancelled.");
                    }

                    if (modifiedRow.IsValidRow())
                    {
                        taUserSettings.Update(modifiedRow);
                    }
                    else
                    {
                        throw new Exception("A row to be modified contains invalid data. Entire transaction cancelled.");
                    }
                }
                #endregion

                ts.Complete();
            }
            dtUserSettings.AcceptChanges();
            userSettingsDataSet.Tables["UserSettings"].Merge(dtUserSettings, false, MissingSchemaAction.Ignore);

            return(userSettingsDataSet);
        }