diff --git a/.gitignore b/.gitignore
index 1165112..83913b4 100644
--- a/.gitignore
+++ b/.gitignore
@@ -37,4 +37,5 @@ build/
### Mac OS ###
.DS_Store
-/database.db
\ No newline at end of file
+/database.db
+/Rechnungen/**
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index b3e3131..3e6af89 100644
--- a/pom.xml
+++ b/pom.xml
@@ -45,6 +45,11 @@
sqlite-jdbc
3.40.0.0
+
+ org.controlsfx
+ controlsfx
+ 11.1.2
+
diff --git a/readme.md b/readme.md
index f7a786f..8735686 100644
--- a/readme.md
+++ b/readme.md
@@ -1,3 +1,13 @@
# Essensbestellungsverwaltung
-test
+---
+
+### Anleitung zum Benutzen
+Beim ersten Start des Programms wird die Datenbank erstellt und der erste Benutzer der angelegt wird, ist ein Mitarbeiter Account. Danach sind alle weiteren User für Eltern. Weitere Mitarbeiter können über das Mitarbeiter Menu erstellt werden.
+
+##### Desweitern werden Folgende Beispiel Accounts erstellt:
+Ein Eltern Account mit Kindern:
+testparent@test.de/test
+
+Ein Mitarbeiter Account:
+testworker@test.de/test
diff --git a/src/main/java/com/bib/essensbestellungsverwaltung/AccountMgr.java b/src/main/java/com/bib/essensbestellungsverwaltung/AccountMgr.java
index 6e16b8d..ca6a3cf 100644
--- a/src/main/java/com/bib/essensbestellungsverwaltung/AccountMgr.java
+++ b/src/main/java/com/bib/essensbestellungsverwaltung/AccountMgr.java
@@ -13,6 +13,7 @@ import java.util.List;
/**
* A collection of functions loosely related to account management
* Acts as an abstraction layer to the database
+ *
* @author Malte Schulze Hobeling
*/
public class AccountMgr {
@@ -21,226 +22,354 @@ public class AccountMgr {
/**
* creates a user with createUser(...) and adds its id to the 'worker' table
+ *
* @param worker the worker to be created
* @return userid or -1
* @author Malte Schulze Hobeling
*/
- protected static long createWorker(Worker worker){
+ protected static long createWorker(Worker worker) {
long id = createUser(worker);
String sId = String.valueOf(id);
- Database.insert("worker", new String[]{"userid"}, new String[]{sId});
+ Database.insert("worker", new String[] { "userid" }, new String[] { sId });
return id;
}
/**
* creates a user with createUser(...) and adds its id to the 'parent' table
+ *
* @param parent the parent to be created
* @return userid or -1
* @author Malte Schulze Hobeling
*/
- protected static long createParent(Parent parent){
+ protected static long createParent(Parent parent) {
long id = createUser(parent);
String sId = String.valueOf(id);
- Database.insert("parent", new String[]{"userid"}, new String[]{sId});
+ Database.insert("parent", new String[] { "userid" }, new String[] { sId });
return id;
}
/**
* adds a user to the database
+ *
* @param user the user to be created
* @return userid or -1
* @author Malte Schulze Hobeling
*/
protected static long createUser(User user) {
- String[] userH = {"name", "firstname", "addressid", "password", "email"};
+ String[] userH = { "name", "firstname", "addressid", "password", "email" };
String name = user.getName();
String firstname = user.getFirstname();
String pw = hashAndSalt(user.getPassword(), getSalt());
String email = user.getEmail();
long addressId = user.getAddress().getId();
- if(addressId < 1){
+ if (addressId < 1) {
addressId = createAddress(user.getAddress());
}
- String[] userD = {name, firstname, String.valueOf(addressId), pw, email};
+ String[] userD = { name, firstname, String.valueOf(addressId), pw, email };
return Database.insert("user", userH, userD);
}
/**
* adds an address to the database
+ *
* @param address the address to be created
* @return id or -1
* @author Malte Schulze Hobeling
*/
- protected static long createAddress(Address address){
- String[] addressH = {"street", "number", "plz", "city"};
- String[] addressD = {address.getStreet(),address.getNumber(),address.getPlz(),address.getCity()};
- return Database.insert("address",addressH,addressD);
+ protected static long createAddress(Address address) {
+ String[] addressH = { "street", "number", "plz", "city" };
+ String[] addressD = { address.getStreet(), address.getNumber(), address.getPlz(), address.getCity() };
+ return Database.insert("address", addressH, addressD);
}
/**
* adds a child and allergies to the database
+ *
* @param child the child to be created
* @return id of child or -1
* @author Malte Schulze Hobeling
*/
- protected static long createChild(Child child){
- String[] childH = {"name","firstname","addressid"};
- String[] childD = {child.getName(), child.getFirstname(), String.valueOf(child.getAddress().getId())};
+ protected static long createChild(Child child) {
+ String[] childH = { "name", "firstname", "addressid" };
+ String[] childD = { child.getName(), child.getFirstname(), String.valueOf(child.getAddress().getId()) };
long id = Database.insert("child", childH, childD);
- String[] child_allergyH = {"childid","allergyid","severityid"};
- for (AllergySeverity allergy: child.getAllergies()) {
+ String[] child_allergyH = { "childid", "allergyid", "severityid" };
+ for (AllergySeverity allergy : child.getAllergies()) {
String sId = String.valueOf(id);
String sAllergyId = String.valueOf(allergy.getAllergy().getId());
String sSeverityId = String.valueOf(allergy.getSeverityId());
- String[] child_allergyD = {sId,sAllergyId,sSeverityId};
- Database.insert("child_allergy",child_allergyH,child_allergyD);
+ String[] child_allergyD = { sId, sAllergyId, sSeverityId };
+ Database.insert("child_allergy", child_allergyH, child_allergyD);
}
return id;
}
/**
- * returns a User(Worker | Parent) for a given id or null if no unique id was found
+ * update Child
+ *
+ * @param child the child to be updated
+ * @return id of child
+ * @author Johannes Kantz
+ */
+ protected static long updateChild(Child child) {
+ String[] childH = { "id", "name", "firstname", "addressid" };
+ String[] childD = { String.valueOf(child.getId()), child.getName(), child.getFirstname(),
+ String.valueOf(child.getAddress().getId()) };
+ long updates = Database.update("child", childH, childD);
+ String[] child_allergyH = { "childid", "allergyid", "severityid" };
+ Database.select("child_allergy", new String[] { "childid" }, new String[] { String.valueOf(child.getId()) })
+ .stream().forEach(row -> {
+ String allergyId = row.split(":")[0];
+ Database.delete("child_allergy", Integer.parseInt(allergyId));
+ });
+ for (AllergySeverity allergy : child.getAllergies()) {
+ String sId = String.valueOf(child.getId());
+ String sAllergyId = String.valueOf(allergy.getAllergy().getId());
+ String sSeverityId = String.valueOf(allergy.getSeverityId());
+ String[] child_allergyD = { sId, sAllergyId, sSeverityId };
+ Database.insert("child_allergy", child_allergyH, child_allergyD);
+ }
+ return updates;
+ }
+
+ /**
+ * delete Child
+ *
+ * @author Johannes Kantz
+ */
+ protected static void deleteChildWithId(long id) {
+ Database.delete("child", id);
+ Database.select("child_allergy", new String[] { "childid" }, new String[] { String.valueOf(id) }).stream()
+ .forEach(row -> {
+ String allergyId = row.split(":")[0];
+ Database.delete("child_allergy", Integer.parseInt(allergyId));
+ });
+ }
+
+ /**
+ * returns a User(Worker | Parent) for a given id or null if no unique id was
+ * found
+ *
* @param id id of the User
* @return User(Worker | Parent) or null
* @author Malte Schulze Hobeling
*/
- protected static User getUserById(long id){
- List entry = Database.getEntryById("user",id);
- if(entry.size() != 1){
+ protected static User getUserById(long id) {
+ List entry = Database.getEntryById("user", id);
+ if (entry.size() != 1) {
return null;
}
String[] parts = entry.get(0).split(":");
Address address = getAddressById(id);
- if(isWorker(String.valueOf(id))){
- return new Worker(id,parts[1],parts[2],parts[4],parts[5],address);
- }else{
- String[] parent_childH = {"parentuserid"};
- String[] parent_childD = {String.valueOf(id)};
+ if (isWorker(String.valueOf(id))) {
+ return new Worker(id, parts[1], parts[2], parts[4], parts[5], address);
+ } else {
+ String[] parent_childH = { "parentuserid" };
+ String[] parent_childD = { String.valueOf(id) };
List children = new ArrayList<>();
- List parent_childEntries = Database.select("parent_child",parent_childH,parent_childD);
- for (String parent_childEntry: parent_childEntries) {
+ List parent_childEntries = Database.select("parent_child", parent_childH, parent_childD);
+ for (String parent_childEntry : parent_childEntries) {
String[] parent_childParts = parent_childEntry.split(":");
children.add(getChildById(Long.parseLong(parent_childParts[2])));
}
- return new Parent(id,parts[1],parts[2],parts[4],parts[5],address,children);
+ return new Parent(id, parts[1], parts[2], parts[4], parts[5], address, children);
}
}
/**
* returns a Child for a given id or null if no unique id was found
+ *
* @param id id of child
* @return Child or null
* @author Malte Schulze Hobeling
*/
- protected static Child getChildById(long id){
- List entry = Database.getEntryById("child",id);
- if(entry.size() != 1){
+ protected static Child getChildById(long id) {
+ List entry = Database.getEntryById("child", id);
+ if (entry.size() != 1) {
return null;
}
String[] parts = entry.get(0).split(":");
- String[] child_allergyH = {"childid"};
- String[] child_allergyD = {String.valueOf(id)};
- List entriesAllergy = Database.select("child_allergy",child_allergyH,child_allergyD);
+ String[] child_allergyH = { "childid" };
+ String[] child_allergyD = { String.valueOf(id) };
+ List entriesAllergy = Database.select("child_allergy", child_allergyH, child_allergyD);
List allergySeverities = new ArrayList<>();
for (String entryAllergy : entriesAllergy) {
String[] allergyParts = entryAllergy.split(":");
List severity = Database.getEntryById("severity", Long.parseLong(allergyParts[3]));
String sSeverity = severity.get(0).split(":")[1];
long lSeverity = Long.parseLong(severity.get(0).split(":")[0]);
- allergySeverities.add(new AllergySeverity(FoodMgr.getAllergyById(Long.parseLong(allergyParts[2])),lSeverity,sSeverity));
+ allergySeverities.add(
+ new AllergySeverity(FoodMgr.getAllergyById(Long.parseLong(allergyParts[2])), lSeverity, sSeverity));
}
- return new Child(id,parts[1],parts[2],getAddressById(Long.parseLong(parts[3])),allergySeverities);
+ return new Child(id, parts[1], parts[2], getAddressById(Long.parseLong(parts[3])), allergySeverities);
+ }
+
+ /**
+ * returns all Children
+ *
+ * @return {List getAllChildren() {
+ List entry = Database.getTable("child");
+ if (entry.size() < 1) {
+ return new ArrayList<>();
+ }
+ List children = new ArrayList<>();
+ for (String s : entry) {
+ String[] parts = s.split(":");
+ String[] child_allergyH = { "childid" };
+ String[] child_allergyD = { String.valueOf(parts[0]) };
+ List entriesAllergy = Database.select("child_allergy", child_allergyH, child_allergyD);
+ List allergySeverities = new ArrayList<>();
+ for (String entryAllergy : entriesAllergy) {
+ String[] allergyParts = entryAllergy.split(":");
+ List severity = Database.getEntryById("severity", Long.parseLong(allergyParts[3]));
+ String sSeverity = severity.get(0).split(":")[1];
+ long lSeverity = Long.parseLong(severity.get(0).split(":")[0]);
+ allergySeverities.add(new AllergySeverity(FoodMgr.getAllergyById(Long.parseLong(allergyParts[2])),
+ lSeverity, sSeverity));
+ }
+ children.add(new Child(Long.parseLong(parts[0]), parts[1], parts[2],
+ getAddressById(Long.parseLong(parts[3])), allergySeverities));
+ }
+ return children;
+ }
+
+ /**
+ * returns all Children from parent
+ * @param id parentid
+ * @return {List getAllChildrenFromParentWithId(long id) {
+ List entry = Database.select("parent_child", new String[] { "parentuserid" },
+ new String[] { String.valueOf(id) });
+ if (entry.size() < 1) {
+ return new ArrayList<>();
+ }
+ List childIds = new ArrayList<>();
+ for (String s : entry) {
+ String[] parts = s.split(":");
+ childIds.add(parts[2]);
+ }
+ List children = new ArrayList<>();
+ for (String s : childIds) {
+ List child = Database.getEntryById("child", Long.parseLong(s));
+ String[] parts = child.get(0).split(":");
+ String[] child_allergyH = { "childid" };
+ String[] child_allergyD = { String.valueOf(parts[0]) };
+ List entriesAllergy = Database.select("child_allergy", child_allergyH, child_allergyD);
+ List allergySeverities = new ArrayList<>();
+ for (String entryAllergy : entriesAllergy) {
+ String[] allergyParts = entryAllergy.split(":");
+ List severity = Database.getEntryById("severity", Long.parseLong(allergyParts[3]));
+ String sSeverity = severity.get(0).split(":")[1];
+ long lSeverity = Long.parseLong(severity.get(0).split(":")[0]);
+ allergySeverities.add(new AllergySeverity(FoodMgr.getAllergyById(Long.parseLong(allergyParts[2])),
+ lSeverity, sSeverity));
+ }
+ children.add(new Child(Long.parseLong(parts[0]), parts[1], parts[2],
+ getAddressById(Long.parseLong(parts[3])), allergySeverities));
+ }
+ return children;
}
/**
* returns an Address for a given id or null if no unique id was found
+ *
* @param id id of the address
* @return Address or null
* @author Malte Schulze Hobeling
*/
- protected static Address getAddressById(long id){
- List entry = Database.getEntryById("address",id);
- if(entry.size() != 1){
+ protected static Address getAddressById(long id) {
+ List entry = Database.getEntryById("address", id);
+ if (entry.size() != 1) {
return null;
}
String[] parts = entry.get(0).split(":");
- return new Address(Long.parseLong(parts[0]),parts[1],parts[2],parts[3],parts[4]);
+ return new Address(Long.parseLong(parts[0]), parts[1], parts[2], parts[3], parts[4]);
}
/**
* creates entries in the database to match parent to child
+ *
* @param parentId id of parent
- * @param childId id of child
+ * @param childId id of child
* @return id of parent_child or -1
* @author Malte Schulze Hobeling
*/
- protected static long matchParentChild(String parentId, String childId){
- String[] parent_childH = {"parentuserid","childid"};
- String[] parent_childD = {parentId,childId};
- return Database.insert("parent_child", parent_childH,parent_childD);
+ protected static long matchParentChild(String parentId, String childId) {
+ String[] parent_childH = { "parentuserid", "childid" };
+ String[] parent_childD = { parentId, childId };
+ return Database.insert("parent_child", parent_childH, parent_childD);
}
/**
* a simple login to check if a given email matches a password
+ *
* @param email email
- * @param pw password
+ * @param pw password
* @return id or -1
* @author Malte Schulze Hobeling
*/
- protected static long login(String email, String pw){
- String[] pwH = {"email"};
- String[] pwD = {email};
- List foundEmail = Database.select("user",pwH,pwD);
+ protected static long login(String email, String pw) {
+ String[] pwH = { "email" };
+ String[] pwD = { email };
+ List foundEmail = Database.select("user", pwH, pwD);
String salt;
- if(foundEmail.size() == 1){
+ if (foundEmail.size() == 1) {
String[] userParts = foundEmail.get(0).split(":");
String[] pwParts = userParts[4].split("\\.");
salt = pwParts[1];
- }else{
- //no unique user found; still calculating a hash for security reasons
+ } else {
+ // no unique user found; still calculating a hash for security reasons
salt = getSalt();
}
- String[] userH = {"email","password"};
- String[] userD = {email,hashAndSalt(pw,salt)};
- return Database.getSingleId("user",userH,userD);
+ String[] userH = { "email", "password" };
+ String[] userD = { email, hashAndSalt(pw, salt) };
+ return Database.getSingleId("user", userH, userD);
}
/**
* checks if id is in worker table
+ *
* @param id userid
* @return true if id is in worker table
* @author Malte Schulze Hobeling
*/
- protected static boolean isWorker(String id){
- String[] workerH = {"userid"};
- String[] workerD = {id};
- long workerId = Database.getSingleId("worker",workerH,workerD);
+ protected static boolean isWorker(String id) {
+ String[] workerH = { "userid" };
+ String[] workerD = { id };
+ long workerId = Database.getSingleId("worker", workerH, workerD);
return workerId > 0;
}
/**
* checks if id is in parent table
+ *
* @param id userid
* @return true if id is in parent table
* @author Malte Schulze Hobeling
*/
- protected static boolean isParent(String id){
- String[] parentH = {"userid"};
- String[] parentD = {id};
- long parentId = Database.getSingleId("parent",parentH,parentD);
+ protected static boolean isParent(String id) {
+ String[] parentH = { "userid" };
+ String[] parentD = { id };
+ long parentId = Database.getSingleId("parent", parentH, parentD);
return parentId > 0;
}
/**
* returns a hashed and salted password
+ *
* @param pw the password to hash
* @return hashed and salted password
* @author Malte Schulze Hobeling
*/
- private static String hashAndSalt(String pw, String salt){
+ private static String hashAndSalt(String pw, String salt) {
Base64.Decoder dec = Base64.getDecoder();
byte[] bySalt = dec.decode(salt);
- KeySpec spec = new PBEKeySpec(pw.toCharArray(), bySalt,310001,256);
+ KeySpec spec = new PBEKeySpec(pw.toCharArray(), bySalt, 310001, 256);
String hashedPw;
try {
SecretKeyFactory factory = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA1");
@@ -256,10 +385,11 @@ public class AccountMgr {
/**
* generates a secure random salt, Base64 encoded
+ *
* @return String Base64 encoded
* @author Malte Schulze Hobeling
*/
- private static String getSalt(){
+ private static String getSalt() {
SecureRandom sec = new SecureRandom();
byte[] salt = new byte[16];
sec.nextBytes(salt);
@@ -269,59 +399,62 @@ public class AccountMgr {
/**
* gives the invoice for one month and one child
- * @param date YYYY-MM the month
+ *
+ * @param date YYYY-MM the month
* @param childId id of child
* @return the invoice as a List
* @author Malte Schulze Hobeling
*/
- protected static List getInvoice(String date, String childId){
+ protected static List getInvoice(String date, String childId) {
List invoice = new ArrayList<>();
List child = Database.getEntryById("child", Long.parseLong(childId));
- if(child.size() != 1){
+ if (child.size() != 1) {
return invoice;
}
invoice.add("Monatsabrechnung " + date);
String[] childParts = child.get(0).split(":");
invoice.add(childParts[1] + ", " + childParts[2]);
- String[] food_planH = {"date"};
- String[] food_planD = {date+"%"};
- List food_plan = Database.select("food_plan",food_planH,food_planD);
+ String[] food_planH = { "date" };
+ String[] food_planD = { date + "%" };
+ List food_plan = Database.select("food_plan", food_planH, food_planD);
for (String day : food_plan) {
String[] food_planParts = day.split(":");
- String[] food_selectionH = {"childid","food_planid"};
- String[] food_selectionD = {childId,food_planParts[0]};
- List food_selection = Database.select("food_selection",food_selectionH,food_selectionD);
+ String[] food_selectionH = { "childid", "food_planid" };
+ String[] food_selectionD = { childId, food_planParts[0] };
+ List food_selection = Database.select("food_selection", food_selectionH, food_selectionD);
for (String food_select : food_selection) {
String[] food_selectParts = food_select.split(":");
- List food = Database.getEntryById("food",Long.parseLong(food_selectParts[3]));
+ List food = Database.getEntryById("food", Long.parseLong(food_selectParts[3]));
String[] foodParts = food.get(0).split(":");
String line = food_planParts[1] + ": " + foodParts[1];
invoice.add(line);
}
}
double price = getPrice();
- invoice.add("Total: " + (invoice.size()-2) + " X " + price + "€ = " + ((invoice.size()-2)*price) + "€");
+ invoice.add("Total: " + (invoice.size() - 2) + " X " + price + "€ = " + ((invoice.size() - 2) * price) + "€");
return invoice;
}
/**
* gets the price per meal from the database and converts it to double
+ *
* @return double price
* @author Malte Schulze Hobeling
*/
- protected static double getPrice(){
- List priceEntry = Database.getEntryById("price",1);
- return Double.parseDouble(priceEntry.get(0).split(":")[1])/100.0;
+ protected static double getPrice() {
+ List priceEntry = Database.getEntryById("price", 1);
+ return Double.parseDouble(priceEntry.get(0).split(":")[1]) / 100.0;
}
/**
* converts the price per meal to integer and updates it in the database
+ *
* @param price double
* @author Malte Schulze Hobeling
*/
- protected static void setPrice(double price){
- String[] priceH = {"id","price"};
- String[] priceD = {"1", String.valueOf((int)(price*100))};
- Database.update("price",priceH,priceD);
+ protected static void setPrice(double price) {
+ String[] priceH = { "id", "price" };
+ String[] priceD = { "1", String.valueOf((int) (price * 100)) };
+ Database.update("price", priceH, priceD);
}
}
diff --git a/src/main/java/com/bib/essensbestellungsverwaltung/ChildController.java b/src/main/java/com/bib/essensbestellungsverwaltung/ChildController.java
new file mode 100644
index 0000000..ad3f6cc
--- /dev/null
+++ b/src/main/java/com/bib/essensbestellungsverwaltung/ChildController.java
@@ -0,0 +1,141 @@
+package com.bib.essensbestellungsverwaltung;
+
+import javafx.collections.FXCollections;
+import javafx.collections.ObservableList;
+import javafx.event.ActionEvent;
+import javafx.fxml.FXML;
+import javafx.scene.control.*;
+import org.controlsfx.control.CheckComboBox;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class ChildController {
+ public TextField firstName;
+ public ChoiceBox childChoiceBox;
+ public TextField lastName;
+ public Button kindHinzufügenButton;
+ public CheckComboBox allergienComboBox;
+ public Button kindLoeschenButton;
+
+ private Child currentChild = null;
+
+ private long selectedChildId;
+
+ @FXML
+ public void initialize() {
+ kindLoeschenButton.setDisable(true);
+ updateChildChoiceBoxItems();
+
+ List a = Database.getTable("allergy");
+ ObservableList allergies = FXCollections.observableArrayList();
+ for (String allergie : a) {
+ allergies.add(allergie.split(":")[0] + ": " + allergie.split(":")[1]);
+ }
+ allergienComboBox.getItems().addAll(allergies);
+ }
+
+ public void onSelectChild(ActionEvent mouseEvent) {
+ selectedChildId = Integer.parseInt(childChoiceBox.getValue().toString().split(":")[0]);
+ System.out.println("Selected Child: " + selectedChildId);
+
+ clearInputs();
+
+ if(selectedChildId == 0) {
+ kindHinzufügenButton.setText("Kind Hinzufügen");
+ kindLoeschenButton.setDisable(true);
+ return;
+ }
+
+ // Get selected child and update fields
+ currentChild = AccountMgr.getChildById(selectedChildId);
+ firstName.setText(currentChild.getFirstname());
+ lastName.setText(currentChild.getName());
+ for (AllergySeverity a : currentChild.getAllergies()){
+ allergienComboBox.getCheckModel().check((int) a.getAllergy().getId() - 1);
+ }
+ kindHinzufügenButton.setText("Kind updaten");
+ kindLoeschenButton.setDisable(false);
+ }
+
+ public void onKindHinzufügen(ActionEvent actionEvent) {
+ if(childChoiceBox.getValue() == null){
+ Alert alert = new Alert(Alert.AlertType.ERROR);
+ alert.setTitle("Ungültige Eingabe");
+ alert.setHeaderText("Sie müssen ein Kind auswählen");
+ alert.showAndWait();
+ return;
+ }
+
+ if(lastName.getText().isBlank() || firstName.getText().isBlank()){
+ Alert alert = new Alert(Alert.AlertType.ERROR);
+ alert.setTitle("Ungültige Eingabe");
+ alert.setHeaderText("Es wurden nicht alle Felder ausgefüllt");
+ alert.showAndWait();
+ return;
+ }
+
+ Address adress = AccountMgr.currentUser.getAddress();
+ List allergies = new ArrayList<>();
+ allergienComboBox.getCheckModel().getCheckedItems().stream().forEach(a -> {
+ long id = Integer.parseInt(a.toString().split(":")[0]);
+ String name = a.toString().split(":")[1].trim();
+ // TODO: Allergy Severity
+ allergies.add(new AllergySeverity(new Allergy(id, name, ""), 2, null));
+ });
+
+ if(selectedChildId == 0){
+ long id = AccountMgr.createChild(new Child(lastName.getText(), firstName.getText(), adress, allergies));
+ System.out.println("Child created: " + id);
+
+ if(id <= 0){
+ Alert alert = new Alert(Alert.AlertType.ERROR);
+ alert.setTitle("Es ist ein fehler beim erstellen des Kinds aufgetreten");
+ alert.showAndWait();
+ return;
+ }
+ AccountMgr.matchParentChild(String.valueOf(AccountMgr.currentUser.getId()), String.valueOf(id));
+
+ childChoiceBox.getItems().add(id + ": " + firstName.getText() + " " + lastName.getText());
+ childChoiceBox.setValue(childChoiceBox.getItems().get(childChoiceBox.getItems().size() - 1));
+ clearInputs();
+ onSelectChild(null);
+
+ Alert alert = new Alert(Alert.AlertType.CONFIRMATION);
+ alert.setTitle("Kind erstellt");
+ alert.setHeaderText("Es wurde ein Kind erstellt");
+ alert.showAndWait();
+ }else {
+ long id = AccountMgr.updateChild(new Child(currentChild.getId(), lastName.getText(), firstName.getText(), adress, allergies));
+ System.out.println("Updated Child: " + id);
+ }
+ }
+
+ private void clearInputs(){
+ firstName.setText("");
+ lastName.setText("");
+ allergienComboBox.getCheckModel().clearChecks();
+ }
+
+ public void updateChildChoiceBoxItems(){
+ List childList = AccountMgr.getAllChildrenFromParentWithId(AccountMgr.currentUser.getId());
+
+ ObservableList