Пример #1
0
        public void BenutzerSpeichern(Benutzer benutzer)
        {
            // bei dieser Art Caste wird keine Exception geschmissen
            // Falls der Cast-Typ falsch ist, wird null zurück gegeben
            DbDozent dbDozent = AppStatus.EingeloggterBenutzer as DbDozent;

            // Falls zu speichernder benutzer ein Schüler ist (rollen_nr==3)
            // und eingeloggter Benutzer ein Dozent ist
            if (benutzer.Rollen_nr == 3 && dbDozent != null)
            {
                dbDozent.Save(benutzer);
                return;
            }

            DbAdmin dbAdmin = (DbAdmin)AppStatus.EingeloggterBenutzer;

            dbAdmin.Save(benutzer);
        }
Пример #2
0
        public static Benutzer Read(Connector connector, uint benutzer_nr)
        {
            // unser Rückgabe-Objekt
            Benutzer benutzer = null;

            connector.Connection.Open();
            string       query  = "SELECT * FROM T_Benutzer WHERE p_benutzer_nr = " + benutzer_nr;
            DbDataReader reader = connector.ExecuteReader(query);

            if (reader.HasRows)
            {
                reader.Read();
                uint   _p_benutzer_nr = (uint)reader["p_benutzer_nr"];
                string _login_name    = (string)reader["login_name"];
                string _email_adresse = (string)reader["email_adresse"];
                string _passwort      = (string)reader["passwort"];
                uint   _fk_rolle_nr   = (uint)reader["fk_rolle_nr"];

                switch (_fk_rolle_nr)
                {
                case 1:
                    benutzer = new DbAdmin(_p_benutzer_nr, _login_name, _email_adresse, _passwort);
                    break;

                case 2:
                    benutzer = new DbDozent(_p_benutzer_nr, _login_name, _email_adresse, _passwort);
                    break;

                case 3:
                    benutzer = new DbSchueler(_p_benutzer_nr, _login_name, _email_adresse, _passwort);
                    break;

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

                // Jetzt lesen wir noch die Fächer ein
                // Warum ist das eigentlich hier implementiert worden ?
                //
                query  = "SELECT * FROM T_Faecher WHERE f_benutzer_nr = " + benutzer.Benutzer_nr;
                reader = connector.ExecuteReader(query);
                if (reader.HasRows)
                {
                    int i = 0;
                    while (i < 5 && reader.Read())
                    {
                        uint   _fach_nr                  = (uint)reader["p_fach_nr"];
                        uint   _kapazitaet               = (uint)reader["kapazitaet"];
                        uint   _anzahl_wiederholungen    = (uint)reader["anzahl_wiederholungen"];
                        uint   _wiederholungs_zeitspanne = (uint)reader["wiederholungs_zeitspanne"];
                        uint   _benutzer_nr              = (uint)reader["f_benutzer_nr"];
                        DbFach dbFach = new DbFach(_fach_nr, _kapazitaet, _anzahl_wiederholungen, _wiederholungs_zeitspanne, _benutzer_nr);

                        benutzer.FachListe[i] = dbFach;
                        i++;
                    }
                }
                reader.Close();
            }
            else
            {
                connector.Connection.Close();
                throw new DbFrageReadException();
            }
            connector.Connection.Close();

            return(benutzer);
        }