예제 #1
0
파일: Program.cs 프로젝트: Obilarius/APRS
        /// <summary>
        /// Führt ein Update auf der Datenbank aus und ändert den Status und den Completed Wert
        /// </summary>
        /// <param name="id">Die ID des Datensatzes der geändert werden soll</param>
        /// <param name="status">Der neue Status der gesetzt wird</param>
        /// <param name="completed">Ob der Plan abgeschlossen ist oder nicht</param>
        private static void SetNewStatus(int id, string status, bool completed)
        {
            // Erstellt eine Datenbankverbindung
            var mssql = new MsSql();

            // Öffnet die Datenbankverbindung
            mssql.Open();

            // Der Update SQL Befehl
            string sql = $"UPDATE schedule SET Status = @status, Completed = @completed WHERE ID = @id";

            SqlCommand cmd = new SqlCommand(sql, mssql.Con);

            // Hängt die Parameter an
            cmd.Parameters.AddWithValue("@id", id);
            cmd.Parameters.AddWithValue("@completed", (completed) ? 1 : 0);
            cmd.Parameters.AddWithValue("@status", status);

            // Führt die Query aus
            cmd.ExecuteNonQuery();

            // Schliest die Datenbankverbindung
            mssql.Close();
        }
예제 #2
0
파일: Program.cs 프로젝트: Obilarius/APRS
        /// <summary>
        /// Arbeitet alle noch nicht fetiggestellten Mitgliedschaften ab
        /// </summary>
        private static void WorkScheduleFromDB()
        {
            // Erstellt und öffnet die SQL Verbindung
            MsSql mssql = new MsSql();

            mssql.Open();

            // Der SQL Befehl der alle nicht abgeschlossenen Zeilen abfrägt
            string sql = $"SELECT * FROM schedule WHERE Completed = 0";

            SqlCommand cmd = new SqlCommand(sql, mssql.Con);

            using (SqlDataReader reader = cmd.ExecuteReader())
            {
                while (reader.Read())
                {
                    // Die einzelnen Spalten des Eintrags
                    int      ID        = (int)reader["ID"];
                    string   Username  = reader["Username"].ToString();
                    string   UserSid   = reader["UserSid"].ToString();
                    string   Groupname = reader["Groupname"].ToString();
                    string   GroupSid  = reader["GroupSid"].ToString();
                    DateTime StartDate = (DateTime)reader["StartDate"];
                    DateTime EndDate   = (DateTime)reader["EndDate"];

                    DateTime EndDatePlus1 = (EndDate != DateTime.MaxValue) ? EndDate : EndDate.AddDays(1);

                    string Status  = reader["Status"].ToString();
                    string Creator = reader["Creator"].ToString();
                    string Comment = reader["Comment"].ToString();

                    // Das heutige Datum
                    DateTime now = DateTime.Today;

                    // Falls das Startdatum in der Vergangenheit liegt, das Enddatum in der Zukunft und der Status "planned" ist
                    // Plan startet
                    if (StartDate <= now && now <= EndDatePlus1 && Status == ConstStatus.Planned)
                    {
                        AddUserToGroup(UserSid, GroupSid);
                        WriteNoteToUser(UserSid, DateTime.Now.ToShortDateString() + " - " + Creator + " - Grp: " + Groupname + " hinzugefügt");
                        SetNewStatus(ID, ConstStatus.Set, false);
                    }

                    // Falls der folge Tag des Enddatums in der Vergangenheit liegt
                    // Plan ist abgelaufen
                    if (EndDatePlus1 <= now)
                    {
                        RemoveUserFromGroup(UserSid, GroupSid);
                        WriteNoteToUser(UserSid, DateTime.Now.ToShortDateString() + " - " + Creator + " - Grp: " + Groupname + " entfernt");
                        SetNewStatus(ID, ConstStatus.Terminate, true);
                    }

                    // Überprüft die gelöschten Einträge die aber noch nicht abgearbeitet worden sind
                    if (Status == "deleted")
                    {
                        // StartDate liegt in der Vergangenheit
                        // Die Gruppe wurde also schon gesetzt und muss wieder gelöscht werden
                        if (now <= StartDate)
                        {
                            RemoveUserFromGroup(UserSid, GroupSid);
                            WriteNoteToUser(UserSid, DateTime.Now.ToShortDateString() + " - " + Creator + " - Grp: " + Groupname + " entfernt");
                        }

                        // Setzt die Zeile auf Complete true
                        SetNewStatus(ID, Status, true);
                    }
                }
            }

            mssql.Close();
        }