/// <summary> /// List alle in der Datenbank Appointments heraus und fügt diese zu einer Liste hinzu /// </summary> /// <returns>Liste aller vorhandenen Appointments für Klasse</returns> public void ReadAppointments(SchoolClass schoolClass) { try { // Liste säubern schoolClass.AppointmentList.Clear(); // Instanzierung DatabaseConnector Connect = new DatabaseConnector(); Connect.OpenConnection(); MySqlCommand command = Connect.Connection.CreateCommand(); // command.CommandText = "SELECT * FROM Appointment WHERE Class_idClass=" + schoolClass.IdClass + ";"; // Liest alle Appointments aus, welche nach dem heutigen Datum stattfinden und den dazugehörigen creator, sowie den Raum in dem das Appointment stattfindet command.CommandText = "SELECT a.idAppointment, a.Title, a.Person_idPerson, a.Class_idClass, a.Room_idRoom, a.Start_Time, a.End_Time, a.Description, a.AllDayEvent, p.Name, p.Firstname, r.Roomname " + "FROM Person AS p, Appointment AS a, Room AS r " + "WHERE p.Role_idRole = 1 AND p.IdPerson = a.Person_idPerson AND Class_idClass=" + schoolClass.IdClass + " AND r.idRoom = a.Room_idRoom AND a.Start_Time >= curdate();"; MySqlDataReader reader = command.ExecuteReader(); while (reader.Read()) { // Zeiten auslesen und Formatieren DateTime endTimeObj = reader.GetDateTime(6); DateTime startTimeObj = reader.GetDateTime(5); // Instanzierung Person Person creator = new Person((int)reader.GetValue(2), (string)reader.GetValue(9), (string)reader.GetValue(10)); // Instanzierung Room Room room = new Room((int)reader.GetValue(4), (string)reader.GetValue(11)); // Instanzierung Appointment Appointment a = new Appointment((int)reader.GetValue(0), (string)reader.GetValue(1), room, startTimeObj, endTimeObj, (string)reader.GetValue(8), (string)reader.GetValue(7), creator); schoolClass.AppointmentList.Add(a); } reader.Close(); //Connection schliessen Connect.CloseConnection(); } catch (Exception) { throw; } }
/// <summary> /// Nachdem der Benutzer eine Klasse ausgewählt hat, kann er ein neues Ereignis erstellen und die Ereignisse für die gewählte Klasse werden aufgelistet /// </summary> /// <param name="sender">Autogeneriert</param> /// <param name="args">Autogeneriert</param> async void OnClassSelectedClicked(object sender, EventArgs args) { try { //www.stackoverflow.com/questions/32313996/rendering-a-displayactionsheet-with-observablecollection-data-in-xamarin-cross-p?rq=1 string action = await DisplayActionSheet("Klasse wählen:", "Cancel", null, classes.Select(SchoolClass => SchoolClass.ClassName).ToArray()); // Hat der Benutzer die Klasse ausgewählt, werden die Ereignisse der Klasse aufgelistet if (action != "Cancel" && action != null) { // Wenn der angemeldete Benutzer ein Lehrer ist, kann dieser ein neues Ereignis erstellen if (App.UserLoggedIn.Role == 1 && ToolbarItems.FirstOrDefault(item => item.Text == "Ereignis erstellen") == null) { ToolbarItem toolBarItemCreateNewAppointment = new ToolbarItem { Text = "Ereignis erstellen", Order = ToolbarItemOrder.Secondary, Command = new Command(() => this.OnCallNewAppointmentPageClicked(null, null)), }; this.ToolbarItems.Add(toolBarItemCreateNewAppointment); } // Nachdem eine Klasse ausgewählt wurde, kann der Benutzer die Daten aktualisieren if (ToolbarItems.FirstOrDefault(item => item.Text == "Ereignisse aktualisieren") == null) { ToolbarItem toolBarItemRefresh = new ToolbarItem { Icon = "refresh.png", Text = "Ereignisse aktualisieren", Order = ToolbarItemOrder.Primary, Command = new Command(() => this.OnRefreshClicked(null, null)), }; this.ToolbarItems.Add(toolBarItemRefresh); } ToolbarItemClass.Text = action; Selectedclass = classes.Find(SchoolClass => SchoolClass.ClassName == action); ShowAppointments(); } } catch (Exception e) { await DisplayAlert("Fehler", "Ein Fehler ist aufgetreten. Bitte wenden Sie sich an den Support: " + Environment.NewLine + e.Message, "OK"); } }
/// <summary> /// Konstruktor für aufruf nach NewAppointment /// </summary> /// <param name="selectedclass">Ausgewählte Klasse</param> public MainPage(SchoolClass selectedclass) { try { NavigationPage.SetHasBackButton(this, false); InitializeComponent(); //Fill up Classes for Appointment DatabaseReader readerclasses = new DatabaseReader(); classes = readerclasses.ReadClasses(App.UserLoggedIn.IdPerson); //Elemente für toolbar bereitstellen ToolbarItem toolBarItemCreateNewAppointment = new ToolbarItem { Text = "Ereignis erstellen", Order = ToolbarItemOrder.Secondary, Command = new Command(() => this.OnCallNewAppointmentPageClicked(null, null)), }; ToolbarItem toolBarItemRefresh = new ToolbarItem { Icon = "refresh.png", Text = "Ereignisse aktualisieren", Order = ToolbarItemOrder.Primary, Command = new Command(() => this.OnRefreshClicked(null, null)), }; this.ToolbarItems.Add(toolBarItemRefresh); this.ToolbarItems.Add(toolBarItemCreateNewAppointment); // name wieder auf vorherige ausgewählte klasse setzen ToolbarItemClass.Text = selectedclass.ClassName; Selectedclass = selectedclass; ShowAppointments(); } catch (Exception e) { DisplayAlert("Fehler", "Ein Fehler ist aufgetreten. Bitte wenden Sie sich an den Support: " + Environment.NewLine + e.Message, "OK"); } }