diff --git a/src/main/java/Logik/Account.java b/src/main/java/Logik/Account.java index b5f6dd4..0f9be93 100644 --- a/src/main/java/Logik/Account.java +++ b/src/main/java/Logik/Account.java @@ -10,7 +10,7 @@ public class Account { // region Felder private String passwort; - private transient int id; + private /*transient*/ int id; private String name; @@ -65,5 +65,17 @@ public class Account { else if (this instanceof ElternAccount) rid = 1; } + + public Account(int id, String passwort, String name, String email) { + this.id = id; + this.passwort = passwort; + this.name = name; + this.email = email; + + if(this instanceof MitarbeiterAccount) + rid = 0; + else if (this instanceof ElternAccount) + rid = 1; + } // endregion } diff --git a/src/main/java/Logik/Kind.java b/src/main/java/Logik/Kind.java index 1174262..0d9e035 100644 --- a/src/main/java/Logik/Kind.java +++ b/src/main/java/Logik/Kind.java @@ -6,7 +6,7 @@ public class Kind { // region Felder - private transient int id; + private /*transient*/ int id; private String name; private String vorname; private int bid; diff --git a/src/main/java/RestAPISchnittstelle/RestApiClient.java b/src/main/java/RestAPISchnittstelle/RestApiClient.java index bb9b8bd..d41abed 100644 --- a/src/main/java/RestAPISchnittstelle/RestApiClient.java +++ b/src/main/java/RestAPISchnittstelle/RestApiClient.java @@ -32,6 +32,8 @@ public class RestApiClient implements IRestAPI{ RestApiClient client1 = new RestApiClient(); + client1.delete("Kind", 15); + System.out.println(client1.nextId("Benutzer")); } diff --git a/src/main/java/de/subway_surfers/vpr_app/AccounterstellungMitarbeiter.java b/src/main/java/de/subway_surfers/vpr_app/AccounterstellungMitarbeiter.java index 7f62e1b..31b8d0a 100644 --- a/src/main/java/de/subway_surfers/vpr_app/AccounterstellungMitarbeiter.java +++ b/src/main/java/de/subway_surfers/vpr_app/AccounterstellungMitarbeiter.java @@ -46,14 +46,30 @@ public class AccounterstellungMitarbeiter { kinder = new ArrayList<>(); } + /** + * Hauptmenü wird angezeigt + * + * @param actionEvent + * @author Sven Alteköster + */ public void onZurueck(ActionEvent actionEvent) { VerwaltungApplication.sceneWechseln("hauptmenue_mitarbeiter-view.fxml"); } + /** + * Der nutzer wird abgemeldet + * @param actionEvent + * @author Sven Alteköster + */ public void onAbmelden(ActionEvent actionEvent) { VerwaltungApplication.abmelden(); } + /** + * Die Felder zum Erstellen von Kindern werden gelöscht + * @param actionEvent + * @author Sven Alteköster + */ public void onTypMitarbeiter(ActionEvent actionEvent) { kindDaten.getChildren().clear(); } @@ -61,9 +77,12 @@ public class AccounterstellungMitarbeiter { /** * Einfügen der Eingabefelder für Kinder, wenn der Eltern-Radiobutton ausgewählt wird * @param actionEvent + * @author Sven Alteköster */ public void onTypEltern(ActionEvent actionEvent) { //Einfügen der Eingabefelder für Kinder + + //Einfügen der Überschrift Label ueberschrift = new Label(); ueberschrift.setText("Daten des Kindes:"); kindDaten.addRow(0); @@ -71,18 +90,21 @@ public class AccounterstellungMitarbeiter { kindDaten.addRow(1); kindDaten.add(ueberschrift,0,0); + //Einfügen der Eingabe für den Vornamen eines Kindes kindDaten.addRow(1); Label vname = new Label("Vorname:"); kindDaten.add(vname, 0, 1); TextField vnameEingabe = new TextField(); kindDaten.add(vnameEingabe, 1, 1); + //Einfügen der Eingabe für den Nachnamen eines Kindes kindDaten.addRow(2); Label nname = new Label("Nachname:"); kindDaten.add(nname, 0, 2); TextField nnameEingabe = new TextField(); kindDaten.add(nnameEingabe, 1, 2); + //Einfügen der Eingabe für den Geburtstag eines Kindes kindDaten.addRow(3); Label geburtstag = new Label("Geburtstag: "); kindDaten.add(geburtstag, 0, 3); @@ -90,6 +112,7 @@ public class AccounterstellungMitarbeiter { geburtstagEingabe.setEditable(false); kindDaten.add(geburtstagEingabe, 1, 3); + //Einfügen des bestätigen Buttons kindDaten.addRow(4); Button hinzufuegen = new Button("hinzufügen"); kindDaten.add(hinzufuegen, 1, 4); @@ -136,6 +159,11 @@ public class AccounterstellungMitarbeiter { }); } + /** + * Generiert ein zufälliges Passwort bestehend aus Buchstaben zwischen A und Z + * @return ein Passwort der länge pwLaenge + * @author Sven Alteköster + */ private String einmalPwGenerieren() { final int pwLaenge = 8; String pw = ""; @@ -149,14 +177,16 @@ public class AccounterstellungMitarbeiter { /** * Prüft, ob in allen Textfeldern für die Eltern Text steht. * @return true, wenn kein Feld leer ist + * @author Sven Alteköster */ private boolean eingabenGueltig() { return !accountname.getText().equals("") && !email.getText().equals("") && (typEltern.isSelected() || typMitarbeiter.isSelected()); } /** - * + * Speichert die Eingegebenen Daten in der Datenbank, wenn diese noch nicht vorhanden sind * @param actionEvent + * @author Sven Alteköster */ public void onSpeichern(ActionEvent actionEvent) { if (eingabenGueltig()) { @@ -166,15 +196,24 @@ public class AccounterstellungMitarbeiter { //Schnittstelle zur RestAPI RestApiClient api = new RestApiClient(); + Gson gson = new Gson(); + //id, die das Elternobjekt bekommt, dass im laufe der Methode erstellt wird + String[] accName = {String.format("name=%s", accountname.getText())}; + + String json = api.get("Benutzer", accName); int id = api.nextId("Benutzer"); + boolean kontoVorhanden = false; + if (!json.equals("false")) { + kontoVorhanden = true; + id = gson.fromJson(json, Account.class).getId(); + } //Erstellen des neuen Accounts Account neuer; //Handelt es sich um einen Elternaccount, werden alle Eingegebenen Kinder erstellt. if (typEltern.isSelected()) { neuer = new ElternAccount(String.format("%d",einmalpw.getText().hashCode()), accountname.getText(), email.getText()); - System.out.println(neuer.getEmail()); //Kinder dem neuen Account hinzufügen for (Kind k : kinder) { ((ElternAccount)neuer).getKinder().add(k); @@ -191,10 +230,11 @@ public class AccounterstellungMitarbeiter { //Die Liste, zum Speichern der gespeicherten Liste wird zurückgesetzt, da die Kinder jetzt im Elternobjekt gespeichert werden kinder.clear(); - Gson gson = new Gson(); + //Das Elternelement wird in der DB gespeichert, wenn es keinen gleichnamigen Account gibt. + if (!kontoVorhanden) { + api.post("Benutzer", gson.toJson(neuer)); + } - //Das Elternelement wird in der DB gespeichert. - api.post("Benutzer", gson.toJson(neuer)); //handelt es sich um einen Elternaccount, werden alle Kind-Objekte in der DB gespeichert if (neuer instanceof ElternAccount) { @@ -209,23 +249,34 @@ public class AccounterstellungMitarbeiter { else { status.setText("Accounterstellung Fehlgeschlagen"); } + + kindanzeige.getChildren().clear(); + kinder.clear(); } + /** + * Lädt alle zugehörigen Daten aus der Datenbank, die mit dem eingegebenen Benutzernamen übereinstimmen + * @param actionEvent + * @author Sven Alteköster + */ public void onLaden(ActionEvent actionEvent) { + kindanzeige.getChildren().clear(); + kinder.clear(); + Gson gson = new Gson(); RestApiClient api = new RestApiClient(); String[] params = {String.format("name=%s", accountname.getText())}; String jsonAcc = api.get("Benutzer", params); - System.out.println(jsonAcc); - Account acc; + //Handelt es sich um einen Mitarbeiter, wird dieser ausgewählt un die zugehörigen Felder werden ausgefüllt if (jsonAcc.contains("\"rid\":\"0\"")) { acc = gson.fromJson(jsonAcc, MitarbeiterAccount.class); accountTyp.selectToggle(typMitarbeiter); } + //Handelt es sich um einen Elternaccount werden die Felder ausgefüllt und alle Kinder geladen else if (jsonAcc.contains("\"rid\":\"1\"")) { acc = gson.fromJson(jsonAcc, ElternAccount.class); @@ -238,23 +289,29 @@ public class AccounterstellungMitarbeiter { JsonElement je = JsonParser.parseString(jsonString); JsonArray ja = je.getAsJsonArray(); + //Alle Kinder werden als clickbarer Button eingefügt for (JsonElement str : ja) { Kind kind = gson.fromJson(str, Kind.class); Button btn = new Button(); btn.setText(kind.getVorname()); - kindDaten.add(btn, 0, 5); + kindanzeige.getChildren().add(btn); + + //Wird der Button gecklickt, wird das Kind gelöscht + btn.setOnAction(a -> { + api.delete("Kind", kind.getId()); + //Der geclickte Button wird entfernt + ((HBox) btn.getParent()).getChildren().remove(btn); + }); } } + //Wird der Account nicht gefunden, wird abgebrochen else { status.setText("Account nicht gefunden"); return; } - email.setText(acc.getEmail()); - } - } diff --git a/src/main/resources/de/subway_surfers/vpr_app/hauptmenue_mitarbeiter-view.fxml b/src/main/resources/de/subway_surfers/vpr_app/hauptmenue_mitarbeiter-view.fxml index e3e561b..d926ccb 100644 --- a/src/main/resources/de/subway_surfers/vpr_app/hauptmenue_mitarbeiter-view.fxml +++ b/src/main/resources/de/subway_surfers/vpr_app/hauptmenue_mitarbeiter-view.fxml @@ -27,7 +27,7 @@