Compare commits
	
		
			21 Commits
		
	
	
		
			AccountsUe
			...
			samu_maske
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| bc4926aca8 | |||
| 7acd24e285 | |||
| 509dc31d62 | |||
| a8e9d0ada4 | |||
| f281bc9ef4 | |||
| cac9a4f43a | |||
| eea06a254f | |||
| f0d87b0e43 | |||
| c5a179a0d2 | |||
| 1073423b16 | |||
| c182bd5714 | |||
| 5c21ee1743 | |||
| 0741325aa6 | |||
| 9e8ca5cebf | |||
| ee5fc5ded6 | |||
| afb53d8863 | |||
| 57fb7ff997 | |||
| 245323383d | |||
| 0326d80a21 | |||
| 93a443ebe1 | |||
| 412d9d7497 | 
							
								
								
									
										3
									
								
								.idea/misc.xml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										3
									
								
								.idea/misc.xml
									
									
									
										generated
									
									
									
								
							@@ -7,8 +7,9 @@
 | 
			
		||||
        <option value="$PROJECT_DIR$/pom.xml" />
 | 
			
		||||
      </list>
 | 
			
		||||
    </option>
 | 
			
		||||
    <option name="workspaceImportForciblyTurnedOn" value="true" />
 | 
			
		||||
  </component>
 | 
			
		||||
  <component name="ProjectRootManager" version="2" languageLevel="JDK_X" default="true" project-jdk-name="21" project-jdk-type="JavaSDK">
 | 
			
		||||
  <component name="ProjectRootManager" version="2" languageLevel="JDK_21" default="true" project-jdk-name="21" project-jdk-type="JavaSDK">
 | 
			
		||||
    <output url="file://$PROJECT_DIR$/out" />
 | 
			
		||||
  </component>
 | 
			
		||||
</project>
 | 
			
		||||
@@ -3,6 +3,8 @@ package Logik;
 | 
			
		||||
import java.util.ArrayList;
 | 
			
		||||
 | 
			
		||||
public class Mahlzeit {
 | 
			
		||||
 | 
			
		||||
	private int id;
 | 
			
		||||
	private String name;
 | 
			
		||||
	private float            preis;
 | 
			
		||||
	private ArrayList<Zutat> zutaten;
 | 
			
