From 245323383d3983b519baba52f813bfc86d6e0d8d Mon Sep 17 00:00:00 2001 From: Samuel Wolff Date: Thu, 18 Jan 2024 13:00:46 +0100 Subject: [PATCH 1/2] god knows what I did here --- src/main/java/Logik/Mahlzeit.java | 5 + src/main/java/Logik/Tagesplan.java | 1 + .../RestAPISchnittstelle/RestApiClient.java | 86 +++++++++++- .../EssensverwaltungMitarbeiterView.java | 131 +++++++++++++++++- .../de/subway_surfers/vpr_app/LoginView.java | 3 + .../vpr_app/VerwaltungController.java | 27 +++- .../essensverwaltung_mitarbeiter-view.fxml | 13 +- .../de/subway_surfers/vpr_app/login-view.fxml | 4 +- 8 files changed, 251 insertions(+), 19 deletions(-) diff --git a/src/main/java/Logik/Mahlzeit.java b/src/main/java/Logik/Mahlzeit.java index c702824..2c09865 100644 --- a/src/main/java/Logik/Mahlzeit.java +++ b/src/main/java/Logik/Mahlzeit.java @@ -31,4 +31,9 @@ public class Mahlzeit { return beschreibung; } + @Override + public String toString() { + return String.format("Name: %s, Preis: %g, Beschreibung: %s", name, preis, beschreibung); + } + } diff --git a/src/main/java/Logik/Tagesplan.java b/src/main/java/Logik/Tagesplan.java index 2cc3ca5..6b96ee1 100644 --- a/src/main/java/Logik/Tagesplan.java +++ b/src/main/java/Logik/Tagesplan.java @@ -9,6 +9,7 @@ public class Tagesplan { public Tagesplan(String datum) { this.datum = datum; + this.gerichte = new ArrayList<>(); } public ArrayList getGerichte() { diff --git a/src/main/java/RestAPISchnittstelle/RestApiClient.java b/src/main/java/RestAPISchnittstelle/RestApiClient.java index 7e7d8a8..e7c3716 100644 --- a/src/main/java/RestAPISchnittstelle/RestApiClient.java +++ b/src/main/java/RestAPISchnittstelle/RestApiClient.java @@ -5,9 +5,12 @@ import java.net.http.HttpClient; import java.net.http.HttpRequest; import java.net.http.HttpResponse; import java.nio.charset.StandardCharsets; +import java.util.ArrayList; import Logik.ElternAccount; import Logik.Kind; +import Logik.Mahlzeit; +import Logik.Tagesplan; import com.google.gson.*; /** @@ -33,7 +36,10 @@ public class RestApiClient implements IRestAPI{ RestApiClient client1 = new RestApiClient(); - System.out.println(client1.nextId("Benutzer")); + Tagesplan t = client1.getGerichteOnTag("2023-12-17"); + + for(Mahlzeit m : t.getGerichte()) + System.out.println(m); } /** @@ -215,7 +221,6 @@ public class RestApiClient implements IRestAPI{ } } - public int nextId(String controllerName){ URI apiUri = URI.create(String.format("%s/%s/nextId", urlBase, controllerName)); @@ -245,4 +250,81 @@ public class RestApiClient implements IRestAPI{ } } + public boolean anmeldeVersuch(String credentials){ + + JsonObject json = gson.fromJson(credentials, JsonObject.class); + String benutzer = json.get("Benutzername").toString(); + benutzer = benutzer.substring(1, benutzer.length()-1); + + String passwort = json.get("passwort").toString(); + passwort = passwort.substring(1, passwort.length()-1); + + URI apiUri = URI.create(String.format("%s/Benutzer/anmeldeVersuch?Benutzername=%s&passwort=%s", urlBase, benutzer, passwort)); + System.out.println(apiUri); + HttpRequest httpRequest = HttpRequest.newBuilder() + .uri(apiUri) + .header("Content-Type", "application/json") + .GET() + .build(); + + try { + // Send the request and get the response + HttpResponse httpResponse = client.send(httpRequest, HttpResponse.BodyHandlers.ofString()); + + // Print the response status code and body + System.out.println("Status Code: " + httpResponse.statusCode()); + System.out.println("Response Body: " + httpResponse.body()); + if(httpResponse.body().equals("true")) + return true; + else + return false; + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + + public Tagesplan getGerichteOnTag(String datum){ + + URI apiUri = URI.create(String.format("%s/Tagesplan/getGerichteOnTag?datum=%s", urlBase, datum)); + System.out.println(apiUri); + HttpRequest httpRequest = HttpRequest.newBuilder() + .uri(apiUri) + .header("Content-Type", "application/json") + .GET() + .build(); + + try { + // Send the request and get the response + HttpResponse httpResponse = client.send(httpRequest, HttpResponse.BodyHandlers.ofString()); + + // Print the response status code and body + System.out.println("Status Code: " + httpResponse.statusCode()); + System.out.println("Response Body: " + httpResponse.body()); + + Tagesplan t = new Tagesplan(datum); + + JsonElement jsonElement = JsonParser.parseString(httpResponse.body()); + + JsonArray json = jsonElement.getAsJsonArray(); + + for(int i = 0; i< json.size(); i++){ + + JsonObject o = json.get(i).getAsJsonObject(); + String name = o.get("name").getAsString(); + float preis = o.get("preis").getAsFloat(); + String beschreibung = o.get("beschreibung").getAsString(); + + t.getGerichte().add(new Mahlzeit(name, preis, beschreibung)); + + } + + return t; + + } catch (Exception e) { + e.printStackTrace(); + return null; + } + } + } diff --git a/src/main/java/de/subway_surfers/vpr_app/EssensverwaltungMitarbeiterView.java b/src/main/java/de/subway_surfers/vpr_app/EssensverwaltungMitarbeiterView.java index f8e379c..8590950 100644 --- a/src/main/java/de/subway_surfers/vpr_app/EssensverwaltungMitarbeiterView.java +++ b/src/main/java/de/subway_surfers/vpr_app/EssensverwaltungMitarbeiterView.java @@ -1,10 +1,18 @@ package de.subway_surfers.vpr_app; +import Logik.Mahlzeit; +import Logik.Tagesplan; +import RestAPISchnittstelle.RestApiClient; +import javafx.beans.value.ChangeListener; +import javafx.beans.value.ObservableValue; +import javafx.collections.FXCollections; import javafx.event.ActionEvent; import javafx.fxml.FXML; import javafx.geometry.Pos; import javafx.scene.Node; +import javafx.scene.control.Button; import javafx.scene.control.Control; +import javafx.scene.control.Label; import javafx.scene.layout.ColumnConstraints; import javafx.scene.layout.GridPane; import javafx.scene.layout.Priority; @@ -12,19 +20,74 @@ import javafx.scene.layout.RowConstraints; import javafx.stage.Modality; import javafx.stage.Stage; +import java.net.http.WebSocket; +import java.text.DateFormat; +import java.time.LocalTime; +import java.time.format.DateTimeFormatter; +import java.util.ArrayList; +import java.util.Date; + +import static java.time.LocalTime.now; + public class EssensverwaltungMitarbeiterView { + + public Label g1Name; + public Label g2Name; + public Label g3Name; + public Label g4Name; + public Label g1Beschreibung; + public Label g2Beschreibung; + public Label g3Beschreibung; + public Label g4Beschreibung; + public Label dateLabel; @FXML private GridPane tagesplan; + private Tagesplan t; + + private String date; + + private String day; + + private String month; + + private String year; + + private ChangeListener listener; + public void initialize(){ + +/* + (obs,oldValue,newValue) -> { + final int zeile = 1; + for (Node n : tagesplan.getChildren()){ + if(n instanceof Control && GridPane.getRowIndex(n) == zeile){ + ((Control) n).setPrefHeight(newValue.floatValue()); + } + } + } + */ + + DateFormat dateFormat = DateFormat.getDateInstance(); + date = dateFormat.format(new Date()); + date = date.replace('.', '-'); + day = date.split("-")[0]; + month = date.split("-")[1]; + year = date.split("-")[2]; + date = String.format("%s-%s-%s", year, month, day); + + dateLabel.setText(String.format("%s.%s.%s", day, month, year)); + + + initGerichte(); + for (int i = 0; i < tagesplan.getColumnCount(); i++) { ColumnConstraints cc = new ColumnConstraints(); cc.setHgrow(Priority.ALWAYS); cc.setFillWidth(true); tagesplan.getColumnConstraints().add(cc); } - VerwaltungApplication.responsiveBreiteGrid(tagesplan); tagesplan.heightProperty().addListener((obs,oldValue,newValue) -> { final int zeile = 1; @@ -35,6 +98,9 @@ public class EssensverwaltungMitarbeiterView { } }); + VerwaltungApplication.responsiveBreiteGrid(tagesplan); + + } public void onAbmelden(ActionEvent actionEvent) { VerwaltungApplication.sceneWechseln("login-view.fxml"); @@ -59,4 +125,67 @@ public class EssensverwaltungMitarbeiterView { public void onZurueck(ActionEvent actionEvent) { VerwaltungApplication.sceneWechseln("hauptmenue_mitarbeiter-view.fxml"); } + + public void pfeilLinks(ActionEvent actionEvent) { + + tagesplan.getChildren().clear(); + + day = String.valueOf(Integer.parseInt(day)-1); + date = String.format("%s-%s-%s", year, month, day); + + dateLabel.setText(String.format("%s.%s.%s", day, month, year)); + + initGerichte(); + + } + + public void pfeilRechts(ActionEvent actionEvent) { + + tagesplan.getChildren().clear(); + + day = String.valueOf(Integer.parseInt(day)+1); + date = String.format("%s-%s-%s", year, month, day); + + dateLabel.setText(String.format("%s.%s.%s", day, month, year)); + + initGerichte(); + + } + + private void initGerichte(){ + + tagesplan.getStyleClass().clear(); + + t = new RestApiClient().getGerichteOnTag(date); + + if(!t.getGerichte().isEmpty()) { + for (int i = 0; i < t.getGerichte().size(); i++) { + Label name = new Label(); + tagesplan.add(name, i, 0); + Label beschreibung = new Label(); + beschreibung.setWrapText(true); + tagesplan.add(beschreibung, i, 1); + Button loeschen = new Button("Löschen"); + tagesplan.add(loeschen, i ,2); + + name.setText(t.getGerichte().get(i).getName()); + beschreibung.setText(t.getGerichte().get(i).getBeschreibung()); + } + } + else { + Label label = new Label(); + + label.setText("Für diesen Tag sind keine Gerichte eingetragen"); + tagesplan.add(label, 0, 0); + } + + + + + + tagesplan.getStyleClass().add("essensuebersicht_gridlines"); + } + + + } diff --git a/src/main/java/de/subway_surfers/vpr_app/LoginView.java b/src/main/java/de/subway_surfers/vpr_app/LoginView.java index 55429ae..de44fd4 100644 --- a/src/main/java/de/subway_surfers/vpr_app/LoginView.java +++ b/src/main/java/de/subway_surfers/vpr_app/LoginView.java @@ -3,4 +3,7 @@ package de.subway_surfers.vpr_app; import javafx.scene.control.Button; public class LoginView { + + + } diff --git a/src/main/java/de/subway_surfers/vpr_app/VerwaltungController.java b/src/main/java/de/subway_surfers/vpr_app/VerwaltungController.java index 458685a..fa5b74a 100644 --- a/src/main/java/de/subway_surfers/vpr_app/VerwaltungController.java +++ b/src/main/java/de/subway_surfers/vpr_app/VerwaltungController.java @@ -1,26 +1,43 @@ package de.subway_surfers.vpr_app; +import RestAPISchnittstelle.RestApiClient; import javafx.event.ActionEvent; import javafx.fxml.FXML; import javafx.fxml.FXMLLoader; import javafx.scene.Scene; -import javafx.scene.control.Alert; -import javafx.scene.control.Button; -import javafx.scene.control.Label; +import javafx.scene.control.*; import javafx.stage.Stage; import java.io.IOException; public class VerwaltungController { + @FXML + public PasswordField passwortTextfield; + @FXML + public TextField benutzernameTextfield; + public void initialize(){ + + + } /** - * Wird der Abmeldenbutton geklickt, wird der Nutzer angemeldet. + * Wird der Anmeldenbutton geklickt, wird der Nutzer angemeldet. */ public void onAnmeldenClick(ActionEvent actionEvent) { - VerwaltungApplication.sceneWechseln("hauptmenue_mitarbeiter-view.fxml"); + RestApiClient client = new RestApiClient(); + + String credentials = String.format("{\"Benutzername\" : \"%s\", \"passwort\" : \"%s\"}", benutzernameTextfield.getText(), passwortTextfield.getText()); + if(client.anmeldeVersuch(credentials)) + VerwaltungApplication.sceneWechseln("hauptmenue_mitarbeiter-view.fxml"); + else { + Alert alert = new Alert(Alert.AlertType.INFORMATION); + alert.setContentText("Falsche Anmeldedaten"); + alert.setHeaderText("Fehler!"); + alert.showAndWait(); + } } } \ No newline at end of file diff --git a/src/main/resources/de/subway_surfers/vpr_app/essensverwaltung_mitarbeiter-view.fxml b/src/main/resources/de/subway_surfers/vpr_app/essensverwaltung_mitarbeiter-view.fxml index ae3f652..5bdb910 100644 --- a/src/main/resources/de/subway_surfers/vpr_app/essensverwaltung_mitarbeiter-view.fxml +++ b/src/main/resources/de/subway_surfers/vpr_app/essensverwaltung_mitarbeiter-view.fxml @@ -34,21 +34,16 @@ -