示例#1
0
        // CRUD - Methoden start

        public static Benutzer Create(Connector connector, string login_name, string email_adresse, string passwort, uint rollen_nr)
        {
            string tabellenName;

            switch (rollen_nr)
            {
            case 1:
                tabellenName = "T_Admins";
                break;

            case 2:
                tabellenName = "T_Dozenten";
                break;

            case 3:
                tabellenName = "T_Schueler";
                break;

            default:
                // TODO besser als Check-Constraint in der DB realisieren
                throw new UnsupportedRoleException();
            }

            MySqlConnection connection = connector.Connection;

            connection.Open();

            string query = String.Format("INSERT INTO T_Benutzer (`login_name`,`email_adresse`, `passwort`, `fk_rolle_nr`) VALUES ('{0}', '{1}', PASSWORD('{2}'), '{3}' );",
                                         login_name, email_adresse, passwort, rollen_nr);

            connector.ExecuteNonQuery(query);

            query = "SELECT p_benutzer_nr FROM T_Benutzer WHERE login_name='" + login_name + "';";
            uint benutzer_nr = (uint)connector.ExecuteScalar(query);

            query = "INSERT INTO `" + tabellenName + "` (`p_f_benutzer_nr`) VALUES (" + benutzer_nr + ");";
            connector.ExecuteNonQuery(query);

            // das muss eventuel aus einer globalen Konfiguration gelesen werden
            uint[] kapazitaet           = { 10, 20, 30, 40, 50 }; // Karten
            uint[] anzahlWiederholungen = { 3, 2, 1, 0, 0 };
            uint[] wiederholungsspanne  = { 1, 2, 5, 10, 14 };    //  Tage

            for (int i = 0; i < 5; i++)
            {
                query = "INSERT INTO T_Faecher (kapazitaet, anzahl_wiederholungen, wiederholungs_zeitspanne, f_benutzer_nr ) VALUES ('{0}', '{1}', '{2}', '{3}');";
                query = String.Format(query, kapazitaet[i], anzahlWiederholungen[i], wiederholungsspanne[i], benutzer_nr);
                uint nummer_neues_fach = (uint)connector.ExecuteNonQuery(query);
            }

            connector.Connection.Close();

            return(Read(connector, benutzer_nr));
        }