		||||
@@ -15,6 +17,22 @@ public class Mahlzeit {
 | 
			
		||||
		zutaten = new ArrayList<>();
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	public Mahlzeit (int id, String name, float preis, String beschreibung) {
 | 
			
		||||
		this.id = id;
 | 
			
		||||
		this.name = name;
 | 
			
		||||
		this.preis = preis;
 | 
			
		||||
		this.beschreibung = beschreibung;
 | 
			
		||||
		zutaten = new ArrayList<>();
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	public int getId() {
 | 
			
		||||
		return id;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	public void setId(int id) {
 | 
			
		||||
		this.id = id;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	public String getName() {
 | 
			
		||||
		return name;
 | 
			
		||||
	}
 | 
			
		||||
@@ -31,4 +49,11 @@ public class Mahlzeit {
 | 
			
		||||
		return beschreibung;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	@Override
 | 
			
		||||
	public String toString() {
 | 
			
		||||
		return String.format("Name: %s, Preis: %g, Beschreibung: %s", name, preis, beschreibung);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -9,6 +9,7 @@ public class Tagesplan {
 | 
			
		||||
 | 
			
		||||
	public Tagesplan(String datum) {
 | 
			
		||||
		this.datum = datum;
 | 
			
		||||
		this.gerichte = new ArrayList<>();
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	public ArrayList<Mahlzeit> getGerichte() {
 | 
			
		||||
 
 | 
			
		||||
@@ -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.*;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
@@ -35,7 +38,10 @@ public class RestApiClient implements IRestAPI{
 | 
			
		||||
		client1.delete("Kind", 15);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		System.out.println(client1.nextId("Benutzer"));
 | 
			
		||||
		Tagesplan t = client1.getGerichteOnTag("2023-12-17");
 | 
			
		||||
 | 
			
		||||
		for(Mahlzeit m : t.getGerichte())
 | 
			
		||||
			System.out.println(m);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
@@ -247,7 +253,6 @@ public class RestApiClient implements IRestAPI{
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
	public int nextId(String controllerName){
 | 
			
		||||
		URI apiUri = URI.create(String.format("%s/%s/nextId", urlBase, controllerName));
 | 
			
		||||
 | 
			
		||||
@@ -277,4 +282,148 @@ public class RestApiClient implements IRestAPI{
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * Startet einen guckt ob die mitgegebenen Anmeldedaten in der Kombination existieren.
 | 
			
		||||
	 *
 | 
			
		||||
	 * @param credentials Die Anmeldedaten in Json-String form
 | 
			
		||||
	 * @return True oder false, je nach Erfolg des Anmeldeversuchs
 | 
			
		||||
	 */
 | 
			
		||||
	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<String> 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;
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * Holt alle Gerichte eines mitgegebenen Tages aus der Datenbank
 | 
			
		||||
	 *
 | 
			
		||||
	 * @param datum Das angeforderte Datum in String Form (YYYY-MM-DD)
 | 
			
		||||
	 * @return Ein Tagesplan Objekt mit allen Gerichten
 | 
			
		||||
	 */
 | 
			
		||||
	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<String> 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;
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	public int getGerichtIdOnTag(String name, String datum){
 | 
			
		||||
 | 
			
		||||
		URI apiUri = URI.create(String.format("%s/Tagesplan/getGerichtIdOnTag?name=%s&datum=%s", urlBase, name, 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<String> 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());
 | 
			
		||||
 | 
			
		||||
			JsonElement jsonElement = JsonParser.parseString(httpResponse.body());
 | 
			
		||||
 | 
			
		||||
			JsonArray json = jsonElement.getAsJsonArray();
 | 
			
		||||
 | 
			
		||||
			JsonObject o = json.get(0).getAsJsonObject();
 | 
			
		||||
 | 
			
		||||
			return o.get("id").getAsInt();
 | 
			
		||||
 | 
			
		||||
		} catch (Exception e) {
 | 
			
		||||
			e.printStackTrace();
 | 
			
		||||
			return -1;
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	public void deleteGericht(int id){
 | 
			
		||||
		URI apiUri = URI.create(String.format("%s/Tagesplan/%d", urlBase, id));
 | 
			
		||||
		System.out.println(apiUri);
 | 
			
		||||
		HttpRequest httpRequest = HttpRequest.newBuilder()
 | 
			
		||||
											 .uri(apiUri)
 | 
			
		||||
											 .header("Content-Type", "application/json")
 | 
			
		||||
											 .DELETE()
 | 
			
		||||
											 .build();
 | 
			
		||||
 | 
			
		||||
		try {
 | 
			
		||||
			// Send the request and get the response
 | 
			
		||||
			HttpResponse<String> httpResponse = client.send(httpRequest, HttpResponse.BodyHandlers.ofString());
 | 
			
		||||
 | 
			
		||||
			// Print the response status code and body
 | 
			
		||||
			System.out.println("Status Code: " + httpResponse.statusCode());
 | 
			
		||||
			System.out.println("Delete Gericht: Response Body: " + httpResponse.body());
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		} catch (Exception e) {
 | 
			
		||||
			e.printStackTrace();
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -62,7 +62,7 @@ public class AccounterstellungMitarbeiter {
 | 
			
		||||
	 * @author Sven Alteköster
 | 
			
		||||
	 */
 | 
			
		||||
	public void onAbmelden(ActionEvent actionEvent) {
 | 
			
		||||
		VerwaltungApplication.abmelden();
 | 
			
		||||
		//VerwaltungApplication.abmelden();
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
 
 | 
			
		||||
@@ -1,10 +1,22 @@
 | 
			
		||||
package de.subway_surfers.vpr_app;
 | 
			
		||||
 | 
			
		||||
import Logik.Mahlzeit;
 | 
			
		||||
import Logik.Tagesplan;
 | 
			
		||||
import RestAPISchnittstelle.RestApiClient;
 | 
			
		||||
import com.google.gson.Gson;
 | 
			
		||||
import com.google.gson.JsonElement;
 | 
			
		||||
import com.google.gson.JsonObject;
 | 
			
		||||
import javafx.beans.value.ChangeListener;
 | 
			
		||||
import javafx.beans.value.ObservableValue;
 | 
			
		||||
import javafx.collections.FXCollections;
 | 
			
		||||
import javafx.collections.ObservableList;
 | 
			
		||||
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,40 +24,68 @@ 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.LocalDate;
 | 
			
		||||
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 dateLabel;
 | 
			
		||||
	@FXML
 | 
			
		||||
	private GridPane tagesplan;
 | 
			
		||||
 | 
			
		||||
	public void initialize(){
 | 
			
		||||
		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);
 | 
			
		||||
	private Tagesplan t;
 | 
			
		||||
 | 
			
		||||
		tagesplan.heightProperty().addListener((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());
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
		});
 | 
			
		||||
	private String date;
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * Initialize des Controllers.
 | 
			
		||||
	 * Setzt das Datum, holt die Gerichte ein und initialisiert die responsive grid.
 | 
			
		||||
	 * @author Samuel Wolff
 | 
			
		||||
	 */
 | 
			
		||||
	public void initialize(){
 | 
			
		||||
 | 
			
		||||
		date = LocalDate.now().toString();
 | 
			
		||||
 | 
			
		||||
		dateLabel.setText(date);
 | 
			
		||||
 | 
			
		||||
		initGrid();
 | 
			
		||||
		initGerichte();
 | 
			
		||||
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * Methode beim klicken auf den Anmeldebutton. Meldet den User ab
 | 
			
		||||
	 * @param actionEvent
 | 
			
		||||
	 * @author Max Heer
 | 
			
		||||
	 */
 | 
			
		||||
	public void onAbmelden(ActionEvent actionEvent) {
 | 
			
		||||
		VerwaltungApplication.sceneWechseln("login-view.fxml");
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * Methode beim klicken auf den Filter Button. Öffnet den Filter Dialog.
 | 
			
		||||
	 * @param actionEvent
 | 
			
		||||
	 * @author Sven Alteköster
 | 
			
		||||
	 */
 | 
			
		||||
	public void onFilter(ActionEvent actionEvent) {
 | 
			
		||||
		Stage stage = new Stage();
 | 
			
		||||
		VerwaltungApplication.sceneWechseln(stage, 450, 400, "inhaltsstoffe_filtern-view.fxml");
 | 
			
		||||
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * Methode beim klicken auf den hinzufügen Button. Öffnet den Dialog zum hinzufügen eines Gerichtes zum aktuellen Tag.
 | 
			
		||||
	 * @param actionEvent
 | 
			
		||||
	 * @author Sven Alteköster
 | 
			
		||||
	 */
 | 
			
		||||
	public void onHinzufuegen(ActionEvent actionEvent) {
 | 
			
		||||
		Stage gerichterstellung = new Stage();
 | 
			
		||||
 | 
			
		||||
@@ -58,7 +98,143 @@ public class EssensverwaltungMitarbeiterView {
 | 
			
		||||
		gerichterstellung.minHeightProperty().set(530);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * Methode beim klicken auf den Zurück Button. Kehrt zum Startbildschirm zurück.
 | 
			
		||||
	 * @param actionEvent
 | 
			
		||||
	 * @author Max Heer
 | 
			
		||||
	 */
 | 
			
		||||
	public void onZurueck(ActionEvent actionEvent) {
 | 
			
		||||
		VerwaltungApplication.sceneWechseln("hauptmenue_mitarbeiter-view.fxml");
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * Methode bei Klick auf Pfeil links, ändert das Datum und gibt neue Gerichte auf die GUI aus.
 | 
			
		||||
	 * @param actionEvent
 | 
			
		||||
	 * @author Samuel Wolff
 | 
			
		||||
	 */
 | 
			
		||||
	public void pfeilLinks(ActionEvent actionEvent) {
 | 
			
		||||
 | 
			
		||||
		tagesplan.getChildren().clear();
 | 
			
		||||
 | 
			
		||||
		LocalDate datum = LocalDate.parse(date);
 | 
			
		||||
		datum = datum.minusDays(1);
 | 
			
		||||
		date = datum.toString();
 | 
			
		||||
		dateLabel.setText(date);
 | 
			
		||||
 | 
			
		||||
		initGerichte();
 | 
			
		||||
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * Methode bei Klick auf Pfeil rechts, ändert das Datum und gibt neue Gerichte auf die GUI aus.
 | 
			
		||||
	 * @param actionEvent
 | 
			
		||||
	 * @author Samuel Wolff
 | 
			
		||||
	 */
 | 
			
		||||
	public void pfeilRechts(ActionEvent actionEvent) {
 | 
			
		||||
 | 
			
		||||
		tagesplan.getChildren().clear();
 | 
			
		||||
 | 
			
		||||
		LocalDate datum = LocalDate.parse(date);
 | 
			
		||||
		datum = datum.plusDays(1);
 | 
			
		||||
		date = datum.toString();
 | 
			
		||||
		dateLabel.setText(date);
 | 
			
		||||
 | 
			
		||||
		initGerichte();
 | 
			
		||||
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * Initialisiert alle Gerichte des aktuellen Datums auf der Seite.
 | 
			
		||||
	 * @author Samuel Wolff
 | 
			
		||||
	 */
 | 
			
		||||
	private void initGerichte(){
 | 
			
		||||
 | 
			
		||||
		tagesplan.getStyleClass().clear();
 | 
			
		||||
		tagesplan.getChildren().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);
 | 
			
		||||
				loeschen.setOnAction(this::loeschenButtonKlick);
 | 
			
		||||
 | 
			
		||||
				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);
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		for (Node n : tagesplan.getChildren()) {
 | 
			
		||||
			if (n instanceof Control) {
 | 
			
		||||
				((Control) n).setPrefWidth(tagesplan.getWidth() / tagesplan.getColumnCount());
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		for (Node n : tagesplan.getChildren()){
 | 
			
		||||
			if(n instanceof Control  && GridPane.getRowIndex(n) == 1){
 | 
			
		||||
				((Control) n).setPrefHeight(tagesplan.getHeight());
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		tagesplan.getStyleClass().add("essensuebersicht_gridlines");
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * Initialisiert das responsive grid.
 | 
			
		||||
	 */
 | 
			
		||||
	public void initGrid(){
 | 
			
		||||
		for (int i = 0; i < tagesplan.getColumnCount(); i++) {
 | 
			
		||||
			ColumnConstraints cc = new ColumnConstraints();
 | 
			
		||||
			cc.setHgrow(Priority.ALWAYS);
 | 
			
		||||
			cc.setFillWidth(true);
 | 
			
		||||
			tagesplan.getColumnConstraints().add(cc);
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		tagesplan.heightProperty().addListener((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());
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
		});
 | 
			
		||||
 | 
			
		||||
		VerwaltungApplication.responsiveBreiteGrid(tagesplan);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * Methode beim klicken auf den Löschen Button eines Tagesplan Elementes
 | 
			
		||||
	 * @param a
 | 
			
		||||
	 */
 | 
			
		||||
	private void loeschenButtonKlick(ActionEvent a){
 | 
			
		||||
		Button btn = (Button) a.getSource();
 | 
			
		||||
		int col = GridPane.getColumnIndex(btn);
 | 
			
		||||
		Mahlzeit m = t.getGerichte().get(col);
 | 
			
		||||
 | 
			
		||||
		RestApiClient cl = new RestApiClient();
 | 
			
		||||
 | 
			
		||||
		int id = cl.getGerichtIdOnTag(t.getGerichte().get(col < 0 ? 0 : col).getName().replace(' ', '_'), date);
 | 
			
		||||
 | 
			
		||||
		t.getGerichte().remove(col);
 | 
			
		||||
 | 
			
		||||
		System.out.println("Die Id lautet: " + id + col);
 | 
			
		||||
 | 
			
		||||
		cl.delete("GibtsAm", id);
 | 
			
		||||
		initGerichte();
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -1,9 +1,68 @@
 | 
			
		||||
package de.subway_surfers.vpr_app;
 | 
			
		||||
 | 
			
		||||
import Logik.Tagesplan;
 | 
			
		||||
import RestAPISchnittstelle.RestApiClient;
 | 
			
		||||
import javafx.event.ActionEvent;
 | 
			
		||||
import javafx.fxml.FXML;
 | 
			
		||||
import javafx.scene.control.Label;
 | 
			
		||||
import javafx.scene.layout.GridPane;
 | 
			
		||||
import javafx.scene.text.TextAlignment;
 | 
			
		||||
 | 
			
		||||
import java.text.DateFormat;
 | 
			
		||||
import java.time.LocalDate;
 | 
			
		||||
import java.util.Date;
 | 
			
		||||
 | 
			
		||||
public class HauptmenueMitarbeiterView {
 | 
			
		||||
 | 
			
		||||
    @FXML
 | 
			
		||||
    private GridPane wochenplan;
 | 
			
		||||
    private String date;
 | 
			
		||||
    private String day;
 | 
			
		||||
    private String month;
 | 
			
		||||
    private String year;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Ruft die Methode zum Befüllen der Ansicht auf
 | 
			
		||||
     * @author Max Heer
 | 
			
		||||
     */
 | 
			
		||||
    public void initialize(){
 | 
			
		||||
        wochenuebersichtFuellen();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Methode zum initialisieren und befüllen der Tabelle im Hauptmenü
 | 
			
		||||
     * @author Max Heer
 | 
			
		||||
     */
 | 
			
		||||
    public void wochenuebersichtFuellen(){
 | 
			
		||||
        String dateanzeige;
 | 
			
		||||
        date = LocalDate.now().toString();
 | 
			
		||||
        dateanzeige = date;
 | 
			
		||||
        Tagesplan t = new RestApiClient().getGerichteOnTag(date);
 | 
			
		||||
        for(int i=0;i<5;i++){
 | 
			
		||||
            Label tag = new Label();
 | 
			
		||||
            wochenplan.add(tag, i, 0);
 | 
			
		||||
            tag.setText(dateanzeige);
 | 
			
		||||
            for(int j=0; j<t.getGerichte().size();j++){
 | 
			
		||||
                Label name = new Label();
 | 
			
		||||
                name.setWrapText(true);
 | 
			
		||||
                wochenplan.add(name, i, j+1);
 | 
			
		||||
                name.setText(t.getGerichte().get(j).getName());
 | 
			
		||||
                name.setPrefHeight(75);
 | 
			
		||||
                name.setTextAlignment(TextAlignment.CENTER);
 | 
			
		||||
            }
 | 
			
		||||
            LocalDate datum = LocalDate.parse(date);
 | 
			
		||||
            datum = datum.plusDays(1);
 | 
			
		||||
            date = datum.toString();
 | 
			
		||||
            dateanzeige = date;
 | 
			
		||||
            t = new RestApiClient().getGerichteOnTag(date);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Methode beim klicken auf den Anmeldebutton. Meldet den User ab
 | 
			
		||||
     * @param actionEvent
 | 
			
		||||
     * @author Samuel Wolff
 | 
			
		||||
     */
 | 
			
		||||
    public void onAbmelden(ActionEvent actionEvent) {
 | 
			
		||||
        VerwaltungApplication.abmelden();
 | 
			
		||||
    }
 | 
			
		||||
 
 | 
			
		||||
@@ -3,4 +3,7 @@ package de.subway_surfers.vpr_app;
 | 
			
		||||
import javafx.scene.control.Button;
 | 
			
		||||
 | 
			
		||||
public class LoginView {
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -15,6 +15,10 @@ public class VerwaltungApplication extends Application {
 | 
			
		||||
 | 
			
		||||
	private static Stage stage;
 | 
			
		||||
 | 
			
		||||
	public static void abmelden(){
 | 
			
		||||
		VerwaltungApplication.sceneWechseln("login-view.fxml");
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	@Override
 | 
			
		||||
	public void start(Stage stage) throws IOException {
 | 
			
		||||
		FXMLLoader fxmlLoader = new FXMLLoader(VerwaltungApplication.class.getResource("login-view.fxml"));
 | 
			
		||||
@@ -110,10 +114,7 @@ public class VerwaltungApplication extends Application {
 | 
			
		||||
 | 
			
		||||
			e.printStackTrace();
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	public static void abmelden() {
 | 
			
		||||
		sceneWechseln("login-view.fxml");
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
 
 | 
			
		||||
@@ -1,28 +1,43 @@
 | 
			
		||||
package de.subway_surfers.vpr_app;
 | 
			
		||||
 | 
			
		||||
import Logik.Account;
 | 
			
		||||
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();
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
@@ -34,21 +34,16 @@
 | 
			
		||||
                    </left>
 | 
			
		||||
                    <right>
 | 
			
		||||
                        <HBox styleClass="test" spacing="10">
 | 
			
		||||
                            <Button styleClass="pfeil, links"/>
 | 
			
		||||
                            <Label text="Montag DD.MM.YY"/>
 | 
			
		||||
                            <Button styleClass="pfeil"/>
 | 
			
		||||
                            <Button styleClass="pfeil, links" onAction="#pfeilLinks"/>
 | 
			
		||||
                            <Label fx:id="dateLabel"/>
 | 
			
		||||
                            <Button styleClass="pfeil" onAction="#pfeilRechts"/>
 | 
			
		||||
                        </HBox>
 | 
			
		||||
                    </right>
 | 
			
		||||
                </BorderPane>
 | 
			
		||||
            </top>
 | 
			
		||||
            <center>
 | 
			
		||||
                <AnchorPane>
 | 
			
		||||
                    <GridPane fx:id="tagesplan" AnchorPane.bottomAnchor="20" AnchorPane.rightAnchor="20" AnchorPane.leftAnchor="20" AnchorPane.topAnchor="20" styleClass="essensuebersicht_gridlines">
 | 
			
		||||
                        <Label text="GerichtName" GridPane.columnIndex="0" GridPane.rowIndex="0"/>
 | 
			
		||||
                        <Label GridPane.columnIndex="1" GridPane.rowIndex="0"/>
 | 
			
		||||
                        <Label GridPane.columnIndex="2" GridPane.rowIndex="0"/>
 | 
			
		||||
                        <Label GridPane.columnIndex="3" GridPane.rowIndex="0"/>
 | 
			
		||||
                        <Label GridPane.columnIndex="0" GridPane.rowIndex="1"/>
 | 
			
		||||
                    <GridPane fx:id="tagesplan" AnchorPane.bottomAnchor="20" AnchorPane.rightAnchor="20" AnchorPane.leftAnchor="20" AnchorPane.topAnchor="20" >
 | 
			
		||||
                    </GridPane>
 | 
			
		||||
                </AnchorPane>
 | 
			
		||||
            </center>
 | 
			
		||||
@@ -57,9 +52,6 @@
 | 
			
		||||
    </center>
 | 
			
		||||
    <bottom>
 | 
			
		||||
        <BorderPane styleClass="button-untenrechts">
 | 
			
		||||
            <right>
 | 
			
		||||
                <Button text="Bestätigen" defaultButton="true" styleClass=".button"/>
 | 
			
		||||
            </right>
 | 
			
		||||
        </BorderPane>
 | 
			
		||||
    </bottom>
 | 
			
		||||
</BorderPane>
 | 
			
		||||
 
 | 
			
		||||
@@ -27,18 +27,11 @@
 | 
			
		||||
                    <Button text="Alle Bestellungen anzeigen" onAction="#onBestellungenAnzeigen"/>
 | 
			
		||||
                    <Button text="Rechnungen herunterladen"/>
 | 
			
		||||
                    <Button text="Daten importieren/Exportieren"/>
 | 
			
		||||
                    <Button text="Accounts verwalten" onAction="#onAccountAnlegenClick"/>
 | 
			
		||||
                    <Button text="Account anlegen" onAction="#onAccountAnlegenClick"/>
 | 
			
		||||
                </VBox>
 | 
			
		||||
            </left>
 | 
			
		||||
            <right>
 | 
			
		||||
                <GridPane styleClass="hauptmenue_wochenuebersicht">
 | 
			
		||||
                    <Label text="Montag" GridPane.columnIndex="0" GridPane.rowIndex="0"/>
 | 
			
		||||
                    <Label text="Dienstag" GridPane.columnIndex="1" GridPane.rowIndex="0"/>
 | 
			
		||||
                    <Label text="Mittwoch" GridPane.columnIndex="2" GridPane.rowIndex="0"/>
 | 
			
		||||
                    <Label text="Donnerstag" GridPane.columnIndex="3" GridPane.rowIndex="0"/>
 | 
			
		||||
                    <Label text="Freitag" GridPane.columnIndex="4" GridPane.rowIndex="0"/>
 | 
			
		||||
 | 
			
		||||
                    <Label text="Gericht1" styleClass="hauptmenue_gericht" GridPane.columnIndex="0" GridPane.rowIndex="1"/>
 | 
			
		||||
                <GridPane fx:id="wochenplan" styleClass="hauptmenue_wochenuebersicht">
 | 
			
		||||
                </GridPane>
 | 
			
		||||
            </right>
 | 
			
		||||
        </BorderPane>
 | 
			
		||||
 
 | 
			
		||||
@@ -19,9 +19,9 @@
 | 
			
		||||
            </HBox>
 | 
			
		||||
 | 
			
		||||
            <Label text="Benutzername" GridPane.rowIndex="1" GridPane.columnIndex="0"/>
 | 
			
		||||
            <TextField GridPane.rowIndex="1" GridPane.columnIndex="1"/>
 | 
			
		||||
            <TextField fx:id="benutzernameTextfield" GridPane.rowIndex="1" GridPane.columnIndex="1"/>
 | 
			
		||||
            <Label text="Passwort" GridPane.rowIndex="2" GridPane.columnIndex="0"/>
 | 
			
		||||
            <PasswordField GridPane.rowIndex="2" GridPane.columnIndex="1"/>
 | 
			
		||||
            <PasswordField fx:id="passwortTextfield" GridPane.rowIndex="2" GridPane.columnIndex="1"/>
 | 
			
		||||
 | 
			
		||||
            <CheckBox text="Kennwort merken" GridPane.rowIndex="3" GridPane.columnIndex="0"/>
 | 
			
		||||
        </GridPane>
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user