538 lines
16 KiB
Java

package com.example.vpr_javafx;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.scene.Node;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.control.*;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
import java.io.FileWriter;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class MainController {
@FXML
private Label lMonH1;
@FXML
private Label lMonH2;
@FXML
private Label lMonD1;
@FXML
private Label lMonD2;
@FXML
private Label lTueH1;
@FXML
private Label lTueH2;
@FXML
private Label lTueD1;
@FXML
private Label lTueD2;
@FXML
private Label lWednH1;
@FXML
private Label lWednH2;
@FXML
private Label lWednD1;
@FXML
private Label lWednD2;
@FXML
private Label lThurH1;
@FXML
private Label lThurH2;
@FXML
private Label lThurD1;
@FXML
private Label lThurD2;
@FXML
private Label lFriH1;
@FXML
private Label lFriH2;
@FXML
private Label lFriD1;
@FXML
private Label lFriD2;
@FXML
private Label monDat;
@FXML
private Label tueDat;
@FXML
private Label wedDat;
@FXML
private Label thurDat;
@FXML
private Label friDat;
@FXML
private ImageView imgImage1;
@FXML
private ImageView imgImage2;
@FXML
private ImageView imgImage3;
@FXML
private ImageView imgImage4;
@FXML
private ImageView imgImage5;
@FXML
private ImageView imgImage6;
@FXML
private ImageView imgImage7;
@FXML
private ImageView imgImage8;
@FXML
private ImageView imgImage9;
@FXML
private ImageView imgImage10;
@FXML
private TextField tfPhone;
@FXML
public TextField tfName;
@FXML
public TextField tfChild;
@FXML
public TextField tfStreet;
@FXML
public TextField tfHouseNumber;
@FXML
public TextField tfPostalCode;
@FXML
public TextField tfCity;
@FXML
private PasswordField pfPassword;
@FXML
private Label allergene;
@FXML
private Button btResetSelection;
@FXML
private Button btToOrder;
@FXML
private RadioButton rbMonH1;
@FXML
private RadioButton rbMonH2;
@FXML
private RadioButton rbTueH1;
@FXML
private RadioButton rbTueH2;
@FXML
private RadioButton rbWednH1;
@FXML
private RadioButton rbWednH2;
@FXML
private RadioButton rbThurH1;
@FXML
private RadioButton rbThurH2;
@FXML
private RadioButton rbFriH1;
@FXML
private RadioButton rbFriH2;
@FXML
private ListView<String> orderList;
@FXML
final String imagePathUrl = "file:target/classes/com/example/vpr_javafx/pics/";
@FXML
final String veggieImageUrl = imagePathUrl + "vegetarisch.png";
@FXML
final String veganImageUrl = imagePathUrl + "vegan.png";
@FXML
final String meatImageUrl = imagePathUrl + "fleisch.png";
@FXML
private String imageUrl;
private ArrayList<String> chosenMeals;
@FXML
protected void OnSignInButton(ActionEvent event) throws IOException
{
Data data = new Data("user.txt");
data.validateData(tfPhone, pfPassword, this);
}
@FXML
protected void FillLabels() {
try {
List<String> menuLines = Files.readAllLines(Paths.get("menue.txt"));
for (int i = 0; i < menuLines.size(); i++)
{
String[] parts = menuLines.get(i).split(";");
String date = parts[0];
String day = parts[1];
String dish = parts[2];
String sideDish = parts[3];
String typ = parts[4];
String allergenic = parts[5];
String[] allergenics = allergenic.split(",");
Menu menu = new Menu(date, dish, sideDish, typ, Arrays.stream(allergenics).toList());
String dayMenu = dish+"\n"+sideDish+"\n"+allergenic;
switch (day)
{
case "Montag":
monDat.setText(menu.getDate());
break;
case "Dienstag":
tueDat.setText(menu.getDate());
break;
case "Mittwoch":
wedDat.setText(menu.getDate());
break;
case "Donnerstag":
thurDat.setText(menu.getDate());
break;
case "Freitag":
friDat.setText(menu.getDate());
}
if(typ.equals("Fleisch")) {
imageUrl=meatImageUrl;
}
if(typ.equals("Vegetarisch")) {
imageUrl=veggieImageUrl;
}
if(typ.equals("Vegan")) {
imageUrl=veganImageUrl;
}
Image image = new Image(imageUrl);
switch (i) {
case 0:
lMonH1.setText(dayMenu);
imgImage1.setImage(image);
break;
case 1:
lMonD1.setText(dayMenu);
break;
case 2:
lMonH2.setText(dayMenu);
imgImage2.setImage(image);
break;
case 3:
lMonD2.setText(dayMenu);
break;
case 4:
lTueH1.setText(dayMenu);
imgImage3.setImage(image);
break;
case 5:
lTueD1.setText(dayMenu);
break;
case 6:
lTueH2.setText(dayMenu);
imgImage4.setImage(image);
break;
case 7:
lTueD2.setText(dayMenu);
break;
case 8:
lWednH1.setText(dayMenu);
imgImage5.setImage(image);
break;
case 9:
lWednD1.setText(dayMenu);
break;
case 10:
lWednH2.setText(dayMenu);
imgImage6.setImage(image);
break;
case 11:
lWednD2.setText(dayMenu);
break;
case 12:
lThurH1.setText(dayMenu);
imgImage7.setImage(image);
break;
case 13:
lThurD1.setText(dayMenu);
break;
case 14:
lThurH2.setText(dayMenu);
imgImage8.setImage(image);
break;
case 15:
lThurD2.setText(dayMenu);
break;
case 16:
lFriH1.setText(dayMenu);
imgImage9.setImage(image);
break;
case 17:
lFriD1.setText(dayMenu);
break;
case 18:
lFriH2.setText(dayMenu);
imgImage10.setImage(image);
break;
case 19:
lFriD2.setText(dayMenu);
break;
}
}
}
catch (IOException e) {
e.printStackTrace();
}
}
/**
* writeAllergene() is a method to format and set allergene
* @author Madeleine Vigier
*/
@FXML
protected void writeAllergene() {
allergene.setText("a: Eier; b: Soja,\n"
+ "c: Milch; d: Erdnüsse;\n"
+ "e: Weichtiere; f: Krebstiere;\n"
+ "g: Getreide; h: Senf; i: Sesam;\n"
+ "j: Schwefeldioxid und Sulfit;\n"
+ "k: Nüsse; l: Sellerie;\n"
+ "m: Fische; n: Lupinen\n\n"
+ "1: Nitrit-Pökelsalz\n"
+ "2: Phosphat\n"
+ "3: Nitrat\n"
+ "4: Antioxidationsmittel\n"
+ "5: Farbstoff\n"
+ "6: Geschmacksverstärker;\n"
+ "7: Süßungsmittel;\n"
+ "8: Konservierungsstoff");
}
/**
* ToRegistration() ruft die Registration-View auf, sobald man auf den Registrierungs-Button klickt
* @param event
* @throws IOException
* @author Kevin Maier
*/
@FXML
protected void ToRegistration(ActionEvent event) throws IOException
{
Parent root = FXMLLoader.load(getClass().getResource("Registration-view.fxml"));
Stage stage = new Stage();
Scene scene = new Scene(root);
stage.setScene(scene);
stage.show();
}
/**
* OnRegistrationButton() creates a new user
* @param event
* @throws IOException
* @author Kevin Maier
*/
@FXML
protected void OnRegistrationButton(ActionEvent event) throws IOException
{
Alert alert = new Alert(Alert.AlertType.WARNING);
Data validRegistration = new Data("user.txt");
if (validRegistration.validateRegistration(tfName, tfPhone, pfPassword, tfStreet, tfHouseNumber, tfPostalCode, tfCity, tfChild, this))
{
try (FileWriter writer = new FileWriter("user.txt", true)){
writer.write(tfName.getText() + ";" + tfStreet.getText() + " " + tfHouseNumber.getText() + "," + tfPostalCode.getText() + " " + tfCity.getText() + ";" + tfPhone.getText() + ";" + tfChild.getText() + ";" + pfPassword.getText() + System.lineSeparator());
}
catch (IOException e)
{
e.printStackTrace();
}
}
}
@FXML
protected void setRadioButton()
{
ToggleGroup monToggle = new ToggleGroup();
ToggleGroup tueToggle = new ToggleGroup();
ToggleGroup wednToggle = new ToggleGroup();
ToggleGroup thurToggle = new ToggleGroup();
ToggleGroup friToggle = new ToggleGroup();
rbMonH1.setToggleGroup(monToggle);
rbMonH2.setToggleGroup(monToggle);
rbTueH1.setToggleGroup(tueToggle);
rbTueH2.setToggleGroup(tueToggle);
rbWednH1.setToggleGroup(wednToggle);
rbWednH2.setToggleGroup(wednToggle);
rbThurH1.setToggleGroup(thurToggle);
rbThurH2.setToggleGroup(thurToggle);
rbFriH1.setToggleGroup(friToggle);
rbFriH1.setToggleGroup(friToggle);
btResetSelection.setVisible(true);
btToOrder.setVisible(true);
rbMonH1.setVisible(true);
rbMonH2.setVisible(true);
rbTueH1.setVisible(true);
rbTueH2.setVisible(true);
rbWednH1.setVisible(true);
rbWednH2.setVisible(true);
rbThurH1.setVisible(true);
rbThurH2.setVisible(true);
rbFriH1.setVisible(true);
rbFriH2.setVisible(true);
}
@FXML
protected void resetSelection(ActionEvent event)
{
rbMonH1.setSelected(false);
rbMonH2.setSelected(false);
rbTueH1.setSelected(false);
rbTueH2.setSelected(false);
rbWednH1.setSelected(false);
rbWednH2.setSelected(false);
rbThurH1.setSelected(false);
rbThurH2.setSelected(false);
rbFriH1.setSelected(false);
rbFriH2.setSelected(false);
chosenMeals.clear();
}
@FXML
protected void toOrder(ActionEvent event) throws IOException
{
try (FileWriter writer = new FileWriter("parentOrder.txt", true))
{
writer.write(getLabelValueWithRadio().toString() + System.lineSeparator());
Alert alert = new Alert(Alert.AlertType.INFORMATION);
alert.setContentText("Bestellung abgeschickt.");
Parent rootParent = FXMLLoader.load(getClass().getResource("Order-view.fxml"));
Stage stage = (Stage) ((Node) event.getSource()).getScene().getWindow();
Scene scene = new Scene(rootParent);
stage.setScene(scene);
stage.show();
ObservableList<String> orders = FXCollections.observableArrayList(getLabelValueWithRadio());
orderList = new ListView<>(orders);
StackPane rootStackPane = new StackPane();
rootStackPane.getChildren().add(orderList);
Scene scene2 = new Scene(rootStackPane);
stage.setScene(scene2);
stage.show();
}
catch (IOException e)
{
e.printStackTrace();
}
}
@FXML
protected void removeFromOrder() throws IOException
{
}
@FXML
protected ArrayList<String> getLabelValueWithRadio()
{
chosenMeals = new ArrayList<>();
String mainDish;
String dessert;
Data data = new Data("user.txt");
for (User user : data.readUser())
{
if (tfPhone.getText().equals(user.getPhonenumber()) && pfPassword.getText().equals(user.getPassword()))
{
chosenMeals.add(user.getNameParent1()+"\n");
break;
}
}
if (rbMonH1.isSelected())
{
mainDish = lMonH1.getText();
dessert = lMonD1.getText();
chosenMeals.add("Hauptgericht: " + mainDish + " Dessert: " + dessert);
}
if (rbMonH2.isSelected())
{
mainDish = lMonH2.getText();
dessert = lMonD2.getText();
chosenMeals.add("Hauptgericht: " + mainDish + " Dessert: " + dessert);
}
if (rbTueH1.isSelected())
{
mainDish = lTueH1.getText();
dessert = lTueD1.getText();
chosenMeals.add("Hauptgericht: " + mainDish + " Dessert: " + dessert);
}
if (rbTueH2.isSelected())
{
mainDish = lTueH2.getText();
dessert = lTueD2.getText();
chosenMeals.add("Hauptgericht: " + mainDish + " Dessert: " + dessert);
}
if (rbWednH1.isSelected())
{
mainDish = lWednH1.getText();
dessert = lWednD1.getText();
chosenMeals.add("Hauptgericht: " + mainDish + " Dessert: " + dessert);
}
if (rbWednH2.isSelected())
{
mainDish = lWednH2.getText();
dessert = lWednD2.getText();
chosenMeals.add("Hauptgericht: " + mainDish + " Dessert: " + dessert);
}
if (rbThurH1.isSelected())
{
mainDish = lThurH1.getText();
dessert = lThurD1.getText();
chosenMeals.add("Hauptgericht: " + mainDish + " Dessert: " + dessert);
}
if (rbThurH2.isSelected())
{
mainDish = lThurH2.getText();
dessert = lThurD2.getText();
chosenMeals.add("Hauptgericht: " + mainDish + " Dessert: " + dessert);
}
if (rbFriH1.isSelected())
{
mainDish = lFriH1.getText();
dessert = lFriD1.getText();
chosenMeals.add("Hauptgericht: " + mainDish + " Dessert: " + dessert);
}
if (rbFriH2.isSelected())
{
mainDish = lFriH2.getText();
dessert = lFriD2.getText();
chosenMeals.add("Hauptgericht: " + mainDish + " Dessert: " + dessert);
}
Alert alert = new Alert(Alert.AlertType.INFORMATION);
alert.setContentText(chosenMeals.toString());
alert.show();
return chosenMeals;
}
}