bool SQLITE_PLUGIN::SQL_DROP_TABLES (QList<ADAK_SQL_STRUCT *> adak_sql_struct )
{
    CONNECT_TO_DATABASE( false );

    for ( int i = 0 ; i < adak_sql_struct.size() ; i++ ) {
        QStringList drop_table_sql_list      = DROP_ALL_TABLES_SQL( adak_sql_struct.at(i) );

        for ( int i = 0; i < adak_sql_struct.at(i)->table_count; i++ ) {
            QSqlQuery drop_table_query ( m_db_connection );
            if ( drop_table_query.exec ( drop_table_sql_list[i] )  EQ false ) {
                ADAK_SQL_ERROR( m_db_connection, DROP_ERROR, ERROR_IN_DROP_TABLES, &drop_table_query);
            }
            QSqlQuery vacuum_query ( m_db_connection);
            if (vacuum_query.exec("VACUUM") EQ false ) {
                ADAK_SQL_ERROR( m_db_connection, EXEC_DDL_ERROR, ERROR_IN_DROP_TABLES, &vacuum_query);
            }
        }
    }

    CONNECT_TO_DATABASE( false );

    return true;
}
Example #2
0
int FIRST_LOGIN( USER_LOGIN_INFO_STRUCT * P_USER_LOGIN_INFO, bool p_ilk_kurulum )
{
    //! PROGRAM ILK CALISTIGINDA BURAYA DUSER VE GEREKLI
    //! BUTUN VERI TABANLARINI VE YETKI ATAMASINI YAPAR.

    //! NOTE : VERITABANI ILK YARATILDIGINDA DEFAULT OLARAK
    //! OLUSACAK KULLANICI VE BILGISAYAR BILGILERI

    P_USER_LOGIN_INFO->bilgisayar_kodu    = QObject::tr ("C01");
    P_USER_LOGIN_INFO->bilgisayar_adi     = QObject::tr ("C01 Computer");
    P_USER_LOGIN_INFO->kullanici_kodu     = QObject::tr ("U01");
    P_USER_LOGIN_INFO->kullanici_adi      = QObject::tr ("U01 User");
    P_USER_LOGIN_INFO->kullanici_sifre   = "";

    if( p_ilk_kurulum EQ true ) {
        P_USER_LOGIN_INFO->sql_motoru         = "NONE";
        P_USER_LOGIN_INFO->secili_sql_profili = QObject::tr ("Local Disk");
        P_USER_LOGIN_INFO->veritabani_kodu    = "000";
    }

    P_USER_LOGIN_INFO->veritabani_tanimi  = QString(QObject::tr ("%1 Database")).arg( P_USER_LOGIN_INFO->veritabani_kodu );

    if ( P_USER_LOGIN_INFO->is_first_login EQ true ) {
        QSplashScreen * splash = CREATE_SPLASH_SCREEN();
        splash->show();
        splash->showMessage((QString("Configuring program for first usage. Please wait ...")), Qt::AlignCenter, Qt::white );
        splash->finish(NULL);
    }

    //! SQL_LITE VERITABANINA BAGLANILMAYA CALISILDIGINDA OTOMATIK OLARAK
    //! BAGLANILAN ISIMDE BIR VERITABANI OLUSTURUR

    QString program_db_name = SQL_DBNAME_ONEK() + "adak_" + P_USER_LOGIN_INFO->veritabani_kodu;
    QString yonetim_db_name = SQL_DBNAME_ONEK() + "adak_yonetim";

    G_YONETIM_DB = CONNECT_TO_DATABASE( ADAK_YONETIM, yonetim_db_name, P_USER_LOGIN_INFO->sql_motoru );
    DB           = CONNECT_TO_DATABASE( ADAK_PROGRAM, program_db_name, P_USER_LOGIN_INFO->sql_motoru );

    G_YONETIM_DB->START_TRANSACTION();

    //! [1] YENI BIR VERI TABANI OLSTURULUYOR

    if( p_ilk_kurulum EQ false ) {
        QString uyari_string = QString (QObject::tr("Tables needed do not exist in database!"
            "\nWill create tables and a new user according to the information you gave.\n\n Will do;\n"
            "Create database : %1 - %2 .\n"
            "Create %3 : user and give it all the permissions."))
            .arg( P_USER_LOGIN_INFO->veritabani_kodu )
            .arg( P_USER_LOGIN_INFO->veritabani_tanimi  )
            .arg( P_USER_LOGIN_INFO->kullanici_kodu  );

        if ( P_USER_LOGIN_INFO->is_first_login EQ true ) {
            ADAK_MSG_ENUM answer = ADAK_YES_NO_CANCEL(uyari_string , NULL, NULL);

            if (answer NE ADAK_YES) {
                return ADAK_OK;
            }
        }
    }

    if ( P_USER_LOGIN_INFO->kullanici_id EQ 1 ) {
        return ADAK_OK;
    }

    if ( CREATE_TABLES_OF_YONETIM( yonetim_db_name ) EQ ADAK_FAIL ) {
        return ADAK_FAIL;
    }

    SQL_QUERY sql_query ( G_YONETIM_DB );

    sql_query.PREPARE_SELECT("ynt_kullanicilar", "kullanici_kodu","kullanici_kodu = :kullanici_kodu","");
    sql_query.SET_VALUE ( ":kullanici_kodu" , P_USER_LOGIN_INFO->kullanici_kodu );

    if ( sql_query.SELECT() EQ 0 ) {

        ADD_YONETICI_USER( P_USER_LOGIN_INFO->kullanici_sifre );

        sql_query.PREPARE_INSERT ( "ynt_kullanicilar","kullanici_id","kullanici_kodu, kullanici_adi,silinmis_mi, parola");

        sql_query.SET_VALUE ( ":kullanici_kodu" , P_USER_LOGIN_INFO->kullanici_kodu );
        sql_query.SET_VALUE ( ":kullanici_adi"  , P_USER_LOGIN_INFO->kullanici_adi  );
        sql_query.SET_VALUE ( ":silinmis_mi"    , 0 );

        QByteArray hash = QCryptographicHash::hash(QString(P_USER_LOGIN_INFO->kullanici_sifre).toUtf8(), QCryptographicHash::Md5);

        sql_query.SET_VALUE ( ":parola", QString( hash.toHex()));

        P_USER_LOGIN_INFO->kullanici_id = sql_query.INSERT();

        QStringList mac_adresleri = GET_MAC_ADDRESS();

        sql_query.PREPARE_INSERT ( "ynt_bilgisayarlar","bilgisayar_id","bilgisayar_kodu, bilgisayar_adi, "
                                   "mac_adresi_kablolu,mac_adresi_kablosuz,mac_adresi_3g, silinmis_mi ");

        sql_query.SET_VALUE( ":bilgisayar_kodu"     , P_USER_LOGIN_INFO->bilgisayar_kodu );
        sql_query.SET_VALUE( ":bilgisayar_adi"      , P_USER_LOGIN_INFO->bilgisayar_adi  );

        if ( mac_adresleri.size() >= 1 ) {
            sql_query.SET_VALUE( ":mac_adresi_kablolu", GET_MAC_ADDRESS().at(0)  );
        }
        else {
            sql_query.SET_VALUE( ":mac_adresi_kablolu", "" );
        }

        if ( mac_adresleri.size() >= 2 ) {
            sql_query.SET_VALUE( ":mac_adresi_kablosuz", GET_MAC_ADDRESS().at(1) );
        }
        else {
            sql_query.SET_VALUE( ":mac_adresi_kablosuz", "" );
        }

        if ( mac_adresleri.size() >= 3 ) {
            sql_query.SET_VALUE( ":mac_adresi_3g", GET_MAC_ADDRESS().at(2) );
        }
        else {
            sql_query.SET_VALUE( ":mac_adresi_3g", "" );
        }

        sql_query.SET_VALUE( ":silinmis_mi", 0 );

        P_USER_LOGIN_INFO->bilgisayar_id = sql_query.INSERT();

        //! VERITABANI ID OLUSUYOR.
        if ( CREATE_TABLES_OF_PROGRAM( P_USER_LOGIN_INFO, false ) EQ ADAK_FAIL ) {
            return ADAK_FAIL;
        }
        //! END

        sql_query.PREPARE_INSERT( "ynt_bilgisayar_kullanicilari","id","bilgisayar_id, kullanici_id");
        sql_query.SET_VALUE( ":bilgisayar_id", P_USER_LOGIN_INFO->bilgisayar_id );
        sql_query.SET_VALUE( ":kullanici_id" , P_USER_LOGIN_INFO->kullanici_id  );
        sql_query.INSERT();

        sql_query.PREPARE_INSERT( "ynt_veritabani_kullanicilari","id","veritabani_id, kullanici_id");
        sql_query.SET_VALUE( ":veritabani_id", P_USER_LOGIN_INFO->veritabani_id );
        sql_query.SET_VALUE( ":kullanici_id",  P_USER_LOGIN_INFO->kullanici_id  );
        sql_query.INSERT();
    }

    SET_STATIC_VALUES( P_USER_LOGIN_INFO );

    SET_KULLANICININ_CALISABILECEGI_VERITABANI_SAYISI ( 1 );
    SET_BILGISAYARDA_KAYITLI_KULLANICI_SAYISI         ( 1 );

    KULLANICI_TAM_YETKILENDIR( P_USER_LOGIN_INFO->kullanici_id );

    if (g_auto_login_flag EQ false) {
        SHOW_YARDIM_HATIRLATMA_DIALOG();
    }

    G_YONETIM_DB->COMMIT_TRANSACTION();

    //! [1] END

    return ADAK_OK;
}