/BetVM/dbclass/Gruppe.cs
C# | 381 lines | 259 code | 68 blank | 54 comment | 14 complexity | 3788acb2200ab4059b3e2fe5c39d86fc MD5 | raw file
Possible License(s): BSD-3-Clause
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Web;
- using System.Data.SqlClient;
-
- namespace BetVM.dbclass
- {
- public class Gruppe
- {
- #region variables
-
- public int _GruppenID;
- public int _TurnierID;
- public string _Name;
- public int _Einsatz;
-
- #endregion
-
- #region kontruktor
-
- /// <summary>
- /// Konstruktor
- /// </summary>
- public Gruppe()
- {
-
- }
-
- /// <summary>
- /// Konstruktor mit Initialisierung der Variablen
- /// </summary>
- /// <param name="pGruppenID"></param>
- /// <param name="pTurnierID"></param>
- /// <param name="pName"></param>
- /// <param name="pEinsatz"></param>
- public Gruppe( int pTurnierID, string pName, int pEinsatz)
- {
- this._TurnierID = pTurnierID;
- this._Name = pName;
- this._Einsatz = pEinsatz;
- }
-
- #endregion
-
- #region Methoden / Schnittstellen
-
- /// <summary>
- /// Insert eines neuen Eintrags in die Tabelle mit den Daten aus den Variablen
- /// </summary>
- /// <returns>True, wenn Insert erfolgreich.</returns>
- public bool insert()
- {
- SqlConnection connection = MSSQL_connectionFunctions.OpenConnection();
-
- SqlCommand command = connection.CreateCommand();
- command.Connection = connection;
-
- command.CommandText = "UPDATE betvm.dbo.gruppe SET Name = @Name,Einsatz = @Einsatz,TurnierID = @TurnierID WHERE Name = @Name " +
- "IF @@ROWCOUNT = 0 " +
- "INSERT INTO betvm.dbo.gruppe(TurnierID,Name,Einsatz) VALUES (@TurnierID,@Name,@Einsatz)";
- command.Parameters.AddWithValue("TurnierID", this._TurnierID);
- command.Parameters.AddWithValue("Einsatz", this._Einsatz);
- command.Parameters.AddWithValue("Name", this._Name);
-
- command.ExecuteNonQuery();
-
- connection.Close();
- return true;
- }
-
- /// <summary>
- /// Initialisiert Gruppe anhand einer GruppenID.
- /// Bei der Initialisierung werden alle Eigenschaften (Variablen) der Gruppe belegt.
- /// </summary>
- /// <param name="pGruppenID">GruppenID der Gruppe, die initialisiert werden soll.</param>
- /// <returns>True, wenn Initialisierung erfolgreich.</returns>
- public bool getGruppeByGruppenID(int pGruppenID) {
-
- SqlConnection connection = MSSQL_connectionFunctions.OpenConnection();
-
- SqlCommand command = connection.CreateCommand();
- command.Connection = connection;
-
- command.Parameters.AddWithValue("GruppenID", pGruppenID);
- command.CommandText = "Select * from betvm.dbo.gruppe WHERE GruppenID = @GruppenID";
- SqlDataReader reader = command.ExecuteReader();
-
-
- if (reader.HasRows)
- {
-
- while (reader.Read())
- {
- this._GruppenID = pGruppenID; ;
- this._Name = reader["Name"].ToString();
- this._TurnierID = Convert.ToInt32(reader["TurnierID"]);
- this._Einsatz = Convert.ToInt32(reader["Einsatz"]);
- }
- }
- else {
- reader.Close();
- connection.Close();
- return false;
- }
-
- reader.Close();
- connection.Close();
- return true;
- }
-
- /// <summary>
- /// Initialisiert Gruppe anhand eines Gruppennamens.
- /// Bei der Initialisierung werden alle Eigenschaften (Variablen) der Gruppe belegt.
- /// </summary>
- /// <param name="pGruppenname">Gruppenname der Gruppe, die initialisiert werden soll.</param>
- /// <returns>True, wenn Vorgang erfolgreich.</returns>
- public bool getGruppeByName(string pGruppenname)
- {
-
- SqlConnection connection = MSSQL_connectionFunctions.OpenConnection();
-
- SqlCommand command = connection.CreateCommand();
- command.Connection = connection;
-
- command.Parameters.AddWithValue("Name", pGruppenname);
- command.CommandText = "Select * from betvm.dbo.gruppe WHERE Name = @Name";
- SqlDataReader reader = command.ExecuteReader();
-
-
- if (reader.HasRows)
- {
-
- while (reader.Read())
- {
- this._GruppenID = Convert.ToInt32(reader["GruppenID"]);
- this._Name = pGruppenname;
- this._TurnierID = Convert.ToInt32(reader["TurnierID"]);
- this._Einsatz = Convert.ToInt32(reader["Einsatz"]);
- }
- }
- else
- {
- reader.Close();
- connection.Close();
- return false;
- }
-
- reader.Close();
- connection.Close();
- return true;
- }
-
- /// <summary>
- /// Zählt Anzahl der Gruppenmitglieder der initialisierten Gruppe.
- /// </summary>
- /// <returns>Int-Wert, Anzahl der Gruppenmitglieder.</returns>
- public int countUsers()
- {
- SqlConnection connection = MSSQL_connectionFunctions.OpenConnection();
-
- SqlCommand command = connection.CreateCommand();
- command.Connection = connection;
-
- command.Parameters.AddWithValue("GruppenID", this._GruppenID);
- command.CommandText = "Select count(*) as UserAnzahl from betvm.dbo.gruppenbenutzer where GruppenID = @GruppenID";
- SqlDataReader reader = command.ExecuteReader();
-
-
- if (reader.HasRows)
- {
- reader.Read();
- int UserAnzahl = Convert.ToInt32(reader["UserAnzahl"]);
- reader.Close();
- connection.Close();
- return UserAnzahl;
- }
- else
- {
- reader.Close();
- connection.Close();
- return -1;
- }
- }
-
- /// <summary>
- /// Liefert Rangliste für die initialisierte Gruppe unter ihren eigenen mitgliedern.
- /// </summary>
- /// <returns>Dictionary-Objekt, das Benutzer und ihren zugehörigen Rang enthält.</returns>
- public Dictionary<Benutzer, int> getRangliste()
- {
- Dictionary<Benutzer, int> Rangliste = new Dictionary<Benutzer, int>();
-
- int EinladungsStatusID = Status.getStatusIDByWert("mitglied");
-
- SqlConnection connection = MSSQL_connectionFunctions.OpenConnection();
-
- SqlCommand command = connection.CreateCommand();
- command.Connection = connection;
-
- command.Parameters.AddWithValue("GruppenID", this._GruppenID);
- command.Parameters.AddWithValue("TurnierID", this._TurnierID);
- command.Parameters.AddWithValue("EinladungsStatusID", EinladungsStatusID);
- command.CommandText = "Select SUM(t.Punkte) as Punkte, b.BenutzerID, b.Benutzername from betvm.dbo.benutzer b, betvm.dbo.gruppenbenutzer gb, betvm.dbo.tipp t, betvm.dbo.spiel s, betvm.dbo.turniermannschaft tm " +
- "WHERE b.BenutzerID = gb.BenutzerID AND b.BenutzerID = t.BenutzerID AND gb.GruppenID = @GruppenID AND gb.EinladungsStatusID = @EinladungsStatusID "+
- "AND t.SpielID = s.SpielID AND s.Team1ID = tm.TurniermannschaftID AND tm.TurnierID = @TurnierID Group BY b.BenutzerID, b.Benutzername Order BY Punkte desc";
- SqlDataReader reader = command.ExecuteReader();
-
- //Falls Daten vorhanden
- if (reader.HasRows)
- {
- Benutzer tempBenutzer;
- while (reader.Read())
- {
- tempBenutzer = new Benutzer();
- tempBenutzer._BenutzerID = Convert.ToInt32(reader["BenutzerID"]);
- tempBenutzer._Benutzername = reader["Benutzername"].ToString();
-
- Rangliste.Add(tempBenutzer, Convert.ToInt32(reader["Punkte"]));
- }
- }
-
- reader.Close();
- connection.Close();
-
- return Rangliste;
- }
-
- /// <summary>
- /// Zählt Anzahl an Mitgliedern in der initialisierten Gruppe mit einer angegebenen Gruppenrolle.
- /// </summary>
- /// <param name="pRolle">Rolle der Benutzer in der Gruppe, die gezähltt werden sollen.</param>
- /// <returns>Int-Wert</returns>
- public int countMembersOfRole(String pRolle)
- {
- try
- {
- SqlConnection connection = MSSQL_connectionFunctions.OpenConnection();
-
- SqlCommand command = connection.CreateCommand();
- command.Connection = connection;
-
- command.Parameters.AddWithValue("GruppenID", this._GruppenID);
- command.Parameters.AddWithValue("Rolle", pRolle);
- command.CommandText = "Select count(*) as Anzahl from betvm.dbo.gruppenbenutzer where GruppenID = @GruppenID AND Rolle = @Rolle";
- SqlDataReader reader = command.ExecuteReader();
- int count = 0;
-
- if (reader.HasRows)
- {
- while (reader.Read())
- {
- count = Convert.ToInt32(reader["Anzahl"]);
- }
- }
-
- reader.Close();
- connection.Close();
-
- return count;
- }
- catch (Exception)
- {
- return 0;
- }
- }
-
- /// <summary>
- /// Löscht die initialisierte Gruppe.
- /// </summary>
- /// <returns></returns>
- public bool delete()
- {
- try
- {
- SqlConnection connection = MSSQL_connectionFunctions.OpenConnection();
-
- SqlCommand command = connection.CreateCommand();
- command.Connection = connection;
-
- command.Parameters.AddWithValue("GruppenID", this._GruppenID);
- command.CommandText = "delete from betvm.dbo.gruppe where GruppenID = @GruppenID";
- command.ExecuteNonQuery();
-
- connection.Close();
-
- return true;
- }
- catch (Exception)
- {
- return false;
- }
- }
-
- #endregion
-
- #region Statische Methoden
-
- /// <summary>
- /// Liefert die Gruppennamen, in denen ein Benutzer der einzige Admin ist.
- /// </summary>
- /// <param name="pBenutzername">Benutzername des Benutzers.</param>
- /// <returns>String-Array mit Namen der Gruppen.</returns>
- public static string[] getGruppenWithSingleAdminByBenutzername(string pBenutzername)
- {
- SqlConnection connection = MSSQL_connectionFunctions.OpenConnection();
-
- SqlCommand command = connection.CreateCommand();
- command.Connection = connection;
-
- command.Parameters.AddWithValue("aktBenutzer", pBenutzername);
- command.CommandText = "Select Abfrage1.Name FROM "+
- "(Select g.GruppenID, g.Name, count(gb.GruppenBenutzerID) as AnzahlAdmins "+
- "FROM gruppe g,gruppenbenutzer gb "+
- "where g.GruppenID = gb.GruppenID AND gb.Rolle = 'Admin' Group by g.Name, g.GruppenID) as Abfrage1 "+
- "INNER JOIN "+
- "(Select gb.GruppenID "+
- "from gruppenbenutzer gb, benutzer b "+
- "where b.Benutzername = @aktBenutzer AND gb.BenutzerID = b.BenutzerID AND gb.Rolle = 'Admin') as Abfrage2 "+
- "ON (Abfrage1.GruppenID = Abfrage2.GruppenID) "+
- "WHERE AnzahlAdmins < 2";
- SqlDataReader reader = command.ExecuteReader();
-
- List<string> tempList = new List<string>();
- if (reader.HasRows)
- {
- while (reader.Read())
- {
- tempList.Add(reader["Name"].ToString());
- }
- }
- else {
- return null;
- }
- reader.Close();
- connection.Close();
-
- return tempList.ToArray();
- }
-
- /// <summary>
- /// Überprüft ob ein Gruppenname, bereits in der Datenbank esistiert.
- /// </summary>
- /// <param name="pName">Name, der überprüft werden soll.</param>
- /// <returns>True, wenn der Name bereits existiert oder wenn ein Fehler auftritt.</returns>
- public static bool checkNameExist(string pName)
- {
- try
- {
- SqlConnection connection = MSSQL_connectionFunctions.OpenConnection();
-
- SqlCommand command = connection.CreateCommand();
- command.Connection = connection;
-
- command.Parameters.AddWithValue("Name", pName);
- command.CommandText = "select * from betvm.dbo.gruppe where Name = @Name";
- SqlDataReader reader = command.ExecuteReader();
-
-
- if (reader.HasRows)
- {
- reader.Close();
- connection.Close();
- return true;
- }
- else
- {
- reader.Close();
- connection.Close();
- return false;
- }
- }
- catch
- {
- return true;
- }
- }
-
- #endregion
- }
- }