protected void create_tables_Click(object sender, System.EventArgs e)
    {
        bool errorFlag = false;

        Save();

        Session["TrySqlPassword"] = txtSqlPassword.Text;
        txtSqlPassword.Attributes.Add("Value", txtSqlPassword.Text);

        WebmailSettings settings = new WebMailSettingsCreator().CreateWebMailSettings(AdminPanelUtils.GetWebMailDataFolder());

        string prefix = settings.DbPrefix;

        string[] dbTablesName = new string[] { };

        string[] tablesNames = new string[]
        {
            /* WebMail Tables */
            Constants.TablesNames.a_users,
            Constants.TablesNames.awm_accounts,
            Constants.TablesNames.awm_addr_book,
            Constants.TablesNames.awm_addr_groups,
            Constants.TablesNames.awm_addr_groups_contacts,
            Constants.TablesNames.awm_columns,
            Constants.TablesNames.awm_filters,
            Constants.TablesNames.awm_folders,
            Constants.TablesNames.awm_folders_tree,
            Constants.TablesNames.awm_messages,
            Constants.TablesNames.awm_messages_body,
            Constants.TablesNames.awm_reads,
            Constants.TablesNames.awm_senders,
            Constants.TablesNames.awm_settings,
            Constants.TablesNames.awm_domains,
            Constants.TablesNames.awm_temp
        };
        bool isTableExist = false;

        Utils.SettingsPath = AdminPanelUtils.GetWebMailFolder();

        DbStorage storage = DbStorageCreator.CreateDatabaseStorage(null, AdminPanelUtils.GetWebMailDataFolder());

        try
        {
            storage.Connect();
            dbTablesName = storage.GetTablesNames();
        }
        catch (WebMailDatabaseException error)
        {
            Log.WriteException(error);
            AdminPanelUtils.SetPageErrorMessage(this.Page, Constants.mailAdmTablesNotCreated);
            errorFlag = true;
        }
        finally
        {
            storage.Disconnect();
        }
        for (int i = 0; i < dbTablesName.Length; i++)
        {
            string dbTable = dbTablesName[i];
            foreach (string name in tablesNames)
            {
                if (string.Compare(dbTable, string.Format("{0}{1}", prefix, name), true, CultureInfo.InvariantCulture) == 0)
                {
                    isTableExist = true;
                    break;
                }
            }
            if (isTableExist)
            {
                break;
            }
        }
        if (isTableExist)
        {
            AdminPanelUtils.SetPageErrorMessage(this.Page, Constants.mailAdmTablesExists);
            errorFlag = true;
        }
        else
        {
            try
            {
                storage.Connect();
                foreach (string name in tablesNames)
                {
                    try
                    {
                        storage.CreateTable(name, prefix);
                    }
                    catch (WebMailDatabaseException error)
                    {
                        Log.WriteException(error);
                        AdminPanelUtils.SetPageErrorMessage(this.Page, Constants.mailAdmTablesNotCreated);
                        errorFlag = true;
                    }
                }
            }
            catch (WebMailDatabaseException error)
            {
                Log.WriteException(error);
                AdminPanelUtils.SetPageErrorMessage(this.Page, Constants.mailAdmTablesNotCreated);
                errorFlag = true;
            }
            finally
            {
                storage.Disconnect();
            }
            if (!errorFlag)
            {
                AdminPanelUtils.SetPageReportMessage(this.Page, Constants.mailAdmTablesCreated);
            }
        }
        InitControl();
    }
Example #2
0
    protected bool create_tables()
    {
        bool            errorFlag = false;
        WebmailSettings settings  = new WebmailSettings().CreateInstance(AdminPanelUtils.GetWebMailDataFolder());

        if (settings.DbType == SupportedDatabase.MsAccess)
        {
            return(false);
        }

        string prefix = settings.DbPrefix;

        string[] dbTablesName = new string[] { };

        string[] tablesNames = new string[]
        {
            /* WebMail Tables */
            Constants.TablesNames.a_users,
            Constants.TablesNames.awm_accounts,
            Constants.TablesNames.awm_addr_book,
            Constants.TablesNames.awm_addr_groups,
            Constants.TablesNames.awm_addr_groups_contacts,
            Constants.TablesNames.awm_columns,
            Constants.TablesNames.awm_filters,
            Constants.TablesNames.awm_folders,
            Constants.TablesNames.awm_folders_tree,
            Constants.TablesNames.awm_messages,
            Constants.TablesNames.awm_messages_body,
            Constants.TablesNames.awm_reads,
            Constants.TablesNames.awm_senders,
            Constants.TablesNames.awm_settings,
            Constants.TablesNames.awm_domains,
            Constants.TablesNames.awm_temp,
            Constants.TablesNames.awm_subadmin_domains,
            Constants.TablesNames.awm_subadmins,
            /* Calendar Tables */
            Constants.TablesNames.acal_calendars,
            Constants.TablesNames.acal_events,
            Constants.TablesNames.acal_users_data,
            Constants.TablesNames.acal_publications,
            Constants.TablesNames.acal_sharing,
            Constants.TablesNames.acal_eventrepeats,
            Constants.TablesNames.acal_exclusions,
            Constants.TablesNames.acal_appointments,
            Constants.TablesNames.acal_cron_runs,
            Constants.TablesNames.acal_reminders
        };
        bool isTableExist = false;

        Utils.SettingsPath = AdminPanelUtils.GetWebMailFolder();

        DbStorage storage = DbStorageCreator.CreateDatabaseStorage(null, AdminPanelUtils.GetWebMailDataFolder());

        try
        {
            storage.Connect();
            dbTablesName = storage.GetTablesNames();
        }
        catch (WebMailDatabaseException error)
        {
            Log.WriteException(error);
            _errorMessage = @"<font color=""red"">" + Constants.mailAdmTablesNotCreated + ": " + error.Message + "</font>";
            errorFlag     = true;
        }
        finally
        {
            storage.Disconnect();
        }
        for (int i = 0; i < dbTablesName.Length; i++)
        {
            string dbTable = dbTablesName[i];
            foreach (string name in tablesNames)
            {
                if (string.Compare(dbTable, string.Format("{0}{1}", prefix, name), true, CultureInfo.InvariantCulture) == 0)
                {
                    isTableExist = true;
                    break;
                }
            }
            if (isTableExist)
            {
                break;
            }
        }
        if (isTableExist)
        {
            _errorMessage = @"<font color=""red"">The data tables with """ + prefix + @""" prefix already exist. To proceed, specify another prefix or delete the existing tables.</font>";
            errorFlag     = true;
        }
        else
        {
            try
            {
                storage.Connect();
                foreach (string name in tablesNames)
                {
                    try
                    {
                        storage.CreateTable(name, prefix);
                    }
                    catch (WebMailDatabaseException error)
                    {
                        Log.WriteException(error);
                        _errorMessage = @"<font color=""red"">" + Constants.mailAdmTablesNotCreated + ": " + error.Message + "</font>";
                        errorFlag     = true;
                    }
                }
            }
            catch (WebMailDatabaseException error)
            {
                Log.WriteException(error);
                _errorMessage = @"<font color=""red"">" + Constants.mailAdmTablesNotCreated + ": " + error.Message + "</font>";
                errorFlag     = true;
            }
            finally
            {
                storage.Disconnect();
            }
            if (!errorFlag)
            {
                _errorMessage = @"<font color=""green"">" + Constants.mailAdmTablesCreated + "</font>";
            }
        }
        return(errorFlag);
    }