Compare commits
43 Commits
Author | SHA1 | Date | |
---|---|---|---|
02b578a7ce | |||
04285ed7b7 | |||
87fa0f9b69 | |||
c3b47d5c36 | |||
58f61a71c2 | |||
7b7889fee4 | |||
a4ce206ec4 | |||
a03a294260 | |||
a7b192f256 | |||
|
3a2288f8c8 | ||
|
6ca54aa026 | ||
6fc28a0827 | |||
13bc9ae1dd | |||
|
f64dc7751f | ||
|
30cc971aa2 | ||
|
2475547787 | ||
|
166e516c67 | ||
|
57b5301208 | ||
|
1dadd23ffb | ||
|
941e76e05b | ||
|
b66cb3e9bc | ||
|
c4e720b9f3 | ||
|
47905bc8d0 | ||
|
c49d3cb699 | ||
|
e33e3d8ccb | ||
|
4c9a3343d2 | ||
|
745eddea31 | ||
|
cd8e4c9b3d | ||
|
b37cd2ad38 | ||
|
5f5480bf5c | ||
|
07050a5809 | ||
|
944ddbff60 | ||
|
7534df3263 | ||
|
9d3e035a20 | ||
|
e87c7b480a | ||
|
681f039b5c | ||
0fed0fb12b | |||
dbe98686bd | |||
106b97e105 | |||
d2df46eaa6 | |||
3643f44afb | |||
c022d68b92 | |||
b9101e4a55 |
4
.gitignore
vendored
4
.gitignore
vendored
@ -8,7 +8,6 @@ target/
|
||||
.idea/jarRepositories.xml
|
||||
.idea/compiler.xml
|
||||
.idea/libraries/
|
||||
.idea
|
||||
*.iws
|
||||
*.iml
|
||||
*.ipr
|
||||
@ -37,3 +36,6 @@ build/
|
||||
|
||||
### Mac OS ###
|
||||
.DS_Store
|
||||
|
||||
/database.db
|
||||
/Rechnungen/**
|
3
.idea/.gitignore
vendored
3
.idea/.gitignore
vendored
@ -1,3 +0,0 @@
|
||||
# Default ignored files
|
||||
/shelf/
|
||||
/workspace.xml
|
@ -1,7 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="Encoding">
|
||||
<file url="file://$PROJECT_DIR$/src/main/java" charset="UTF-8" />
|
||||
<file url="file://$PROJECT_DIR$/src/main/resources" charset="UTF-8" />
|
||||
</component>
|
||||
</project>
|
@ -1,12 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ExternalStorageConfigurationManager" enabled="true" />
|
||||
<component name="MavenProjectsManager">
|
||||
<option name="originalFiles">
|
||||
<list>
|
||||
<option value="$PROJECT_DIR$/pom.xml" />
|
||||
</list>
|
||||
</option>
|
||||
</component>
|
||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_19" default="true" project-jdk-name="openjdk-19" project-jdk-type="JavaSDK" />
|
||||
</project>
|
File diff suppressed because one or more lines are too long
@ -1,4 +0,0 @@
|
||||
<changelist name="Uncommitted_changes_before_Update_at_30_01_2023_14_48_[Changes]" date="1675086496793" recycled="true" deleted="true">
|
||||
<option name="PATH" value="$PROJECT_DIR$/.idea/shelf/Uncommitted_changes_before_Update_at_30_01_2023_14_48_[Changes]/shelved.patch" />
|
||||
<option name="DESCRIPTION" value="Uncommitted changes before Update at 30.01.2023 14:48 [Changes]" />
|
||||
</changelist>
|
@ -1,124 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="Palette2">
|
||||
<group name="Swing">
|
||||
<item class="com.intellij.uiDesigner.HSpacer" tooltip-text="Horizontal Spacer" icon="/com/intellij/uiDesigner/icons/hspacer.svg" removable="false" auto-create-binding="false" can-attach-label="false">
|
||||
<default-constraints vsize-policy="1" hsize-policy="6" anchor="0" fill="1" />
|
||||
</item>
|
||||
<item class="com.intellij.uiDesigner.VSpacer" tooltip-text="Vertical Spacer" icon="/com/intellij/uiDesigner/icons/vspacer.svg" removable="false" auto-create-binding="false" can-attach-label="false">
|
||||
<default-constraints vsize-policy="6" hsize-policy="1" anchor="0" fill="2" />
|
||||
</item>
|
||||
<item class="javax.swing.JPanel" icon="/com/intellij/uiDesigner/icons/panel.svg" removable="false" auto-create-binding="false" can-attach-label="false">
|
||||
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3" />
|
||||
</item>
|
||||
<item class="javax.swing.JScrollPane" icon="/com/intellij/uiDesigner/icons/scrollPane.svg" removable="false" auto-create-binding="false" can-attach-label="true">
|
||||
<default-constraints vsize-policy="7" hsize-policy="7" anchor="0" fill="3" />
|
||||
</item>
|
||||
<item class="javax.swing.JButton" icon="/com/intellij/uiDesigner/icons/button.svg" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||
<default-constraints vsize-policy="0" hsize-policy="3" anchor="0" fill="1" />
|
||||
<initial-values>
|
||||
<property name="text" value="Button" />
|
||||
</initial-values>
|
||||
</item>
|
||||
<item class="javax.swing.JRadioButton" icon="/com/intellij/uiDesigner/icons/radioButton.svg" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||
<default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
|
||||
<initial-values>
|
||||
<property name="text" value="RadioButton" />
|
||||
</initial-values>
|
||||
</item>
|
||||
<item class="javax.swing.JCheckBox" icon="/com/intellij/uiDesigner/icons/checkBox.svg" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||
<default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
|
||||
<initial-values>
|
||||
<property name="text" value="CheckBox" />
|
||||
</initial-values>
|
||||
</item>
|
||||
<item class="javax.swing.JLabel" icon="/com/intellij/uiDesigner/icons/label.svg" removable="false" auto-create-binding="false" can-attach-label="false">
|
||||
<default-constraints vsize-policy="0" hsize-policy="0" anchor="8" fill="0" />
|
||||
<initial-values>
|
||||
<property name="text" value="Label" />
|
||||
</initial-values>
|
||||
</item>
|
||||
<item class="javax.swing.JTextField" icon="/com/intellij/uiDesigner/icons/textField.svg" removable="false" auto-create-binding="true" can-attach-label="true">
|
||||
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
|
||||
<preferred-size width="150" height="-1" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JPasswordField" icon="/com/intellij/uiDesigner/icons/passwordField.svg" removable="false" auto-create-binding="true" can-attach-label="true">
|
||||
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
|
||||
<preferred-size width="150" height="-1" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JFormattedTextField" icon="/com/intellij/uiDesigner/icons/formattedTextField.svg" removable="false" auto-create-binding="true" can-attach-label="true">
|
||||
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
|
||||
<preferred-size width="150" height="-1" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JTextArea" icon="/com/intellij/uiDesigner/icons/textArea.svg" removable="false" auto-create-binding="true" can-attach-label="true">
|
||||
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
|
||||
<preferred-size width="150" height="50" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JTextPane" icon="/com/intellij/uiDesigner/icons/textPane.svg" removable="false" auto-create-binding="true" can-attach-label="true">
|
||||
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
|
||||
<preferred-size width="150" height="50" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JEditorPane" icon="/com/intellij/uiDesigner/icons/editorPane.svg" removable="false" auto-create-binding="true" can-attach-label="true">
|
||||
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
|
||||
<preferred-size width="150" height="50" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JComboBox" icon="/com/intellij/uiDesigner/icons/comboBox.svg" removable="false" auto-create-binding="true" can-attach-label="true">
|
||||
<default-constraints vsize-policy="0" hsize-policy="2" anchor="8" fill="1" />
|
||||
</item>
|
||||
<item class="javax.swing.JTable" icon="/com/intellij/uiDesigner/icons/table.svg" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
|
||||
<preferred-size width="150" height="50" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JList" icon="/com/intellij/uiDesigner/icons/list.svg" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||
<default-constraints vsize-policy="6" hsize-policy="2" anchor="0" fill="3">
|
||||
<preferred-size width="150" height="50" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JTree" icon="/com/intellij/uiDesigner/icons/tree.svg" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
|
||||
<preferred-size width="150" height="50" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JTabbedPane" icon="/com/intellij/uiDesigner/icons/tabbedPane.svg" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
|
||||
<preferred-size width="200" height="200" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JSplitPane" icon="/com/intellij/uiDesigner/icons/splitPane.svg" removable="false" auto-create-binding="false" can-attach-label="false">
|
||||
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
|
||||
<preferred-size width="200" height="200" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JSpinner" icon="/com/intellij/uiDesigner/icons/spinner.svg" removable="false" auto-create-binding="true" can-attach-label="true">
|
||||
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
|
||||
</item>
|
||||
<item class="javax.swing.JSlider" icon="/com/intellij/uiDesigner/icons/slider.svg" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
|
||||
</item>
|
||||
<item class="javax.swing.JSeparator" icon="/com/intellij/uiDesigner/icons/separator.svg" removable="false" auto-create-binding="false" can-attach-label="false">
|
||||
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3" />
|
||||
</item>
|
||||
<item class="javax.swing.JProgressBar" icon="/com/intellij/uiDesigner/icons/progressbar.svg" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||
<default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1" />
|
||||
</item>
|
||||
<item class="javax.swing.JToolBar" icon="/com/intellij/uiDesigner/icons/toolbar.svg" removable="false" auto-create-binding="false" can-attach-label="false">
|
||||
<default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1">
|
||||
<preferred-size width="-1" height="20" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JToolBar$Separator" icon="/com/intellij/uiDesigner/icons/toolbarSeparator.svg" removable="false" auto-create-binding="false" can-attach-label="false">
|
||||
<default-constraints vsize-policy="0" hsize-policy="0" anchor="0" fill="1" />
|
||||
</item>
|
||||
<item class="javax.swing.JScrollBar" icon="/com/intellij/uiDesigner/icons/scrollbar.svg" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||
<default-constraints vsize-policy="6" hsize-policy="0" anchor="0" fill="2" />
|
||||
</item>
|
||||
</group>
|
||||
</component>
|
||||
</project>
|
@ -1,6 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="VcsDirectoryMappings">
|
||||
<mapping directory="" vcs="Git" />
|
||||
</component>
|
||||
</project>
|
@ -1,147 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="AutoImportSettings">
|
||||
<option name="autoReloadType" value="SELECTIVE" />
|
||||
</component>
|
||||
<component name="ChangeListManager">
|
||||
<list default="true" id="be8f30d3-089d-4d1c-bba3-da21b0466111" name="Changes" comment="Variablen und Attributen auf englisch umbennent">
|
||||
<change afterPath="$PROJECT_DIR$/src/main/java/com/bib/essensbestellungsverwaltung/SettingsController.java" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/database.db" beforeDir="false" afterPath="$PROJECT_DIR$/database.db" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/main/java/com/bib/essensbestellungsverwaltung/AccountMgr.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/bib/essensbestellungsverwaltung/AccountMgr.java" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/main/java/com/bib/essensbestellungsverwaltung/ParentController.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/bib/essensbestellungsverwaltung/ParentController.java" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/main/java/com/bib/essensbestellungsverwaltung/StartViewApplication.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/bib/essensbestellungsverwaltung/StartViewApplication.java" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/main/java/com/bib/essensbestellungsverwaltung/User.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/bib/essensbestellungsverwaltung/User.java" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/main/resources/com/bib/essensbestellungsverwaltung/child-view.fxml" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/resources/com/bib/essensbestellungsverwaltung/child-view.fxml" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/main/resources/com/bib/essensbestellungsverwaltung/hello-view.fxml" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/main/resources/com/bib/essensbestellungsverwaltung/parentMenue-view.fxml" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/resources/com/bib/essensbestellungsverwaltung/parentMenue-view.fxml" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/main/resources/com/bib/essensbestellungsverwaltung/settingsMenue.fxml" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/resources/com/bib/essensbestellungsverwaltung/settingsMenue.fxml" afterDir="false" />
|
||||
</list>
|
||||
<option name="SHOW_DIALOG" value="false" />
|
||||
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
||||
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
|
||||
<option name="LAST_RESOLUTION" value="IGNORE" />
|
||||
</component>
|
||||
<component name="FileTemplateManagerImpl">
|
||||
<option name="RECENT_TEMPLATES">
|
||||
<list>
|
||||
<option value="Class" />
|
||||
</list>
|
||||
</option>
|
||||
</component>
|
||||
<component name="Git.Settings">
|
||||
<option name="RECENT_BRANCH_BY_REPOSITORY">
|
||||
<map>
|
||||
<entry key="$PROJECT_DIR$" value="Richards_Branch" />
|
||||
</map>
|
||||
</option>
|
||||
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
|
||||
</component>
|
||||
<component name="HighlightingSettingsPerFile">
|
||||
<setting file="file://$PROJECT_DIR$/src/main/resources/com/bib/essensbestellungsverwaltung/signUp-view.fxml" root0="FORCE_HIGHLIGHTING" />
|
||||
</component>
|
||||
<component name="MarkdownSettingsMigration">
|
||||
<option name="stateVersion" value="1" />
|
||||
</component>
|
||||
<component name="MavenImportPreferences">
|
||||
<option name="generalSettings">
|
||||
<MavenGeneralSettings>
|
||||
<option name="mavenHome" value="Use Maven wrapper" />
|
||||
<option name="useMavenConfig" value="true" />
|
||||
</MavenGeneralSettings>
|
||||
</option>
|
||||
</component>
|
||||
<component name="ProjectId" id="2L2y55tSt0XlzQa7s1gkzyAgxgu" />
|
||||
<component name="ProjectLevelVcsManager" settingsEditedManually="true" />
|
||||
<component name="ProjectViewState">
|
||||
<option name="hideEmptyMiddlePackages" value="true" />
|
||||
<option name="showLibraryContents" value="true" />
|
||||
</component>
|
||||
<component name="PropertiesComponent">{
|
||||
"keyToString": {
|
||||
"ASKED_ADD_EXTERNAL_FILES": "true",
|
||||
"ASKED_SHARE_PROJECT_CONFIGURATION_FILES": "true",
|
||||
"RunOnceActivity.OpenProjectViewOnStart": "true",
|
||||
"RunOnceActivity.ShowReadmeOnStart": "true"
|
||||
}
|
||||
}</component>
|
||||
<component name="RunManager">
|
||||
<configuration name="SuperMain" type="Application" factoryName="Application" temporary="true" nameIsGenerated="true">
|
||||
<option name="MAIN_CLASS_NAME" value="com.bib.essensbestellungsverwaltung.SuperMain" />
|
||||
<module name="Essensbestellungsverwaltung" />
|
||||
<extension name="coverage">
|
||||
<pattern>
|
||||
<option name="PATTERN" value="com.bib.essensbestellungsverwaltung.*" />
|
||||
<option name="ENABLED" value="true" />
|
||||
</pattern>
|
||||
</extension>
|
||||
<method v="2">
|
||||
<option name="Make" enabled="true" />
|
||||
</method>
|
||||
</configuration>
|
||||
<recent_temporary>
|
||||
<list>
|
||||
<item itemvalue="Application.SuperMain" />
|
||||
<item itemvalue="Application.SuperMain" />
|
||||
</list>
|
||||
</recent_temporary>
|
||||
</component>
|
||||
<component name="SpellCheckerSettings" RuntimeDictionaries="0" Folders="0" CustomDictionaries="0" DefaultDictionary="application-level" UseSingleDictionary="true" transferred="true" />
|
||||
<component name="TaskManager">
|
||||
<task active="true" id="Default" summary="Default task">
|
||||
<changelist id="be8f30d3-089d-4d1c-bba3-da21b0466111" name="Changes" comment="" />
|
||||
<created>1675083287293</created>
|
||||
<option name="number" value="Default" />
|
||||
<option name="presentableId" value="Default" />
|
||||
<updated>1675083287293</updated>
|
||||
</task>
|
||||
<task id="LOCAL-00001" summary="StartViewApplication ist die Startpunkt des Projekt">
|
||||
<created>1675083679870</created>
|
||||
<option name="number" value="00001" />
|
||||
<option name="presentableId" value="LOCAL-00001" />
|
||||
<option name="project" value="LOCAL" />
|
||||
<updated>1675083679870</updated>
|
||||
</task>
|
||||
<task id="LOCAL-00002" summary="StartViewApplication ist die Startpunkt des Projekt">
|
||||
<created>1675083693484</created>
|
||||
<option name="number" value="00002" />
|
||||
<option name="presentableId" value="LOCAL-00002" />
|
||||
<option name="project" value="LOCAL" />
|
||||
<updated>1675083693484</updated>
|
||||
</task>
|
||||
<task id="LOCAL-00003" summary="singup mit Datebase verbunden und new Adresse">
|
||||
<created>1675241335793</created>
|
||||
<option name="number" value="00003" />
|
||||
<option name="presentableId" value="LOCAL-00003" />
|
||||
<option name="project" value="LOCAL" />
|
||||
<updated>1675241335793</updated>
|
||||
</task>
|
||||
<task id="LOCAL-00004" summary="Variablen und Attributen auf englisch umbennent">
|
||||
<created>1675606671743</created>
|
||||
<option name="number" value="00004" />
|
||||
<option name="presentableId" value="LOCAL-00004" />
|
||||
<option name="project" value="LOCAL" />
|
||||
<updated>1675606671743</updated>
|
||||
</task>
|
||||
<option name="localTasksCounter" value="5" />
|
||||
<servers />
|
||||
</component>
|
||||
<component name="Vcs.Log.Tabs.Properties">
|
||||
<option name="TAB_STATES">
|
||||
<map>
|
||||
<entry key="MAIN">
|
||||
<value>
|
||||
<State />
|
||||
</value>
|
||||
</entry>
|
||||
</map>
|
||||
</option>
|
||||
</component>
|
||||
<component name="VcsManagerConfiguration">
|
||||
<MESSAGE value="StartViewApplication ist die Startpunkt des Projekt" />
|
||||
<MESSAGE value="singup mit Datebase verbunden" />
|
||||
<MESSAGE value="singup mit Datebase verbunden und new Adresse" />
|
||||
<MESSAGE value="Variablen und Attributen auf englisch umbennent" />
|
||||
<option name="LAST_COMMIT_MESSAGE" value="Variablen und Attributen auf englisch umbennent" />
|
||||
</component>
|
||||
</project>
|
BIN
database.db
BIN
database.db
Binary file not shown.
5
pom.xml
5
pom.xml
@ -45,6 +45,11 @@
|
||||
<artifactId>sqlite-jdbc</artifactId>
|
||||
<version>3.40.0.0</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.controlsfx</groupId>
|
||||
<artifactId>controlsfx</artifactId>
|
||||
<version>11.1.2</version>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
||||
|
12
readme.md
12
readme.md
@ -1,3 +1,13 @@
|
||||
# Essensbestellungsverwaltung
|
||||
|
||||
stable ist der neue main
|
||||
---
|
||||
|
||||
### 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
|
||||
|
@ -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,189 +22,443 @@ 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<String> entry = Database.getEntryById("user",id);
|
||||
if(entry.size() != 1){
|
||||
protected static User getUserById(long id) {
|
||||
List<String> 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<Child> children = new ArrayList<>();
|
||||
List<String> parent_childEntries = Database.select("parent_child",parent_childH,parent_childD);
|
||||
for (String parent_childEntry: parent_childEntries) {
|
||||
List<String> 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<String> entry = Database.getEntryById("child",id);
|
||||
if(entry.size() != 1){
|
||||
protected static Child getChildById(long id) {
|
||||
List<String> 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<String> entriesAllergy = Database.select("child_allergy",child_allergyH,child_allergyD);
|
||||
String[] child_allergyH = { "childid" };
|
||||
String[] child_allergyD = { String.valueOf(id) };
|
||||
List<String> entriesAllergy = Database.select("child_allergy", child_allergyH, child_allergyD);
|
||||
List<AllergySeverity> allergySeverities = new ArrayList<>();
|
||||
for (String entryAllergy : entriesAllergy) {
|
||||
String[] allergyParts = entryAllergy.split(":");
|
||||
List<String> 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<Child} List with Childen or empty List
|
||||
* @author Johannes Kantz
|
||||
*/
|
||||
protected static List<Child> getAllChildren() {
|
||||
List<String> entry = Database.getTable("child");
|
||||
if (entry.size() < 1) {
|
||||
return new ArrayList<>();
|
||||
}
|
||||
List<Child> children = new ArrayList<>();
|
||||
for (String s : entry) {
|
||||
String[] parts = s.split(":");
|
||||
String[] child_allergyH = { "childid" };
|
||||
String[] child_allergyD = { String.valueOf(parts[0]) };
|
||||
List<String> entriesAllergy = Database.select("child_allergy", child_allergyH, child_allergyD);
|
||||
List<AllergySeverity> allergySeverities = new ArrayList<>();
|
||||
for (String entryAllergy : entriesAllergy) {
|
||||
String[] allergyParts = entryAllergy.split(":");
|
||||
List<String> 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<Child} List with Childen or empty List
|
||||
* @author Johannes Kantz
|
||||
*/
|
||||
protected static List<Child> getAllChildrenFromParentWithId(long id) {
|
||||
List<String> entry = Database.select("parent_child", new String[] { "parentuserid" },
|
||||
new String[] { String.valueOf(id) });
|
||||
if (entry.size() < 1) {
|
||||
return new ArrayList<>();
|
||||
}
|
||||
List<String> childIds = new ArrayList<>();
|
||||
for (String s : entry) {
|
||||
String[] parts = s.split(":");
|
||||
childIds.add(parts[2]);
|
||||
}
|
||||
List<Child> children = new ArrayList<>();
|
||||
for (String s : childIds) {
|
||||
List<String> 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<String> entriesAllergy = Database.select("child_allergy", child_allergyH, child_allergyD);
|
||||
List<AllergySeverity> allergySeverities = new ArrayList<>();
|
||||
for (String entryAllergy : entriesAllergy) {
|
||||
String[] allergyParts = entryAllergy.split(":");
|
||||
List<String> 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<String> entry = Database.getEntryById("address",id);
|
||||
if(entry.size() != 1){
|
||||
protected static Address getAddressById(long id) {
|
||||
List<String> 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<String> foundEmail = Database.select("user",pwH,pwD);
|
||||
protected static long login(String email, String pw) {
|
||||
String[] pwH = { "email" };
|
||||
String[] pwD = { email };
|
||||
List<String> 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);
|
||||
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);
|
||||
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) {
|
||||
Base64.Decoder dec = Base64.getDecoder();
|
||||
byte[] bySalt = dec.decode(salt);
|
||||
KeySpec spec = new PBEKeySpec(pw.toCharArray(), bySalt, 310001, 256);
|
||||
String hashedPw;
|
||||
try {
|
||||
SecretKeyFactory factory = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA1");
|
||||
byte[] hash = factory.generateSecret(spec).getEncoded();
|
||||
Base64.Encoder enc = Base64.getEncoder();
|
||||
hashedPw = enc.encodeToString(hash);
|
||||
} catch (InvalidKeySpecException | NoSuchAlgorithmException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
hashedPw += "." + salt;
|
||||
return hashedPw;
|
||||
}
|
||||
|
||||
/**
|
||||
* generates a secure random salt, Base64 encoded
|
||||
*
|
||||
* @return String Base64 encoded
|
||||
* @author Malte Schulze Hobeling
|
||||
*/
|
||||
private static String getSalt() {
|
||||
SecureRandom sec = new SecureRandom();
|
||||
byte[] salt = new byte[16];
|
||||
sec.nextBytes(salt);
|
||||
Base64.Encoder enc = Base64.getEncoder();
|
||||
return enc.encodeToString(salt);
|
||||
}
|
||||
|
||||
/**
|
||||
* gives the invoice for one month and one child
|
||||
*
|
||||
* @param date YYYY-MM the month
|
||||
* @param childId id of child
|
||||
* @return the invoice as a List
|
||||
* @author Malte Schulze Hobeling
|
||||
*/
|
||||
protected static List<String> getInvoice(String date, String childId) {
|
||||
List<String> invoice = new ArrayList<>();
|
||||
List<String> child = Database.getEntryById("child", Long.parseLong(childId));
|
||||
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<String> 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<String> food_selection = Database.select("food_selection", food_selectionH, food_selectionD);
|
||||
for (String food_select : food_selection) {
|
||||
String[] food_selectParts = food_select.split(":");
|
||||
List<String> 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) + "€");
|
||||
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<String> 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);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* update password in User table
|
||||
* @param password User
|
||||
@ -229,125 +484,4 @@ public class AccountMgr {
|
||||
long updates = Database.update("user",adH,adD);
|
||||
return updates;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 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);
|
||||
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);
|
||||
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){
|
||||
Base64.Decoder dec = Base64.getDecoder();
|
||||
byte[] bySalt = dec.decode(salt);
|
||||
KeySpec spec = new PBEKeySpec(pw.toCharArray(), bySalt,310001,256);
|
||||
String hashedPw;
|
||||
try {
|
||||
SecretKeyFactory factory = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA1");
|
||||
byte[] hash = factory.generateSecret(spec).getEncoded();
|
||||
Base64.Encoder enc = Base64.getEncoder();
|
||||
hashedPw = enc.encodeToString(hash);
|
||||
} catch (InvalidKeySpecException | NoSuchAlgorithmException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
hashedPw += "." + salt;
|
||||
return hashedPw;
|
||||
}
|
||||
|
||||
/**
|
||||
* generates a secure random salt, Base64 encoded
|
||||
* @return String Base64 encoded
|
||||
* @author Malte Schulze Hobeling
|
||||
*/
|
||||
private static String getSalt(){
|
||||
SecureRandom sec = new SecureRandom();
|
||||
byte[] salt = new byte[16];
|
||||
sec.nextBytes(salt);
|
||||
Base64.Encoder enc = Base64.getEncoder();
|
||||
return enc.encodeToString(salt);
|
||||
}
|
||||
|
||||
/**
|
||||
* gives the invoice for one month and one child
|
||||
* @param date YYYY-MM the month
|
||||
* @param childId id of child
|
||||
* @return the invoice as a List
|
||||
* @author Malte Schulze Hobeling
|
||||
*/
|
||||
protected static List<String> getInvoice(String date, String childId){
|
||||
List<String> invoice = new ArrayList<>();
|
||||
List<String> child = Database.getEntryById("child", Long.parseLong(childId));
|
||||
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<String> 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<String> food_selection = Database.select("food_selection",food_selectionH,food_selectionD);
|
||||
for (String food_select : food_selection) {
|
||||
String[] food_selectParts = food_select.split(":");
|
||||
List<String> 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) + "€");
|
||||
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<String> 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);
|
||||
}
|
||||
}
|
||||
|
@ -46,5 +46,4 @@ public class Address {
|
||||
this.plz = plz;
|
||||
this.city = city;
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -1,3 +1,5 @@
|
||||
/*Schulte*/
|
||||
|
||||
package com.bib.essensbestellungsverwaltung;
|
||||
|
||||
import javafx.fxml.FXML;
|
||||
@ -29,9 +31,6 @@ public class AdminController {
|
||||
@FXML
|
||||
protected void onBtSignUp(){
|
||||
|
||||
|
||||
|
||||
|
||||
String ln = lastname.getText();
|
||||
String fn = firstname.getText();
|
||||
String st = street.getText();
|
||||
@ -41,6 +40,21 @@ public class AdminController {
|
||||
String emailString = email.getText();
|
||||
String pw = password.getText();
|
||||
|
||||
boolean userData = false;
|
||||
boolean pwCorrect = false;
|
||||
boolean emailCorrect = false;
|
||||
|
||||
|
||||
if(ln.isEmpty() || fn.isEmpty() || st.isEmpty() ||nr.isEmpty() || cityString.isEmpty() || plzString.isEmpty()){
|
||||
Alert alert = new Alert(Alert.AlertType.ERROR);
|
||||
alert.setTitle("Felder");
|
||||
alert.setHeaderText("Felder nicht ausgefüllt");
|
||||
alert.setContentText("Bitte füllen sie alle Felder aus");
|
||||
alert.showAndWait();
|
||||
}
|
||||
else {
|
||||
userData = true;
|
||||
}
|
||||
|
||||
|
||||
if(!pw.matches("^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%^&+=])(?=\\S+$).{8,}$")){
|
||||
@ -50,32 +64,57 @@ public class AdminController {
|
||||
alert.setHeaderText("Ungültiges Passwort");
|
||||
alert.setContentText("Das Passwort benötigt mindestens: \n-8 Zeichen\n-einen Kleinbuchstaben\n-einen Großbuchstaben\n-ein Sonderzeichen\n-kein Leerzeichen");
|
||||
password.setText("");
|
||||
alert.showAndWait();
|
||||
}
|
||||
else {
|
||||
pwCorrect = true;
|
||||
}
|
||||
|
||||
if(!emailString.matches("^(?=.{1,64}@)[A-Za-z0-9_-]+(\\\\.[A-Za-z0-9_-]+)*@[^-][A-Za-z0-9-]+(\\\\.[A-Za-z0-9-]+)*(\\\\.[A-Za-z]{2,})$")){
|
||||
if(!emailString.matches("^(.+)@(\\S+)$")){
|
||||
Alert alert = new Alert(Alert.AlertType.ERROR);
|
||||
alert.setTitle("E-Mail");
|
||||
alert.setHeaderText("Ungültige E-Mail Adresse");
|
||||
alert.setContentText("Bitte geben sie eine gültige E-Mail Adresse an");
|
||||
email.setText("");
|
||||
alert.showAndWait();
|
||||
}
|
||||
else{
|
||||
emailCorrect = true;
|
||||
}
|
||||
|
||||
//String[] userData = new String[]{ln,fn,pw,emailString};
|
||||
//String[] addressData = new String[]{st,nr,plzString,cityString};
|
||||
|
||||
Address address = new Address(st,nr,plzString,cityString);
|
||||
|
||||
Worker worker = new Worker(ln,fn,pw,emailString,address);
|
||||
if(emailCorrect && pwCorrect && userData) {
|
||||
Address address = new Address(st, nr, plzString, cityString);
|
||||
Worker worker = new Worker(ln, fn, pw, emailString, address);
|
||||
|
||||
AccountMgr.createWorker(worker);
|
||||
|
||||
System.out.println(AccountMgr.createWorker(worker));
|
||||
|
||||
Alert alert = new Alert(Alert.AlertType.INFORMATION);
|
||||
alert.setTitle("Bestätigung");
|
||||
alert.setHeaderText("Bestätigung");
|
||||
alert.setContentText("Mitarbeiter " + fn + " " + ln + " wurde Erfolgreich angelegt");
|
||||
alert.showAndWait();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@FXML
|
||||
protected void onBtCancel(){
|
||||
|
||||
lastname.setText("");
|
||||
firstname.setText("");
|
||||
street.setText("");
|
||||
number.setText("");
|
||||
city.setText("");
|
||||
plz.setText("");
|
||||
email.setText("");
|
||||
password.setText("");
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
@ -27,4 +27,8 @@ public class Allergy {
|
||||
return handle;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return getName();
|
||||
}
|
||||
}
|
||||
|
@ -26,4 +26,9 @@ public class AllergySeverity {
|
||||
public String getSeverity() {
|
||||
return severity;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return getAllergy().getName() + " (" + getSeverity() + ")";
|
||||
}
|
||||
}
|
||||
|
@ -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<String> a = Database.getTable("allergy");
|
||||
ObservableList<String> 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<AllergySeverity> 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<Child> childList = AccountMgr.getAllChildrenFromParentWithId(AccountMgr.currentUser.getId());
|
||||
|
||||
ObservableList<Object> childOptions = FXCollections.observableArrayList(childList.stream().map(c -> c.getId() + ": " + c.getFirstname() + " " + c.getName()).toList().toArray(new String[0]));
|
||||
childOptions.add(0, "0: neues Kind erstellen");
|
||||
childChoiceBox.setItems(childOptions);
|
||||
}
|
||||
|
||||
public void onKindLoeschen(ActionEvent actionEvent) {
|
||||
AccountMgr.deleteChildWithId(currentChild.getId());
|
||||
System.out.println("Deleted Child: " + currentChild.getId());
|
||||
|
||||
childChoiceBox.getItems().remove(childChoiceBox.getItems().stream().filter(v -> v.equals(currentChild.getId() + ": " + currentChild.getFirstname() + " " + currentChild.getName())).findFirst().get());
|
||||
childChoiceBox.setValue(childChoiceBox.getItems().get(1));
|
||||
|
||||
onSelectChild(null);
|
||||
|
||||
Alert alert = new Alert(Alert.AlertType.CONFIRMATION);
|
||||
alert.setTitle("Kind wurde gelöscht");
|
||||
alert.showAndWait();
|
||||
}
|
||||
}
|
@ -0,0 +1,156 @@
|
||||
/*Schulte*/
|
||||
|
||||
package com.bib.essensbestellungsverwaltung;
|
||||
|
||||
import javafx.collections.FXCollections;
|
||||
import javafx.collections.ObservableList;
|
||||
import javafx.event.ActionEvent;
|
||||
import javafx.fxml.FXML;
|
||||
import javafx.fxml.Initializable;
|
||||
import javafx.scene.control.*;
|
||||
|
||||
import java.net.URL;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Formattable;
|
||||
import java.util.List;
|
||||
import java.util.ResourceBundle;
|
||||
|
||||
public class ChildViewController implements Initializable {
|
||||
|
||||
@FXML
|
||||
public TextField name;
|
||||
@FXML
|
||||
public TextField lastname;
|
||||
@FXML
|
||||
public TextField street;
|
||||
@FXML
|
||||
public TextField number;
|
||||
@FXML
|
||||
public TextField plz;
|
||||
@FXML
|
||||
public TextField city;
|
||||
//@FXML
|
||||
//public ComboBox group;
|
||||
//@FXML
|
||||
//public TextField age;
|
||||
//@FXML
|
||||
//public TextField allergies;
|
||||
@FXML
|
||||
public ListView allergiesList;
|
||||
ObservableList olAllergiesList;
|
||||
@FXML
|
||||
public ComboBox selectAllergy;
|
||||
@FXML
|
||||
public ComboBox selectAllergySeverity;
|
||||
|
||||
|
||||
|
||||
@FXML
|
||||
protected void onBtClick(){
|
||||
|
||||
boolean childData = false;
|
||||
|
||||
String childName = name.getText();
|
||||
String childLastname = lastname.getText();
|
||||
|
||||
String streetString = street.getText();
|
||||
String numberString = number.getText();
|
||||
String plzString = plz.getText();
|
||||
String cityString = city.getText();
|
||||
|
||||
|
||||
|
||||
if(childName.isEmpty() || childLastname.isEmpty() || streetString.isEmpty() || numberString.isEmpty() ||plzString.isEmpty() || cityString.isEmpty()){
|
||||
Alert alert = new Alert(Alert.AlertType.ERROR);
|
||||
alert.setTitle("Felder");
|
||||
alert.setHeaderText("Eingabe unvollständig");
|
||||
alert.setContentText("Bitte füllen sie alle Felder aus");
|
||||
alert.showAndWait();
|
||||
}
|
||||
else childData = true;
|
||||
|
||||
|
||||
|
||||
if(childData) {
|
||||
|
||||
|
||||
Address adress = AccountMgr.currentUser.getAddress();
|
||||
|
||||
var olChildAllergyList = allergiesList.getItems();
|
||||
List<AllergySeverity> childAllergyList = new ArrayList<>();
|
||||
for (var o : olChildAllergyList) {
|
||||
childAllergyList.add((AllergySeverity) o);
|
||||
}
|
||||
ArrayList<AllergySeverity> allergySeverityArrayList = new ArrayList<>();
|
||||
|
||||
/*for (AllergySeverity a : childAllergyList) {
|
||||
AllergySeverity aS = new AllergySeverity(a, )
|
||||
} */ //Allergy Severity doesn't work in my case so the List will be left empty for now
|
||||
|
||||
|
||||
Child child = new Child(childLastname, childName, adress, childAllergyList);
|
||||
|
||||
System.out.println(AccountMgr.createChild(child));
|
||||
|
||||
Alert alert = new Alert(Alert.AlertType.INFORMATION);
|
||||
alert.setTitle("Bestätigung");
|
||||
alert.setHeaderText("Bestätigung");
|
||||
alert.setContentText("Ihr Kind " + childName + " " + childLastname + " wurde Erfolgreich angelegt");
|
||||
alert.showAndWait();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
public ArrayList<Allergy> allergyComboBox(){
|
||||
ArrayList<Allergy> allergyArrayList = new ArrayList<>();
|
||||
for (int i = 1; i < 23; i++){
|
||||
Allergy a = FoodMgr.getAllergyById(i);
|
||||
allergyArrayList.add(a);
|
||||
}
|
||||
return allergyArrayList;
|
||||
}
|
||||
|
||||
|
||||
@FXML
|
||||
public void addAllergy() {
|
||||
|
||||
boolean allergyEmpty = (selectAllergy.getValue() == "Allergie Wählen");
|
||||
boolean severityEmpty = (selectAllergySeverity.getValue() == "Schwere");
|
||||
|
||||
if(allergyEmpty || severityEmpty) {
|
||||
Alert alert = new Alert(Alert.AlertType.ERROR);
|
||||
alert.setTitle("Fehler");
|
||||
alert.setHeaderText("Ungültige Auswahl");
|
||||
alert.setContentText("Bitte Wählen Sie Allergie und schwere aus");
|
||||
alert.showAndWait();
|
||||
}
|
||||
|
||||
|
||||
|
||||
Allergy addedAllergy = (Allergy)selectAllergy.getValue();
|
||||
long addedSeverityId = Long.parseLong(selectAllergySeverity.getValue().toString().split(":")[0]);
|
||||
String addedSeverity = selectAllergySeverity.getValue().toString().split(":")[1];
|
||||
olAllergiesList.add(new AllergySeverity(addedAllergy,addedSeverityId,addedSeverity));
|
||||
allergiesList.setItems(olAllergiesList);
|
||||
|
||||
|
||||
selectAllergy.setValue("Allergie Wählen");
|
||||
selectAllergySeverity.setValue("Schwere");
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void initialize(URL url, ResourceBundle resourceBundle) {
|
||||
ObservableList<Allergy> olAll = FXCollections.observableArrayList(allergyComboBox());
|
||||
selectAllergy.setItems(olAll);
|
||||
//selectAllergy.getItems().addAll(allergyComboBox());
|
||||
olAllergiesList = FXCollections.observableArrayList();
|
||||
|
||||
ObservableList olSev = FXCollections.observableArrayList();
|
||||
olSev.add("1:Harmlos");
|
||||
olSev.add("2:Warnung");
|
||||
olSev.add("3:Kritisch");
|
||||
selectAllergySeverity.setItems(olSev);
|
||||
}
|
||||
}
|
@ -7,7 +7,7 @@ import java.util.Scanner;
|
||||
* @author Malte Schulze Hobeling
|
||||
*/
|
||||
public class ConsoleMain {
|
||||
static User currentUser = null;
|
||||
//static User currentUser = null;
|
||||
static boolean running = true;
|
||||
public static void main(String[] args) {
|
||||
boolean firstRun = Database.init();
|
||||
@ -18,12 +18,12 @@ public class ConsoleMain {
|
||||
}
|
||||
AccountMgr.getPrice();
|
||||
while (running){
|
||||
if(currentUser == null){
|
||||
if(AccountMgr.currentUser == null){
|
||||
defaultMenu();
|
||||
}else{
|
||||
if(currentUser.getClass().getSimpleName().equals("Worker")){
|
||||
if(AccountMgr.currentUser.getClass().getSimpleName().equals("Worker")){
|
||||
adminMenu();
|
||||
}else if(currentUser.getClass().getSimpleName().equals("Parent")){
|
||||
}else if(AccountMgr.currentUser.getClass().getSimpleName().equals("Parent")){
|
||||
parentMenu();
|
||||
}
|
||||
}
|
||||
@ -41,9 +41,7 @@ public class ConsoleMain {
|
||||
String selection = sc.nextLine();
|
||||
switch (selection) {
|
||||
case "0" -> running = false;
|
||||
case "1" -> {
|
||||
currentUser = ConsoleLib.loginPrompt();
|
||||
}
|
||||
case "1" -> AccountMgr.currentUser = ConsoleLib.loginPrompt();
|
||||
case "2" -> ConsoleLib.showFood_planPrompt();
|
||||
case "3" -> ConsoleLib.createParentPrompt();
|
||||
}
|
||||
@ -70,13 +68,11 @@ public class ConsoleMain {
|
||||
Scanner sc = new Scanner(System.in);
|
||||
String selection = sc.nextLine();
|
||||
switch (selection) {
|
||||
case "0" -> {
|
||||
currentUser = null;
|
||||
}
|
||||
case "0" -> AccountMgr.currentUser = null;
|
||||
case "1" -> ConsoleLib.createWorkerPrompt();
|
||||
case "2" -> ConsoleLib.createParentPrompt();
|
||||
case "3" -> ConsoleLib.createChildPrompt(String.valueOf(currentUser.getId()));
|
||||
case "4" -> ConsoleLib.matchParentChildPrompt(String.valueOf(currentUser.getId()));
|
||||
case "3" -> ConsoleLib.createChildPrompt(String.valueOf(AccountMgr.currentUser.getId()));
|
||||
case "4" -> ConsoleLib.matchParentChildPrompt(String.valueOf(AccountMgr.currentUser.getId()));
|
||||
case "5" -> ConsoleLib.createFoodPrompt();
|
||||
case "6" -> ConsoleLib.createFood_planPrompt();
|
||||
case "7" -> ConsoleLib.showFood_planPrompt();
|
||||
@ -101,11 +97,9 @@ public class ConsoleMain {
|
||||
Scanner sc = new Scanner(System.in);
|
||||
String selection = sc.nextLine();
|
||||
switch (selection) {
|
||||
case "0" -> {
|
||||
currentUser = null;
|
||||
}
|
||||
case "3" -> ConsoleLib.createChildPrompt(String.valueOf(currentUser.getId()));
|
||||
case "6" -> ConsoleLib.tablePrompt();
|
||||
case "0" -> AccountMgr.currentUser = null;
|
||||
case "3" -> ConsoleLib.createChildPrompt(String.valueOf(AccountMgr.currentUser.getId()));
|
||||
case "x1" -> ConsoleLib.tablePrompt();
|
||||
case "7" -> ConsoleLib.showFood_planPrompt();
|
||||
case "8" -> ConsoleLib.createFood_selectionPrompt();
|
||||
}
|
||||
|
@ -0,0 +1,124 @@
|
||||
package com.bib.essensbestellungsverwaltung;
|
||||
|
||||
import javafx.collections.FXCollections;
|
||||
import javafx.collections.ObservableList;
|
||||
import javafx.event.ActionEvent;
|
||||
import javafx.fxml.FXML;
|
||||
import javafx.scene.control.Alert;
|
||||
import javafx.scene.control.RadioButton;
|
||||
import javafx.scene.control.TextArea;
|
||||
import javafx.scene.control.TextField;
|
||||
import javafx.scene.text.Text;
|
||||
import org.controlsfx.control.CheckComboBox;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class CreateFoodController {
|
||||
@FXML
|
||||
public TextField name;
|
||||
@FXML
|
||||
public TextArea description;
|
||||
@FXML
|
||||
public RadioButton isHauptgerichtRadio;
|
||||
@FXML
|
||||
public RadioButton isDessertRadio;
|
||||
@FXML
|
||||
public RadioButton isVegetarischRadio;
|
||||
@FXML
|
||||
public RadioButton isVeganRadio;
|
||||
@FXML
|
||||
public RadioButton isFleischRadio;
|
||||
@FXML
|
||||
public Text responseText;
|
||||
public CheckComboBox allergienComboBox;
|
||||
|
||||
@FXML
|
||||
public void initialize() {
|
||||
List<String> a = Database.getTable("allergy");
|
||||
ObservableList<String> allergies = FXCollections.observableArrayList();
|
||||
for (String allergie : a) {
|
||||
allergies.add(allergie.split(":")[0] + ": " + allergie.split(":")[1]);
|
||||
}
|
||||
allergienComboBox.getItems().addAll(allergies);
|
||||
}
|
||||
|
||||
@FXML
|
||||
public void onAbbrechen(ActionEvent actionEvent) {
|
||||
clearInputs();
|
||||
}
|
||||
|
||||
@FXML
|
||||
public void onHinzufuegen(ActionEvent actionEvent) {
|
||||
String gerichtName = name.getText();
|
||||
String beschreibung = description.getText();
|
||||
|
||||
if(gerichtName.isBlank()){
|
||||
Alert alert = new Alert(Alert.AlertType.ERROR);
|
||||
alert.setTitle("Ungültige Eingabe");
|
||||
alert.setHeaderText("Es wurden nicht alle Felder ausgefüllt");
|
||||
alert.setContentText("Das Feld 'Name' ist nicht ausgefüllt");
|
||||
alert.showAndWait();
|
||||
return;
|
||||
}
|
||||
if(beschreibung.isBlank()){
|
||||
Alert alert = new Alert(Alert.AlertType.ERROR);
|
||||
alert.setTitle("Ungültige Eingabe");
|
||||
alert.setHeaderText("Es wurden nicht alle Felder ausgefüllt");
|
||||
alert.setContentText("Das Feld 'Beschreibung' ist nicht ausgefüllt");
|
||||
alert.showAndWait();
|
||||
return;
|
||||
}
|
||||
|
||||
if(!isHauptgerichtRadio.isSelected() && !isDessertRadio.isSelected()){
|
||||
Alert alert = new Alert(Alert.AlertType.ERROR);
|
||||
alert.setTitle("Ungültige Eingabe");
|
||||
alert.setHeaderText("Es wurden nicht alle Felder ausgefüllt");
|
||||
alert.setContentText("Das Feld 'Art' ist nicht ausgefüllt");
|
||||
alert.showAndWait();
|
||||
return;
|
||||
}
|
||||
boolean isNachtisch = !isHauptgerichtRadio.isSelected();
|
||||
if(!isVegetarischRadio.isSelected() && !isVeganRadio.isSelected() && !isFleischRadio.isSelected()){
|
||||
Alert alert = new Alert(Alert.AlertType.ERROR);
|
||||
alert.setTitle("Ungültige Eingabe");
|
||||
alert.setHeaderText("Es wurden nicht alle Felder ausgefüllt");
|
||||
alert.setContentText("Das Feld 'Typ' ist nicht ausgefüllt");
|
||||
alert.showAndWait();
|
||||
return;
|
||||
}
|
||||
int ft = isVeganRadio.isSelected() ? 1 : isVeganRadio.isSelected() ? 2 : 3;
|
||||
FoodType foodType = new FoodType(ft, "Vegan");
|
||||
List<Allergy> allergies = new ArrayList<>();
|
||||
allergienComboBox.getCheckModel().getCheckedItems().stream().forEach(a -> {
|
||||
long id = Integer.parseInt(a.toString().split(":")[0]);
|
||||
String name = a.toString().split(":")[1].trim();
|
||||
allergies.add((new Allergy(id, name, "")));
|
||||
});
|
||||
System.out.println(allergies.get(0).getName());
|
||||
|
||||
long id = FoodMgr.createFood(new Food(gerichtName, beschreibung, isNachtisch, foodType, allergies));
|
||||
if(id <= 0){
|
||||
Alert alert = new Alert(Alert.AlertType.ERROR);
|
||||
alert.setTitle("Es ist ein Problem beim Erstellen des Gerichts aufgetreten");
|
||||
alert.setHeaderText("Bitte überprüfen Sie ihre Eingabe");
|
||||
alert.setContentText("Es besteht die Möglichkeit, dass dieses Gericht bereits existiert");
|
||||
alert.showAndWait();
|
||||
return;
|
||||
}
|
||||
System.out.println("Food created with id: " + id);
|
||||
responseText.setText("New Food Created");
|
||||
clearInputs();
|
||||
}
|
||||
|
||||
private void clearInputs(){
|
||||
name.setText("");
|
||||
description.setText("");
|
||||
isHauptgerichtRadio.setSelected(false);
|
||||
isDessertRadio.setSelected(false);
|
||||
isVeganRadio.setSelected(false);
|
||||
isVegetarischRadio.setSelected(false);
|
||||
isFleischRadio.setSelected(false);
|
||||
allergienComboBox.getCheckModel().clearChecks();
|
||||
}
|
||||
}
|
@ -0,0 +1,127 @@
|
||||
package com.bib.essensbestellungsverwaltung;
|
||||
|
||||
import javafx.collections.FXCollections;
|
||||
import javafx.collections.ObservableList;
|
||||
import javafx.event.ActionEvent;
|
||||
import javafx.fxml.FXML;
|
||||
import javafx.scene.control.Alert;
|
||||
import javafx.scene.control.Button;
|
||||
import javafx.scene.control.ChoiceBox;
|
||||
import javafx.scene.control.DatePicker;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.util.List;
|
||||
|
||||
public class CreateFoodplanController {
|
||||
@FXML
|
||||
Button erstellenButton;
|
||||
@FXML
|
||||
DatePicker date;
|
||||
|
||||
@FXML
|
||||
ChoiceBox firstMeal;
|
||||
|
||||
@FXML
|
||||
ChoiceBox secondMeal;
|
||||
|
||||
@FXML
|
||||
ChoiceBox firstDessert;
|
||||
|
||||
@FXML
|
||||
ChoiceBox secondDessert;
|
||||
|
||||
private List<Food> foods;
|
||||
private List<Food> veganFoods;
|
||||
private List<Food> desserts;
|
||||
private List<Food> veganDesserts;
|
||||
private FoodPlan currentPlan;
|
||||
|
||||
|
||||
@FXML
|
||||
public void initialize() {
|
||||
veganFoods = FoodMgr.getVeganFood(false);
|
||||
foods = FoodMgr.getFood(false);
|
||||
veganDesserts = FoodMgr.getVeganFood(true);
|
||||
desserts = FoodMgr.getFood(true);
|
||||
|
||||
ObservableList<Object> foodOptions = FXCollections.observableArrayList(foods.stream().map(food -> food.getId() + ": " + food.getName()).toList().toArray(new String[0]));
|
||||
ObservableList<Object> veganFoodOptions = FXCollections.observableArrayList(veganFoods.stream().map(food -> food.getId() + ": " + food.getName()).toList().toArray(new String[0]));
|
||||
ObservableList<Object> veganDessertOptions = FXCollections.observableArrayList(veganDesserts.stream().map(dessert -> dessert.getId() + ": " + dessert.getName()).toList().toArray(new String[0]));
|
||||
ObservableList<Object> dessertOptions = FXCollections.observableArrayList(desserts.stream().map(dessert -> dessert.getId() + ": " + dessert.getName()).toList().toArray(new String[0]));
|
||||
firstMeal.setItems(veganFoodOptions);
|
||||
secondMeal.setItems(foodOptions);
|
||||
|
||||
|
||||
firstDessert.setItems(veganDessertOptions);
|
||||
secondDessert.setItems(dessertOptions);
|
||||
|
||||
date.setValue(LocalDate.now());
|
||||
onDateChange(null);
|
||||
}
|
||||
|
||||
@FXML
|
||||
public void onPlanErstellen(ActionEvent actionEvent) {
|
||||
if (date.getValue() == null ||
|
||||
firstMeal.getValue().toString().isBlank() ||
|
||||
secondMeal.getValue().toString().isBlank() ||
|
||||
firstDessert.getValue().toString().isBlank() ||
|
||||
secondDessert.getValue().toString().isBlank()
|
||||
) {
|
||||
Alert alert = new Alert(Alert.AlertType.ERROR);
|
||||
alert.setTitle("Ungültige Eingabe");
|
||||
alert.setHeaderText("Es wurden nicht alle Felder ausgefüllt");
|
||||
alert.setContentText("Es kann sein, dass Sie erst Gerichte erstellen müssen, um alle Felder auszufüllen");
|
||||
alert.showAndWait();
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
int firstMealId = Integer.parseInt(firstMeal.getValue().toString().split(":")[0]);
|
||||
int secondMealId = Integer.parseInt(secondMeal.getValue().toString().split(":")[0]);
|
||||
int firstDessertId = Integer.parseInt(firstDessert.getValue().toString().split(":")[0]);
|
||||
int secondDessertId = Integer.parseInt(secondDessert.getValue().toString().split(":")[0]);
|
||||
|
||||
|
||||
|
||||
Food f1 = foods.stream().filter(food -> food.getId() == firstMealId).findFirst().get();
|
||||
Food f2 = foods.stream().filter(food -> food.getId() == secondMealId).findFirst().get();
|
||||
Food d1 = desserts.stream().filter(dessert -> dessert.getId() == firstDessertId).findFirst().get();
|
||||
Food d2 = desserts.stream().filter(dessert -> dessert.getId() == secondDessertId).findFirst().get();
|
||||
|
||||
String d = date.getValue().toString();
|
||||
|
||||
if (currentPlan != null) { // update Foodplan
|
||||
long id = currentPlan.getId();
|
||||
FoodPlan plan = new FoodPlan(id, d, f1, f2, d1, d2, false);
|
||||
long i = FoodMgr.updateFood_plan(plan);
|
||||
System.out.println("Foodplan updated: " + i);
|
||||
} else { // create new Foodplan
|
||||
FoodPlan plan = new FoodPlan(d, f1, f2, d1, d2);
|
||||
long id = FoodMgr.createFood_plan(plan);
|
||||
System.out.println("Foodplan created with id: " + id);
|
||||
}
|
||||
}
|
||||
|
||||
@FXML
|
||||
public void onAbbrechen(ActionEvent actionEvent) {
|
||||
}
|
||||
|
||||
@FXML
|
||||
public void onDateChange(ActionEvent actionEvent) {
|
||||
currentPlan = FoodMgr.getFoodPlan(date.getValue().toString());
|
||||
if (currentPlan != null) { // current FoodPlan already exists and can be edited
|
||||
firstMeal.setValue(currentPlan.getFoodVegan().getId() + ": " + currentPlan.getFoodVegan().getName());
|
||||
secondMeal.setValue(currentPlan.getFoodSecond().getId() + ": " + currentPlan.getFoodSecond().getName());
|
||||
firstDessert.setValue(currentPlan.getDessertVegan().getId() + ": " + currentPlan.getDessertVegan().getName());
|
||||
secondDessert.setValue(currentPlan.getDessertSecond().getId() + ": " + currentPlan.getDessertSecond().getName());
|
||||
erstellenButton.setText("Plan updaten");
|
||||
} else { // current Foodplan does not exist
|
||||
erstellenButton.setText("Plan erstellen");
|
||||
firstMeal.setValue(null);
|
||||
secondMeal.setValue(null);
|
||||
firstDessert.setValue(null);
|
||||
secondDessert.setValue(null);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
@ -0,0 +1,76 @@
|
||||
package com.bib.essensbestellungsverwaltung;
|
||||
|
||||
import javafx.event.ActionEvent;
|
||||
import javafx.fxml.FXML;
|
||||
import javafx.scene.control.Button;
|
||||
import javafx.scene.control.DatePicker;
|
||||
import javafx.scene.control.ListView;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Calendar;
|
||||
import java.util.List;
|
||||
|
||||
public class DailyOrderController {
|
||||
public ListView listView;
|
||||
public DatePicker datePicker;
|
||||
public Button sendButton;
|
||||
|
||||
|
||||
@FXML
|
||||
public void initialize() {
|
||||
datePicker.setValue(LocalDate.now());
|
||||
updatePlan(datePicker.getValue().toString());
|
||||
}
|
||||
|
||||
public void onChangeDate(ActionEvent actionEvent) {
|
||||
updatePlan(datePicker.getValue().toString());
|
||||
}
|
||||
|
||||
|
||||
private void updatePlan(String date){
|
||||
listView.getItems().clear();
|
||||
System.out.print("Orders from " + date + " : ");
|
||||
List<String> orders = new ArrayList<>();
|
||||
FoodPlan food_plan = FoodMgr.getFoodPlan(date);
|
||||
if(food_plan == null){
|
||||
sendButton.setVisible(false);
|
||||
return;
|
||||
}
|
||||
sendButton.setVisible(true);
|
||||
if(food_plan.isSent()){
|
||||
sendButton.setDisable(true);
|
||||
sendButton.setText("Bestellung wurde Gesendet");
|
||||
}else {
|
||||
sendButton.setDisable(false);
|
||||
sendButton.setText("Bestellung senden");
|
||||
}
|
||||
String sId = String.valueOf(food_plan.getId());
|
||||
String[] food_selectionH = {"food_planid","foodid"};
|
||||
Food[] foodArray = {
|
||||
food_plan.getFoodVegan(),
|
||||
food_plan.getFoodSecond(),
|
||||
food_plan.getDessertVegan(),
|
||||
food_plan.getDessertSecond()
|
||||
};
|
||||
for(int i = 0; i < 4; i++){
|
||||
String foodName = foodArray[i].getName();
|
||||
String[] food_selectionD = {sId, String.valueOf(foodArray[i].getId())};
|
||||
int count = Database.count("food_selection",food_selectionH,food_selectionD);
|
||||
orders.add(count+" X "+foodName);
|
||||
}
|
||||
|
||||
System.out.println(orders);
|
||||
|
||||
|
||||
for(String order : orders){
|
||||
listView.getItems().add(order);
|
||||
}
|
||||
}
|
||||
|
||||
public void onSendButton(ActionEvent actionEvent) {
|
||||
FoodMgr.getDayOrder(datePicker.getValue().toString());
|
||||
sendButton.setDisable(true);
|
||||
sendButton.setText("Bestellung wurde Gesendet");
|
||||
}
|
||||
}
|
@ -9,20 +9,23 @@ import java.util.List;
|
||||
|
||||
/**
|
||||
* Basic operations on the database
|
||||
* Use init() -> createDb() -> fillDb() to create the skeleton with some default values
|
||||
* Use init() -> createDb() -> fillDb() to create the skeleton with some default
|
||||
* values
|
||||
* Provides select, insert, update, delete, count operations and more
|
||||
*
|
||||
* @author Malte Schulze Hobeling
|
||||
*/
|
||||
public class Database {
|
||||
private static final String dbLocation = "jdbc:sqlite:"+Path.of("").toAbsolutePath()+"/database.db";
|
||||
private static final String dbLocation = "jdbc:sqlite:" + Path.of("").toAbsolutePath() + "/database.db";
|
||||
|
||||
/**
|
||||
* creates new database.db if it doesn't exist
|
||||
*
|
||||
* @return true if a new database has been created
|
||||
* @author Malte Schulze Hobeling
|
||||
*/
|
||||
protected static boolean init(){
|
||||
File db = new File(Path.of("").toAbsolutePath()+"/database.db");
|
||||
protected static boolean init() {
|
||||
File db = new File(Path.of("").toAbsolutePath() + "/database.db");
|
||||
try {
|
||||
return db.createNewFile();
|
||||
} catch (IOException e) {
|
||||
@ -32,14 +35,15 @@ public class Database {
|
||||
|
||||
/**
|
||||
* connects to the database
|
||||
*
|
||||
* @return Connection to the database
|
||||
* @author Malte Schulze Hobeling
|
||||
*/
|
||||
protected static Connection connect(){
|
||||
protected static Connection connect() {
|
||||
Connection conn = null;
|
||||
try{
|
||||
try {
|
||||
conn = DriverManager.getConnection(dbLocation);
|
||||
}catch (SQLException e){
|
||||
} catch (SQLException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return conn;
|
||||
@ -47,9 +51,10 @@ public class Database {
|
||||
|
||||
/**
|
||||
* creates the initial structure of the db
|
||||
*
|
||||
* @author Malte Schulze Hobeling
|
||||
*/
|
||||
protected static void createDb(){
|
||||
protected static void createDb() {
|
||||
String[] sql = new String[15];
|
||||
sql[0] = """
|
||||
CREATE TABLE IF NOT EXISTS address (
|
||||
@ -167,8 +172,8 @@ public class Database {
|
||||
id integer PRIMARY KEY,
|
||||
price integer
|
||||
);""";
|
||||
try(Connection conn = connect(); Statement stmt = conn.createStatement()){
|
||||
for(int i = 0; i < sql.length; i++){
|
||||
try (Connection conn = connect(); Statement stmt = conn.createStatement()) {
|
||||
for (int i = 0; i < sql.length; i++) {
|
||||
stmt.execute(sql[i]);
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
@ -178,10 +183,12 @@ public class Database {
|
||||
|
||||
/**
|
||||
* inserts fixed values into the database
|
||||
*
|
||||
* @author Malte Schulze Hobeling
|
||||
*/
|
||||
protected static void fillDb(){
|
||||
protected static void fillDb() {
|
||||
List<String> sqls = new ArrayList<>();
|
||||
// food_type
|
||||
sqls.add("""
|
||||
INSERT OR IGNORE INTO food_type (id,name)
|
||||
VALUES ('1','Vegan');""");
|
||||
@ -191,6 +198,7 @@ public class Database {
|
||||
sqls.add("""
|
||||
INSERT OR IGNORE INTO food_type (id,name)
|
||||
VALUES ('3','Fleischhaltig');""");
|
||||
// allergy
|
||||
sqls.add("""
|
||||
INSERT OR IGNORE INTO allergy (id,name,handle)
|
||||
VALUES('1','Eier','a');""");
|
||||
@ -257,6 +265,7 @@ public class Database {
|
||||
sqls.add("""
|
||||
INSERT OR IGNORE INTO allergy (id,name,handle)
|
||||
VALUES('22','Konservierungsstoff','8');""");
|
||||
// severity
|
||||
sqls.add("""
|
||||
INSERT OR IGNORE INTO severity (id,name)
|
||||
VALUES('1','Harmlos');""");
|
||||
@ -269,11 +278,155 @@ public class Database {
|
||||
sqls.add("""
|
||||
INSERT OR IGNORE INTO price (id,price)
|
||||
VALUES('1','500');""");
|
||||
try(Connection conn = connect(); Statement stmt = conn.createStatement()){
|
||||
// user
|
||||
sqls.add("""
|
||||
INSERT OR IGNORE INTO address (id,street,number,plz,city)
|
||||
VALUES('1','teststreet','69','1337','Mond');""");
|
||||
sqls.add("""
|
||||
INSERT OR IGNORE INTO user (id,name,firstname,addressid,password,email)
|
||||
VALUES('1','testparent','testparent','1','YOD+TB0twF2SrueBj26t5OjEJK/Al4G6/hq+IMRyBz4=.f4zL2UJW4POrf/xgJdNaiw==','testparent@test.de');""");
|
||||
sqls.add("""
|
||||
INSERT OR IGNORE INTO parent (userid)
|
||||
VALUES('1');""");
|
||||
sqls.add("""
|
||||
INSERT OR IGNORE INTO user (id,name,firstname,addressid,password,email)
|
||||
VALUES('2','testworker','testworker','1','YOD+TB0twF2SrueBj26t5OjEJK/Al4G6/hq+IMRyBz4=.f4zL2UJW4POrf/xgJdNaiw==','testworker@test.de');""");
|
||||
sqls.add("""
|
||||
INSERT OR IGNORE INTO worker (userid)
|
||||
VALUES('2');""");
|
||||
// food
|
||||
sqls.add("""
|
||||
INSERT OR IGNORE INTO food (id,name,description,isdessert,food_typeid)
|
||||
VALUES('1','Steak','69','0','3');""");
|
||||
sqls.add("""
|
||||
INSERT OR IGNORE INTO food (id,name,description,isdessert,food_typeid)
|
||||
VALUES('2','Schnitzel','69','0','3');""");
|
||||
sqls.add("""
|
||||
INSERT OR IGNORE INTO food (id,name,description,isdessert,food_typeid)
|
||||
VALUES('3','Hamburger','69','0','3');""");
|
||||
sqls.add("""
|
||||
INSERT OR IGNORE INTO food (id,name,description,isdessert,food_typeid)
|
||||
VALUES('4','Nudeln','69','0','1');""");
|
||||
sqls.add("""
|
||||
INSERT OR IGNORE INTO food (id,name,description,isdessert,food_typeid)
|
||||
VALUES('5','Salat','69','0','1');""");
|
||||
sqls.add("""
|
||||
INSERT OR IGNORE INTO food (id,name,description,isdessert,food_typeid)
|
||||
VALUES('6','Pudding','69','1','1');""");
|
||||
sqls.add("""
|
||||
INSERT OR IGNORE INTO food (id,name,description,isdessert,food_typeid)
|
||||
VALUES('7','Eis','69','1','1');""");
|
||||
sqls.add("""
|
||||
INSERT OR IGNORE INTO food (id,name,description,isdessert,food_typeid)
|
||||
VALUES('8','Wackelpudding','69','1','1');""");
|
||||
sqls.add("""
|
||||
INSERT OR IGNORE INTO food (id,name,description,isdessert,food_typeid)
|
||||
VALUES('9','Kuchen','69','1','1');""");
|
||||
sqls.add("""
|
||||
INSERT OR IGNORE INTO food (id,name,description,isdessert,food_typeid)
|
||||
VALUES('10','Apfel','69','1','1');""");
|
||||
sqls.add("""
|
||||
INSERT OR IGNORE INTO food (id,name,description,isdessert,food_typeid)
|
||||
VALUES('11','Banane','69','1','1');""");
|
||||
sqls.add("""
|
||||
INSERT OR IGNORE INTO food (id,name,description,isdessert,food_typeid)
|
||||
VALUES('12','Nudelauflauf','69','0','3');""");
|
||||
sqls.add("""
|
||||
INSERT OR IGNORE INTO food (id,name,description,isdessert,food_typeid)
|
||||
VALUES('13','Reibekuchen','69','0','1');""");
|
||||
sqls.add("""
|
||||
INSERT OR IGNORE INTO food (id,name,description,isdessert,food_typeid)
|
||||
VALUES('14','Gefüllte Paprika','69','0','1');""");
|
||||
sqls.add("""
|
||||
INSERT OR IGNORE INTO food (id,name,description,isdessert,food_typeid)
|
||||
VALUES('15','Suishi','69','0','2');""");
|
||||
sqls.add("""
|
||||
INSERT OR IGNORE INTO food (id,name,description,isdessert,food_typeid)
|
||||
VALUES('16','Champignons','69','0','2');""");
|
||||
// child
|
||||
sqls.add("""
|
||||
INSERT OR IGNORE INTO child (id,name,firstname,addressid)
|
||||
VALUES('1','Lustig','Peter','1');""");
|
||||
sqls.add("""
|
||||
INSERT OR IGNORE INTO child (id,name,firstname,addressid)
|
||||
VALUES('2','Wahnsinn','Rainer','1');""");
|
||||
sqls.add("""
|
||||
INSERT OR IGNORE INTO parent_child ('id',parentuserid,childid)
|
||||
VALUES('1','1','1');""");
|
||||
sqls.add("""
|
||||
INSERT OR IGNORE INTO parent_child ('id',parentuserid,childid)
|
||||
VALUES('2','1','2');""");
|
||||
sqls.add("""
|
||||
INSERT OR IGNORE INTO child_allergy (childid,allergyid,severityid)
|
||||
VALUES('1','1','2');""");
|
||||
sqls.add("""
|
||||
INSERT OR IGNORE INTO child_allergy (childid,allergyid,severityid)
|
||||
VALUES('1','3','2');""");
|
||||
sqls.add("""
|
||||
INSERT OR IGNORE INTO child_allergy (childid,allergyid,severityid)
|
||||
VALUES('1','4','2');""");
|
||||
// foodplan
|
||||
sqls.add("""
|
||||
INSERT OR IGNORE INTO food_plan ('id',date,food1,food2,dessert1,dessert2)
|
||||
VALUES('1','2023-02-06','4','1','8','7');""");
|
||||
sqls.add("""
|
||||
INSERT OR IGNORE INTO food_plan ('id',date,food1,food2,dessert1,dessert2)
|
||||
VALUES('2','2023-02-07','5','2','6','7');""");
|
||||
sqls.add("""
|
||||
INSERT OR IGNORE INTO food_plan ('id',date,food1,food2,dessert1,dessert2)
|
||||
VALUES('3','2023-02-08','4','3','8','6');""");
|
||||
sqls.add("""
|
||||
INSERT OR IGNORE INTO food_plan ('id',date,food1,food2,dessert1,dessert2)
|
||||
VALUES('4','2023-02-09','16','1','11','10');""");
|
||||
sqls.add("""
|
||||
INSERT OR IGNORE INTO food_plan ('id',date,food1,food2,dessert1,dessert2)
|
||||
VALUES('5','2023-02-09','14','13','7','9');""");
|
||||
sqls.add("""
|
||||
INSERT OR IGNORE INTO food_plan ('id',date,food1,food2,dessert1,dessert2)
|
||||
VALUES('6','2023-02-10','13','15','8','6');""");
|
||||
// food_selection
|
||||
sqls.add("""
|
||||
INSERT OR IGNORE INTO food_selection ('id',childid,food_planid,foodid)
|
||||
VALUES('1','1','1','4');""");
|
||||
sqls.add("""
|
||||
INSERT OR IGNORE INTO food_selection ('id',childid,food_planid,foodid)
|
||||
VALUES('2','1','1','8');""");
|
||||
sqls.add("""
|
||||
INSERT OR IGNORE INTO food_selection ('id',childid,food_planid,foodid)
|
||||
VALUES('3','2','1','4');""");
|
||||
sqls.add("""
|
||||
INSERT OR IGNORE INTO food_selection ('id',childid,food_planid,foodid)
|
||||
VALUES('4','2','1','8');""");
|
||||
sqls.add("""
|
||||
INSERT OR IGNORE INTO food_selection ('id',childid,food_planid,foodid)
|
||||
VALUES('5','1','2','5');""");
|
||||
sqls.add("""
|
||||
INSERT OR IGNORE INTO food_selection ('id',childid,food_planid,foodid)
|
||||
VALUES('6','1','2','7');""");
|
||||
sqls.add("""
|
||||
INSERT OR IGNORE INTO food_selection ('id',childid,food_planid,foodid)
|
||||
VALUES('7','2','2','5');""");
|
||||
sqls.add("""
|
||||
INSERT OR IGNORE INTO food_selection ('id',childid,food_planid,foodid)
|
||||
VALUES('8','2','2','7');""");
|
||||
sqls.add("""
|
||||
INSERT OR IGNORE INTO food_selection ('id',childid,food_planid,foodid)
|
||||
VALUES('9','1','3','4');""");
|
||||
sqls.add("""
|
||||
INSERT OR IGNORE INTO food_selection ('id',childid,food_planid,foodid)
|
||||
VALUES('10','1','3','8');""");
|
||||
sqls.add("""
|
||||
INSERT OR IGNORE INTO food_selection ('id',childid,food_planid,foodid)
|
||||
VALUES('11','2','3','4');""");
|
||||
sqls.add("""
|
||||
INSERT OR IGNORE INTO food_selection ('id',childid,food_planid,foodid)
|
||||
VALUES('12','2','3','6');""");
|
||||
|
||||
try (Connection conn = connect(); Statement stmt = conn.createStatement()) {
|
||||
for (String sql : sqls) {
|
||||
stmt.execute(sql);
|
||||
}
|
||||
}catch (SQLException e){
|
||||
} catch (SQLException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
@ -281,35 +434,36 @@ public class Database {
|
||||
/**
|
||||
* inserts data into table and returns its id
|
||||
* simple duplication check
|
||||
* @param table name of the database table
|
||||
*
|
||||
* @param table name of the database table
|
||||
* @param header String[] order should match with values
|
||||
* @param values String[] order should match with header
|
||||
* @return id of dataset or -1
|
||||
* @author Malte Schulze Hobeling
|
||||
*/
|
||||
protected static long insert(String table, String[] header, String[] values){
|
||||
protected static long insert(String table, String[] header, String[] values) {
|
||||
long id = -1;
|
||||
try (Connection conn = connect()){
|
||||
String query = queryBuilder("exists",table,header,values);
|
||||
try (Connection conn = connect()) {
|
||||
String query = queryBuilder("exists", table, header, values);
|
||||
PreparedStatement psQuery = conn.prepareStatement(query);
|
||||
ResultSet rsQuery = psQuery.executeQuery();
|
||||
if(rsQuery.next()){
|
||||
if (rsQuery.next()) {
|
||||
boolean found = rsQuery.getBoolean(1);
|
||||
if(!found){
|
||||
String sql = queryBuilder("insert",table,header,values);
|
||||
String[] rowId = {"id"};
|
||||
PreparedStatement ps = conn.prepareStatement(sql,rowId);
|
||||
if (!found) {
|
||||
String sql = queryBuilder("insert", table, header, values);
|
||||
String[] rowId = { "id" };
|
||||
PreparedStatement ps = conn.prepareStatement(sql, rowId);
|
||||
ps.execute();
|
||||
ResultSet rs = ps.getGeneratedKeys();
|
||||
if(rs.next()){
|
||||
if (rs.next()) {
|
||||
id = rs.getLong(1);
|
||||
}
|
||||
|
||||
}else{
|
||||
query = queryBuilder("selectMatch",table,header,values);
|
||||
} else {
|
||||
query = queryBuilder("selectMatch", table, header, values);
|
||||
psQuery = conn.prepareStatement(query);
|
||||
rsQuery = psQuery.executeQuery();
|
||||
if(rsQuery.next()) {
|
||||
if (rsQuery.next()) {
|
||||
id = rsQuery.getLong(1);
|
||||
}
|
||||
}
|
||||
@ -323,25 +477,26 @@ public class Database {
|
||||
|
||||
/**
|
||||
* returns a single id that matches the given data
|
||||
* @param table the table that contains the searched entry
|
||||
*
|
||||
* @param table the table that contains the searched entry
|
||||
* @param header the header of the table, order should match with values
|
||||
* @param values the data you want the id of, order should match witch values
|
||||
* @return one id matching the given data or -1 if no match has been found
|
||||
* @author Malte Schulze Hobeling
|
||||
*/
|
||||
protected static long getSingleId(String table, String[] header, String[] values){
|
||||
protected static long getSingleId(String table, String[] header, String[] values) {
|
||||
long id = -1;
|
||||
try(Connection conn = connect()){
|
||||
String sql = queryBuilder("selectMatch",table,header,values);
|
||||
try (Connection conn = connect()) {
|
||||
String sql = queryBuilder("selectMatch", table, header, values);
|
||||
PreparedStatement ps = conn.prepareStatement(sql);
|
||||
ResultSet rs = ps.executeQuery();
|
||||
if(rs.next()){
|
||||
if (rs.next()) {
|
||||
id = rs.getLong(1);
|
||||
if(rs.next()){
|
||||
if (rs.next()) {
|
||||
id = -1;
|
||||
}
|
||||
}
|
||||
}catch (SQLException e){
|
||||
} catch (SQLException e) {
|
||||
e.printStackTrace();
|
||||
return id;
|
||||
}
|
||||
@ -351,63 +506,66 @@ public class Database {
|
||||
/**
|
||||
* @deprecated
|
||||
*/
|
||||
protected static void printSampleQuery(){
|
||||
protected static void printSampleQuery() {
|
||||
String sql = """
|
||||
SELECT * FROM food_type WHERE id > ?;""";
|
||||
String sql1 = """
|
||||
SELECT * FROM allergy WHERE id > ?;""";
|
||||
try(Connection conn = connect()){
|
||||
try (Connection conn = connect()) {
|
||||
PreparedStatement ps = conn.prepareStatement(sql);
|
||||
PreparedStatement ps1 = conn.prepareStatement(sql1);
|
||||
ps.setInt(1,0);
|
||||
ps.setInt(1, 0);
|
||||
ResultSet rs = ps.executeQuery();
|
||||
System.out.println("food_type");
|
||||
while (rs.next()){
|
||||
while (rs.next()) {
|
||||
System.out.println("ID: " + rs.getInt("id") + ", Name: " + rs.getString("name"));
|
||||
}
|
||||
System.out.println("allergy");
|
||||
ps1.setInt(1,0);
|
||||
ps1.setInt(1, 0);
|
||||
rs = ps1.executeQuery();
|
||||
while (rs.next()){
|
||||
while (rs.next()) {
|
||||
System.out.println("ID: " + rs.getInt("id") + ", Name: " + rs.getString("name"));
|
||||
}
|
||||
}catch (SQLException e){
|
||||
} catch (SQLException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* deletes an entry from table with matching id
|
||||
*
|
||||
* @param table the table that contains the entry you want to delete
|
||||
* @param id the id of the entry you want to delete
|
||||
* @param id the id of the entry you want to delete
|
||||
* @author Malte Schulze Hobeling
|
||||
*/
|
||||
protected static void delete(String table, long id){
|
||||
protected static void delete(String table, long id) {
|
||||
String sql = "DELETE FROM " + table + " WHERE id = ?;";
|
||||
try(Connection conn = connect();PreparedStatement ps = conn.prepareStatement(sql)){
|
||||
ps.setLong(1,id);
|
||||
try (Connection conn = connect(); PreparedStatement ps = conn.prepareStatement(sql)) {
|
||||
ps.setLong(1, id);
|
||||
ps.executeUpdate();
|
||||
}catch (SQLException e){
|
||||
} catch (SQLException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* its a query builder it builds queries
|
||||
* exists: checks if an entry with the given parameters exists in table
|
||||
* selectMatch: returns all matching rows from table
|
||||
* insert: inserts or ignores into table
|
||||
* count: counts exact matches from table
|
||||
* update: updates table, header/values[0] is used as WHERE, using id is recommended header/values[1+] are used
|
||||
* as SET
|
||||
* @param type exists, selectMatch, insert, count, update
|
||||
* @param table table
|
||||
* exists: checks if an entry with the given parameters exists in table
|
||||
* selectMatch: returns all matching rows from table
|
||||
* insert: inserts or ignores into table
|
||||
* count: counts exact matches from table
|
||||
* update: updates table, header/values[0] is used as WHERE, using id is
|
||||
* recommended header/values[1+] are used
|
||||
* as SET
|
||||
*
|
||||
* @param type exists, selectMatch, insert, count, update
|
||||
* @param table table
|
||||
* @param header header
|
||||
* @param values values
|
||||
* @return sql statement as String
|
||||
* @author Malte Schulze Hobeling
|
||||
*/
|
||||
private static String queryBuilder(String type,String table, String[] header, String[] values){
|
||||
private static String queryBuilder(String type, String table, String[] header, String[] values) {
|
||||
String sql;
|
||||
StringBuilder sb = new StringBuilder();
|
||||
switch (type) {
|
||||
@ -469,7 +627,7 @@ public class Database {
|
||||
sb.append(header[0]);
|
||||
sb.append(" = ");
|
||||
sb.append(values[0]);
|
||||
for(int i = 1; i < header.length; i++){
|
||||
for (int i = 1; i < header.length; i++) {
|
||||
sb.append(" AND ");
|
||||
sb.append(header[i]);
|
||||
sb.append(" = ");
|
||||
@ -482,12 +640,12 @@ public class Database {
|
||||
sb.append(" SET ");
|
||||
sb.append(header[1]);
|
||||
sb.append(" = ");
|
||||
sb.append(values[1]);
|
||||
for(int i = 2; i < header.length; i++){
|
||||
sb.append("'" + values[1] + "'");
|
||||
for (int i = 2; i < header.length; i++) {
|
||||
sb.append(", ");
|
||||
sb.append(header[i]);
|
||||
sb.append(" = ");
|
||||
sb.append(values[i]);
|
||||
sb.append("'" + values[i] + "'");
|
||||
}
|
||||
sb.append(" WHERE ");
|
||||
sb.append(header[0]);
|
||||
@ -501,61 +659,64 @@ public class Database {
|
||||
|
||||
/**
|
||||
* returns a list of all entries
|
||||
*
|
||||
* @param table the table you want
|
||||
* @return a list of all entries as String with the fields separated by ":"
|
||||
* @author Malte Schulze Hobeling
|
||||
*/
|
||||
protected static List<String> getTable(String table){
|
||||
protected static List<String> getTable(String table) {
|
||||
List<String> data = new ArrayList<>();
|
||||
StringBuilder sb;
|
||||
try(Connection conn = connect()) {
|
||||
try (Connection conn = connect()) {
|
||||
String sql = "SELECT * FROM " + table;
|
||||
PreparedStatement ps = conn.prepareStatement(sql);
|
||||
ResultSet rs = ps.executeQuery();
|
||||
ResultSetMetaData rsmd = rs.getMetaData();
|
||||
int count = rsmd.getColumnCount();
|
||||
while (rs.next()){
|
||||
while (rs.next()) {
|
||||
sb = new StringBuilder();
|
||||
sb.append(rs.getString(1));
|
||||
for(int i = 2; i <= count; i++){
|
||||
for (int i = 2; i <= count; i++) {
|
||||
sb.append(":");
|
||||
sb.append(rs.getString(i));
|
||||
}
|
||||
data.add(sb.toString());
|
||||
}
|
||||
}catch (SQLException e){
|
||||
} catch (SQLException e) {
|
||||
return new ArrayList<>();
|
||||
}
|
||||
return data;
|
||||
}
|
||||
|
||||
/**
|
||||
* issues a select query on the database for the given table and the given values checked with LIKE
|
||||
* @param table the table you want the data from
|
||||
* issues a select query on the database for the given table and the given
|
||||
* values checked with LIKE
|
||||
*
|
||||
* @param table the table you want the data from
|
||||
* @param header header for the WHERE portion, order should match with values
|
||||
* @param values values for the WHERE portion, order should match with header
|
||||
* @return a list of the matching data as String separated by ":"
|
||||
* @author Malte Schulze Hobeling
|
||||
*/
|
||||
protected static List<String> select(String table,String[] header, String[] values){
|
||||
protected static List<String> select(String table, String[] header, String[] values) {
|
||||
List<String> data = new ArrayList<>();
|
||||
StringBuilder sb;
|
||||
String sql = queryBuilder("selectMatch",table,header,values);
|
||||
try(Connection conn = connect()) {
|
||||
String sql = queryBuilder("selectMatch", table, header, values);
|
||||
try (Connection conn = connect()) {
|
||||
PreparedStatement ps = conn.prepareStatement(sql);
|
||||
ResultSet rs = ps.executeQuery();
|
||||
ResultSetMetaData rsmd = rs.getMetaData();
|
||||
int count = rsmd.getColumnCount();
|
||||
while (rs.next()){
|
||||
while (rs.next()) {
|
||||
sb = new StringBuilder();
|
||||
sb.append(rs.getString(1));
|
||||
for(int i = 2; i <= count; i++){
|
||||
for (int i = 2; i <= count; i++) {
|
||||
sb.append(":");
|
||||
sb.append(rs.getString(i));
|
||||
}
|
||||
data.add(sb.toString());
|
||||
}
|
||||
}catch (SQLException e){
|
||||
} catch (SQLException e) {
|
||||
e.printStackTrace();
|
||||
return data;
|
||||
}
|
||||
@ -564,25 +725,26 @@ public class Database {
|
||||
|
||||
/**
|
||||
* returns the entry from table with the given id
|
||||
*
|
||||
* @param table the table you want the entry from
|
||||
* @param id the id of the entry you want
|
||||
* @param id the id of the entry you want
|
||||
* @return a list of String separated by ":"
|
||||
* @author Malte Schulze Hobeling
|
||||
*/
|
||||
protected static List<String> getEntryById(String table, long id){
|
||||
protected static List<String> getEntryById(String table, long id) {
|
||||
List<String> data = new ArrayList<>();
|
||||
StringBuilder sb;
|
||||
String sql = "SELECT * FROM " + table + " WHERE id = ?;";
|
||||
try (Connection conn = connect()) {
|
||||
PreparedStatement ps = conn.prepareStatement(sql);
|
||||
ps.setLong(1,id);
|
||||
ps.setLong(1, id);
|
||||
ResultSet rs = ps.executeQuery();
|
||||
ResultSetMetaData rsmd = rs.getMetaData();
|
||||
int count = rsmd.getColumnCount();
|
||||
while (rs.next()){
|
||||
while (rs.next()) {
|
||||
sb = new StringBuilder();
|
||||
sb.append(rs.getString(1));
|
||||
for(int i = 2; i <= count; i++){
|
||||
for (int i = 2; i <= count; i++) {
|
||||
sb.append(":");
|
||||
sb.append(rs.getString(i));
|
||||
}
|
||||
@ -597,38 +759,40 @@ public class Database {
|
||||
|
||||
/**
|
||||
* counts the number of matching entries
|
||||
* @param table the table you want to count
|
||||
*
|
||||
* @param table the table you want to count
|
||||
* @param header the properties you want to count on
|
||||
* @param values the values for the properties
|
||||
* @return the number of found rows
|
||||
* @author Malte Schulze Hobeling
|
||||
*/
|
||||
protected static int count(String table,String[] header,String[] values){
|
||||
String sql = queryBuilder("count",table,header,values);
|
||||
try(Connection conn = connect()) {
|
||||
protected static int count(String table, String[] header, String[] values) {
|
||||
String sql = queryBuilder("count", table, header, values);
|
||||
try (Connection conn = connect()) {
|
||||
PreparedStatement ps = conn.prepareStatement(sql);
|
||||
ResultSet rs = ps.executeQuery();
|
||||
return rs.getInt(1);
|
||||
}catch (SQLException e){
|
||||
} catch (SQLException e) {
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* updates an entry in the database
|
||||
* @param table the table you want to update
|
||||
*
|
||||
* @param table the table you want to update
|
||||
* @param header [0] is used as WHERE, everything else in SET
|
||||
* @param values [0] is used as WHERE, everything else in SET
|
||||
* @return number of rows affected or -1 on error
|
||||
* @author Malte Schulze Hobeling
|
||||
*/
|
||||
protected static int update(String table,String[] header,String[] values){
|
||||
try(Connection conn = connect()) {
|
||||
String sql = queryBuilder("update",table,header,values);
|
||||
protected static int update(String table, String[] header, String[] values) {
|
||||
try (Connection conn = connect()) {
|
||||
String sql = queryBuilder("update", table, header, values);
|
||||
PreparedStatement ps = conn.prepareStatement(sql);
|
||||
return ps.executeUpdate();
|
||||
}catch (SQLException e){
|
||||
return -1;
|
||||
} catch (SQLException e) {
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -46,6 +46,21 @@ public class FoodMgr {
|
||||
return Database.insert("food_plan",food_planH,food_planD);
|
||||
}
|
||||
|
||||
/**
|
||||
* updates a food_plan into the database
|
||||
* @return number of rows affected or -1 on error
|
||||
* @author Johannes Kantz
|
||||
*/
|
||||
public static long updateFood_plan(FoodPlan foodPlan){
|
||||
String[] food_planH = {"id","food1","food2","dessert1","dessert2"};
|
||||
String[] food_planD = {String.valueOf(foodPlan.getId()),
|
||||
String.valueOf(foodPlan.getFoodVegan().getId()),
|
||||
String.valueOf(foodPlan.getFoodSecond().getId()),
|
||||
String.valueOf(foodPlan.getDessertVegan().getId()),
|
||||
String.valueOf(foodPlan.getDessertSecond().getId())};
|
||||
return Database.update("food_plan",food_planH,food_planD);
|
||||
}
|
||||
|
||||
/**
|
||||
* returns all non desserts or all desserts
|
||||
* @param isDessert true for only desserts false for non desserts
|
||||
@ -92,6 +107,9 @@ public class FoodMgr {
|
||||
String[] food_planH = {"date"};
|
||||
String[] food_planD = {date};
|
||||
List<String> entry = Database.select("food_plan",food_planH,food_planD);
|
||||
if(entry.size() < 1){
|
||||
return null;
|
||||
}
|
||||
String[] parts = entry.get(0).split(":");
|
||||
Food foodVegan = getFoodById(Long.parseLong(parts[2]));
|
||||
Food foodSecond = getFoodById(Long.parseLong(parts[3]));
|
||||
@ -217,6 +235,9 @@ public class FoodMgr {
|
||||
public static List<String> getDayOrder(String date){
|
||||
List<String> orders = new ArrayList<>();
|
||||
FoodPlan food_plan = getFoodPlan(date);
|
||||
if(food_plan == null){
|
||||
return orders;
|
||||
}
|
||||
String sId = String.valueOf(food_plan.getId());
|
||||
String[] food_selectionH = {"food_planid","foodid"};
|
||||
Food[] foodArray = {
|
||||
|
@ -20,5 +20,4 @@ public class FoodType {
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -0,0 +1,35 @@
|
||||
package com.bib.essensbestellungsverwaltung;
|
||||
|
||||
import javafx.fxml.FXML;
|
||||
import javafx.scene.control.Alert;
|
||||
import javafx.scene.control.Label;
|
||||
import javafx.scene.control.TextField;
|
||||
|
||||
/**
|
||||
* @author Reshad Meher
|
||||
* Username, Passwort , login
|
||||
*/
|
||||
|
||||
public class HelloController {
|
||||
|
||||
@FXML
|
||||
private TextField unsernameEingabe;
|
||||
@FXML
|
||||
private TextField passwortEingabe;
|
||||
@FXML
|
||||
private Label lblAusgabe;
|
||||
@FXML
|
||||
protected void onLoginButtonClick() {
|
||||
String benutzerEingabe = unsernameEingabe.getText();
|
||||
String kennwortEingabe = passwortEingabe.getText();
|
||||
if(benutzerEingabe.contains("Reshad") && kennwortEingabe.contains("test123")){
|
||||
lblAusgabe.setText("Herzlich Willkommen, " + benutzerEingabe + "!");
|
||||
}else {
|
||||
Alert alert = new Alert(Alert.AlertType.ERROR,
|
||||
"Die Benutzername oder Passwort ist falsch");
|
||||
alert.showAndWait();
|
||||
}
|
||||
unsernameEingabe.setText("");
|
||||
passwortEingabe.setText("");
|
||||
}
|
||||
}
|
@ -0,0 +1,118 @@
|
||||
package com.bib.essensbestellungsverwaltung;
|
||||
|
||||
import javafx.collections.FXCollections;
|
||||
import javafx.collections.ObservableList;
|
||||
import javafx.fxml.FXML;
|
||||
import javafx.scene.control.Alert;
|
||||
import javafx.scene.control.ChoiceBox;
|
||||
import javafx.scene.control.Spinner;
|
||||
import javafx.scene.input.MouseEvent;
|
||||
import javafx.scene.text.Text;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Path;
|
||||
import java.util.Calendar;
|
||||
import java.util.List;
|
||||
|
||||
public class InvoiceController {
|
||||
@FXML
|
||||
Text responseText;
|
||||
@FXML
|
||||
ChoiceBox monatChoiceBox;
|
||||
|
||||
@FXML
|
||||
ChoiceBox childChoiceBox;
|
||||
|
||||
@FXML
|
||||
Spinner jahrSpinner;
|
||||
|
||||
@FXML
|
||||
public void initialize() {
|
||||
monatChoiceBox.setValue(intToMonth(Calendar.getInstance().get(Calendar.MONTH) + 1));
|
||||
jahrSpinner.getValueFactory().setValue(Calendar.getInstance().get(Calendar.YEAR));
|
||||
|
||||
List<Child> childList = AccountMgr.getAllChildren();
|
||||
ObservableList<Object> childOptions = FXCollections.observableArrayList(childList.stream()
|
||||
.map(c -> c.getId() + ": " + c.getFirstname() + " " + c.getName()).toList().toArray(new String[0]));
|
||||
childChoiceBox.setItems(childOptions);
|
||||
}
|
||||
|
||||
@FXML
|
||||
void onRechnungErstellenClick(MouseEvent mouseEvent) {
|
||||
if (childChoiceBox.getValue() == null) {
|
||||
Alert alert = new Alert(Alert.AlertType.ERROR);
|
||||
alert.setTitle("Es wurde kein Kind ausgewählt");
|
||||
alert.setHeaderText("Bitte wählen sie ein Kind aus");
|
||||
alert.showAndWait();
|
||||
}
|
||||
|
||||
String childId = childChoiceBox.getValue().toString().split(":")[0];
|
||||
String date = String.format("%d-%02d", Integer.parseInt(jahrSpinner.getValue().toString()),
|
||||
monthToInt(monatChoiceBox.getValue().toString()));
|
||||
|
||||
System.out.println("Invoice (" + date + ") from child: " + childId);
|
||||
|
||||
List<String> invoice = AccountMgr.getInvoice(date, childId);
|
||||
|
||||
responseText.setText(invoice.get(invoice.size() - 1));
|
||||
|
||||
// TODO: show invoice
|
||||
Child child = AccountMgr.getChildById(Long.parseLong(childId));
|
||||
exportInvoice("Rechnung_" + date + "_" + childId + "_" + child.getName() +"_" + child.getFirstname(), invoice);
|
||||
}
|
||||
|
||||
private int monthToInt(String month) {
|
||||
return switch (month) {
|
||||
case "Januar" -> 1;
|
||||
case "Februar" -> 2;
|
||||
case "März" -> 3;
|
||||
case "April" -> 4;
|
||||
case "Mai" -> 5;
|
||||
case "Juni" -> 6;
|
||||
case "Juli" -> 7;
|
||||
case "August" -> 8;
|
||||
case "September" -> 9;
|
||||
case "Oktober" -> 10;
|
||||
case "November" -> 11;
|
||||
case "Dezember" -> 12;
|
||||
default -> -1;
|
||||
};
|
||||
}
|
||||
|
||||
private String intToMonth(int month) {
|
||||
return switch (month) {
|
||||
case 1 -> "Januar";
|
||||
case 2 -> "Februar";
|
||||
case 3 -> "März";
|
||||
case 4 -> "April";
|
||||
case 5 -> "Mai";
|
||||
case 6 -> "Juni";
|
||||
case 7 -> "Juli";
|
||||
case 8 -> "August";
|
||||
case 9 -> "September";
|
||||
case 10 -> "Oktober";
|
||||
case 11 -> "November";
|
||||
case 12 -> "Dezember";
|
||||
default -> "";
|
||||
};
|
||||
}
|
||||
|
||||
private void exportInvoice(String filename, List<String> invoice) {
|
||||
try {
|
||||
Files.createDirectories(Path.of(Path.of("").toAbsolutePath() + "/Rechnungen"));
|
||||
|
||||
// TODO: save invoice to pdf or word
|
||||
File file = new File(Path.of("").toAbsolutePath() + "/Rechnungen/" + filename + ".txt");
|
||||
if (file.createNewFile()) {
|
||||
System.out.println("File created: " + file.getName());
|
||||
} else {
|
||||
System.out.println("File already exists.");
|
||||
}
|
||||
Files.write(Path.of(file.getAbsolutePath()), invoice);
|
||||
} catch (IOException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
}
|
@ -1,4 +1,4 @@
|
||||
/*Reshad Meher*/
|
||||
/*Richard Reiswich*/
|
||||
package com.bib.essensbestellungsverwaltung;
|
||||
|
||||
import javafx.fxml.FXML;
|
||||
@ -7,8 +7,10 @@ import javafx.scene.Scene;
|
||||
import javafx.scene.control.Alert;
|
||||
import javafx.scene.control.PasswordField;
|
||||
import javafx.scene.control.TextField;
|
||||
import java.io.IOException;
|
||||
import javafx.stage.Stage;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.HashMap;
|
||||
|
||||
public class LoginController {
|
||||
@FXML
|
||||
@ -16,27 +18,30 @@ public class LoginController {
|
||||
|
||||
@FXML
|
||||
private PasswordField pfPassword;
|
||||
|
||||
@FXML
|
||||
protected void onBtLoginClick() throws IOException {
|
||||
String email = tfEmail.getText();
|
||||
String password = pfPassword.getText();
|
||||
long loginPruefen = AccountMgr.login(email,password);
|
||||
if(loginPruefen > 0){
|
||||
FXMLLoader fxmlLoader = new FXMLLoader(StartViewApplication.class.getResource("menue-view.fxml"));
|
||||
Scene scene = new Scene(fxmlLoader.load(), 950,700);
|
||||
StartViewApplication.primary.setScene(scene);
|
||||
AccountMgr.currentUser = AccountMgr.getUserById(loginPruefen);
|
||||
if(AccountMgr.currentUser.getClass().getSimpleName().equals("Worker")){
|
||||
StartViewApplication.changeScene("workerMenu-view.fxml");
|
||||
}else{
|
||||
StartViewApplication.changeScene("parentMenu-view.fxml");
|
||||
}
|
||||
|
||||
}else {
|
||||
Alert alert = new Alert(Alert.AlertType.ERROR,"Email oder Passwort ist falsch");
|
||||
alert.showAndWait();
|
||||
}
|
||||
|
||||
tfEmail.setText("");
|
||||
pfPassword.setText("");
|
||||
}
|
||||
@FXML
|
||||
protected void onBtSingnupClick() throws IOException {
|
||||
FXMLLoader fxmlLoader = new FXMLLoader(StartViewApplication.class.getResource("signUp-view.fxml"));
|
||||
Scene scene = new Scene(fxmlLoader.load(), 950,700);
|
||||
StartViewApplication.primary.setScene(scene);
|
||||
|
||||
protected void changeToSignUp() throws IOException {
|
||||
StartViewApplication.changeScene("signUp-view.fxml");
|
||||
}
|
||||
}
|
||||
|
@ -6,6 +6,10 @@ import javafx.fxml.FXML;
|
||||
import javafx.scene.Node;
|
||||
import javafx.scene.control.*;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
|
||||
public class MenueController {
|
||||
|
||||
@FXML
|
||||
@ -71,14 +75,26 @@ public class MenueController {
|
||||
@FXML
|
||||
ComboBox<String> cbPickChild;
|
||||
@FXML
|
||||
Button btLogin;
|
||||
@FXML
|
||||
Button btSaveOrder;
|
||||
@FXML
|
||||
ListView<String> lvFoodInfo;
|
||||
|
||||
public ObservableList<Node> buttons = FXCollections.observableArrayList();
|
||||
public ObservableList<String> children = FXCollections.observableArrayList();
|
||||
|
||||
public List<Child> allChildren = AccountMgr.getAllChildrenFromParentWithId(3);
|
||||
public void initialize(){
|
||||
FoodPlan foodplanMon = FoodMgr.getFoodPlanById(1);
|
||||
FoodPlan foodplanTue = FoodMgr.getFoodPlanById(2);
|
||||
FoodPlan foodplanWed = FoodMgr.getFoodPlanById(3);
|
||||
FoodPlan foodplanThu = FoodMgr.getFoodPlanById(4);
|
||||
FoodPlan foodplanFri = FoodMgr.getFoodPlanById(5);
|
||||
|
||||
for (Child c : allChildren){
|
||||
children.add(c.getFirstname());
|
||||
}
|
||||
cbPickChild.setItems(children);
|
||||
}
|
||||
|
||||
public void setButtonActive(ActionEvent event) {
|
||||
Button b = (Button) event.getSource();
|
||||
@ -87,14 +103,7 @@ public class MenueController {
|
||||
buttons = p.getChildrenUnmodifiable();
|
||||
|
||||
for(Node button : buttons){
|
||||
System.out.println(b.getStyleClass());
|
||||
/*
|
||||
b.getStyleClass().remove("active");
|
||||
|
||||
if (button.equals(b)){
|
||||
b.getStyleClass().add("active");;
|
||||
}
|
||||
*/
|
||||
button.setDisable(button.equals(b));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,37 @@
|
||||
package com.bib.essensbestellungsverwaltung;
|
||||
|
||||
import javafx.fxml.FXML;
|
||||
import javafx.scene.control.ListView;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
public class OrderHistoryController {
|
||||
public ListView listView;
|
||||
|
||||
@FXML
|
||||
public void initialize() {
|
||||
List<Child> children = AccountMgr.getAllChildrenFromParentWithId(AccountMgr.currentUser.getId());
|
||||
|
||||
List<String> orders = new ArrayList<>();
|
||||
|
||||
for (Child child : children) {
|
||||
List<String> selections = Database.select("food_selection", new String[] { "childid" }, new String[] { String.valueOf(child.getId()) });
|
||||
for (String selection : selections) {
|
||||
String[] selectionParts = selection.split(":");
|
||||
String foodplanid = selectionParts[2];
|
||||
String foodid = selectionParts[3];
|
||||
String foodName = FoodMgr.getFoodById(Long.parseLong(foodid)).getName();
|
||||
String date = FoodMgr.getFoodPlanById(Long.parseLong(foodplanid)).getDate();
|
||||
orders.add(String.format("%s\t %s \t %s", date, child.getFirstname(), foodName));
|
||||
}
|
||||
}
|
||||
|
||||
Collections.sort(orders);
|
||||
Collections.reverse(orders);
|
||||
for(String order : orders){
|
||||
listView.getItems().add(order);
|
||||
}
|
||||
}
|
||||
}
|
@ -4,21 +4,30 @@ import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* one constructor is used to create new parents the other is used to create existing parents from database
|
||||
* one constructor is used to create new parents the other is used to create
|
||||
* existing parents from database
|
||||
*
|
||||
* @author Malte Schulze Hobeling
|
||||
*/
|
||||
public class Parent extends User{
|
||||
public class Parent extends User {
|
||||
List<Child> children;
|
||||
|
||||
public Parent(long id, String name, String firstname, String password, String email, Address address, List<Child> children) {
|
||||
public Parent(long id, String name, String firstname, String password, String email, Address address,
|
||||
List<Child> children) {
|
||||
super(id, name, firstname, password, email, address);
|
||||
this.children = children;
|
||||
}
|
||||
|
||||
public Parent(String name, String firstname, String password, String email, Address address) {
|
||||
super(name, firstname, password, email, address);
|
||||
this.children = new ArrayList<>();
|
||||
}
|
||||
|
||||
public Parent(User user) {
|
||||
super(user.getId(), user.getName(), user.getFirstname(), user.getPassword(), user.getEmail(), user.getAddress());
|
||||
this.children = new ArrayList<>();
|
||||
}
|
||||
|
||||
public List<Child> getChildren() {
|
||||
return children;
|
||||
}
|
||||
|
@ -1,78 +1,4 @@
|
||||
package com.bib.essensbestellungsverwaltung;
|
||||
|
||||
import javafx.fxml.FXML;
|
||||
import javafx.fxml.FXMLLoader;
|
||||
import javafx.scene.control.Button;
|
||||
import javafx.scene.layout.BorderPane;
|
||||
import org.w3c.dom.events.MouseEvent;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
public class ParentController{
|
||||
|
||||
@FXML
|
||||
BorderPane contentView;
|
||||
@FXML
|
||||
Button essensplanButton;
|
||||
@FXML
|
||||
Button kinderButton;
|
||||
@FXML
|
||||
Button bestellungButton;
|
||||
@FXML
|
||||
Button einstellungenButton;
|
||||
|
||||
@FXML
|
||||
public void initialize() {
|
||||
changePage("menue-view.fxml");
|
||||
setButtonActive(essensplanButton);
|
||||
}
|
||||
|
||||
|
||||
@FXML
|
||||
public void onEssensplanClick(MouseEvent mouseEvent) {
|
||||
setButtonActive(essensplanButton);
|
||||
changePage("menue-view.fxml");
|
||||
}
|
||||
|
||||
@FXML
|
||||
public void onKinderClick(MouseEvent mouseEvent) {
|
||||
setButtonActive(kinderButton);
|
||||
changePage("child-view.fxml");
|
||||
}
|
||||
|
||||
@FXML
|
||||
public void onBestellungClick(MouseEvent mouseEvent) {
|
||||
setButtonActive(bestellungButton);
|
||||
changePage("orderHistory-view.fxml");
|
||||
}
|
||||
|
||||
@FXML
|
||||
public void onEinstellungenClick(MouseEvent mouseEvent) {
|
||||
setButtonActive(einstellungenButton);
|
||||
changePage("SettingsMenue.fxml");
|
||||
}
|
||||
|
||||
@FXML
|
||||
public void onAusloggenClick(MouseEvent mouseEvent) throws IOException {
|
||||
AccountMgr.currentUser = null;
|
||||
StartViewApplication.changeScene("login-view.fxml");
|
||||
}
|
||||
|
||||
private void changePage(String page) {
|
||||
try {
|
||||
Parent root = FXMLLoader.load(getClass().getResource(page));
|
||||
//contentView.setCenter(root);
|
||||
} catch (IOException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
|
||||
private void setButtonActive(Button b) {
|
||||
einstellungenButton.getStyleClass().remove("active");
|
||||
kinderButton.getStyleClass().remove("active");
|
||||
bestellungButton.getStyleClass().remove("active");
|
||||
essensplanButton.getStyleClass().remove("active");
|
||||
b.getStyleClass().add("active");
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -0,0 +1,78 @@
|
||||
package com.bib.essensbestellungsverwaltung;
|
||||
|
||||
import javafx.fxml.FXML;
|
||||
import javafx.fxml.FXMLLoader;
|
||||
import javafx.scene.Parent;
|
||||
import javafx.scene.control.Button;
|
||||
import javafx.scene.input.MouseEvent;
|
||||
import javafx.scene.layout.BorderPane;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
public class ParentMenuController {
|
||||
|
||||
@FXML
|
||||
BorderPane contentView;
|
||||
@FXML
|
||||
Button essensplanButton;
|
||||
@FXML
|
||||
Button kinderButton;
|
||||
@FXML
|
||||
Button bestellungButton;
|
||||
@FXML
|
||||
Button einstellungenButton;
|
||||
|
||||
@FXML
|
||||
public void initialize() {
|
||||
changePage("menue-view.fxml");
|
||||
setButtonActive(essensplanButton);
|
||||
}
|
||||
|
||||
|
||||
@FXML
|
||||
public void onEssensplanClick(MouseEvent mouseEvent) {
|
||||
setButtonActive(essensplanButton);
|
||||
changePage("menue-view.fxml");
|
||||
}
|
||||
|
||||
@FXML
|
||||
public void onKinderClick(MouseEvent mouseEvent) {
|
||||
setButtonActive(kinderButton);
|
||||
changePage("child-view.fxml");
|
||||
}
|
||||
|
||||
@FXML
|
||||
public void onBestellungClick(MouseEvent mouseEvent) {
|
||||
setButtonActive(bestellungButton);
|
||||
changePage("orderHistory-view.fxml");
|
||||
}
|
||||
|
||||
@FXML
|
||||
public void onEinstellungenClick(MouseEvent mouseEvent) {
|
||||
setButtonActive(einstellungenButton);
|
||||
changePage("menue-view.fxml");
|
||||
}
|
||||
|
||||
@FXML
|
||||
public void onAusloggenClick(MouseEvent mouseEvent) throws IOException {
|
||||
AccountMgr.currentUser = null;
|
||||
StartViewApplication.changeScene("login-view.fxml");
|
||||
}
|
||||
|
||||
private void changePage(String page) {
|
||||
try {
|
||||
Parent root = FXMLLoader.load(getClass().getResource(page));
|
||||
contentView.setCenter(root);
|
||||
} catch (IOException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
|
||||
private void setButtonActive(Button b) {
|
||||
einstellungenButton.getStyleClass().remove("active");
|
||||
kinderButton.getStyleClass().remove("active");
|
||||
bestellungButton.getStyleClass().remove("active");
|
||||
essensplanButton.getStyleClass().remove("active");
|
||||
b.getStyleClass().add("active");
|
||||
}
|
||||
}
|
@ -0,0 +1,12 @@
|
||||
package com.bib.essensbestellungsverwaltung;
|
||||
|
||||
import javafx.fxml.FXMLLoader;
|
||||
import javafx.scene.Parent;
|
||||
import javafx.scene.Scene;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.Objects;
|
||||
|
||||
public class SceneController {
|
||||
|
||||
}
|
@ -1,8 +1,6 @@
|
||||
package com.bib.essensbestellungsverwaltung;
|
||||
/**
|
||||
* @autor Reshad Meher
|
||||
*/
|
||||
|
||||
import javafx.event.ActionEvent;
|
||||
import javafx.fxml.FXML;
|
||||
import javafx.fxml.FXMLLoader;
|
||||
import javafx.scene.Scene;
|
||||
@ -10,6 +8,9 @@ import javafx.scene.control.Alert;
|
||||
import javafx.scene.control.TextField;
|
||||
|
||||
import java.io.IOException;
|
||||
/**
|
||||
* @author Reshad Meher
|
||||
*/
|
||||
|
||||
public class SettingsController {
|
||||
|
||||
@ -141,4 +142,8 @@ public class SettingsController {
|
||||
Scene scene = new Scene(fxmlLoader.load(), 950,700);
|
||||
StartViewApplication.primary.setScene(scene);
|
||||
}
|
||||
|
||||
public void onSettingBtClick(ActionEvent actionEvent) {
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -1,7 +1,9 @@
|
||||
/**
|
||||
* @autor: Reshad Meher
|
||||
*/
|
||||
package com.bib.essensbestellungsverwaltung;
|
||||
|
||||
import javafx.fxml.FXML;
|
||||
import javafx.fxml.FXMLLoader;
|
||||
import javafx.scene.Scene;
|
||||
import javafx.scene.control.Alert;
|
||||
import javafx.scene.control.PasswordField;
|
||||
import javafx.scene.control.TextField;
|
||||
@ -25,25 +27,25 @@ public class SingUpController {
|
||||
@FXML
|
||||
private TextField tfStreet;
|
||||
@FXML
|
||||
private TextField tfHousNumber;
|
||||
private TextField tfHouseNumber;
|
||||
@FXML
|
||||
private void onKontoErstellenBtClick(){
|
||||
String lastName = tfLastName.getText();
|
||||
String firstNanme = tfFirstName.getText();
|
||||
String firstName = tfFirstName.getText();
|
||||
String email = tfEmail.getText();
|
||||
String password = pfPassword.getText();
|
||||
String postCode = tfPostCode.getText();
|
||||
String city = tfCity.getText();
|
||||
String street = tfStreet.getText();
|
||||
String housNumber = tfHousNumber.getText();
|
||||
String houseNumber = tfHouseNumber.getText();
|
||||
Alert alert;
|
||||
if(lastName.isEmpty() || firstNanme.isEmpty() || email.isEmpty() || password.isEmpty() || postCode.isEmpty() ||
|
||||
city.isEmpty() || street.isEmpty() || housNumber.isEmpty()){
|
||||
if(lastName.isEmpty() || firstName.isEmpty() || email.isEmpty() || password.isEmpty() || postCode.isEmpty() ||
|
||||
city.isEmpty() || street.isEmpty() || houseNumber.isEmpty()){
|
||||
|
||||
if(lastName.isEmpty()){
|
||||
alert = new Alert(Alert.AlertType.ERROR," Die Eingabefeld 'Name' ist leer.");
|
||||
alert.showAndWait();
|
||||
} else if (firstNanme.isEmpty()) {
|
||||
} else if (firstName.isEmpty()) {
|
||||
alert = new Alert(Alert.AlertType.ERROR," Die Eingabefeld 'Vorname' ist leer.");
|
||||
alert.showAndWait();
|
||||
} else if (email.isEmpty()) {
|
||||
@ -67,11 +69,26 @@ public class SingUpController {
|
||||
}
|
||||
|
||||
}else {
|
||||
Address newAdresse = new Address(street,housNumber,postCode,city);
|
||||
User newUser = new User(lastName,firstNanme,password,email,newAdresse);
|
||||
long creatNewUser = AccountMgr.createUser(newUser);
|
||||
if (creatNewUser > 0){
|
||||
alert = new Alert(Alert.AlertType.CONFIRMATION,"Ihrer Daten wurde gespeichert.");
|
||||
Address newAdresse = new Address(street,houseNumber,postCode,city);
|
||||
User newUser = new User(lastName,firstName,password,email,newAdresse);
|
||||
if(StartViewApplication.firstLaunch){
|
||||
long id = AccountMgr.createWorker(new Worker(newUser));
|
||||
if(id < 1) {
|
||||
Alert a = new Alert(Alert.AlertType.ERROR,"Es ist ein Fehler bei der Erstellung Ihres Accounts aufgetreten.");
|
||||
a.showAndWait();
|
||||
return;
|
||||
}
|
||||
alert = new Alert(Alert.AlertType.CONFIRMATION,"Mitarbeiter Account erfolgreich erstellt");
|
||||
alert.showAndWait();
|
||||
StartViewApplication.firstLaunch = false;
|
||||
}else {
|
||||
long id = AccountMgr.createParent(new Parent(newUser));
|
||||
if(id < 1) {
|
||||
Alert a = new Alert(Alert.AlertType.ERROR,"Es ist ein Fehler bei der Erstellung Ihres Accounts aufgetreten.");
|
||||
a.showAndWait();
|
||||
return;
|
||||
}
|
||||
alert = new Alert(Alert.AlertType.CONFIRMATION,"Eltern Account erfolgreich erstellt");
|
||||
alert.showAndWait();
|
||||
}
|
||||
tfLastName.setText("");
|
||||
@ -81,15 +98,13 @@ public class SingUpController {
|
||||
tfPostCode.setText("");
|
||||
tfCity.setText("");
|
||||
tfStreet.setText("");
|
||||
tfHousNumber.setText("");
|
||||
tfHouseNumber.setText("");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@FXML
|
||||
private void onAnmeldenBtClick() throws IOException {
|
||||
FXMLLoader fxmlLoader = new FXMLLoader(StartViewApplication.class.getResource("login-view.fxml"));
|
||||
Scene scene = new Scene(fxmlLoader.load(), 950,700);
|
||||
StartViewApplication.primary.setScene(scene);
|
||||
StartViewApplication.changeScene("login-view.fxml");
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,4 @@
|
||||
package com.bib.essensbestellungsverwaltung;
|
||||
|
||||
public class StartPageController {
|
||||
}
|
@ -16,20 +16,21 @@ import java.io.IOException;
|
||||
public class StartViewApplication extends Application {
|
||||
public static Stage primary;
|
||||
public static boolean firstLaunch;
|
||||
|
||||
@Override
|
||||
public void start(Stage stage) throws IOException {
|
||||
//FXMLLoader fxmlLoader = new FXMLLoader(StartViewApplication.class.getResource((firstLaunch) ? "signUp-view.fxml" : "login-view.fxml"));
|
||||
FXMLLoader fxmlLoader = new FXMLLoader(StartViewApplication.class.getResource((firstLaunch) ? "settingsMenue.fxml" : "settingsMenue.fxml"));
|
||||
Scene scene = new Scene(fxmlLoader.load(), 1220, 790);
|
||||
FXMLLoader fxmlLoader = new FXMLLoader(StartViewApplication.class.getResource((firstLaunch) ? "signUp-view.fxml" : "login-view.fxml"));
|
||||
Scene scene = new Scene(fxmlLoader.load(), 1300, 750);
|
||||
primary = stage;
|
||||
stage.setTitle("Essen Bestellung im Kindergarten");
|
||||
stage.setScene(scene);
|
||||
stage.show();
|
||||
|
||||
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
firstLaunch = Database.init();
|
||||
Database.init();
|
||||
Database.createDb();
|
||||
Database.fillDb();
|
||||
//Database.printSampleQuery();
|
||||
@ -37,7 +38,7 @@ public class StartViewApplication extends Application {
|
||||
launch();
|
||||
}
|
||||
|
||||
public static void changeScene(String scene) throws IOException{
|
||||
public static void changeScene(String scene) throws IOException {
|
||||
Parent p = FXMLLoader.load(StartViewApplication.class.getResource(scene));
|
||||
primary.getScene().setRoot(p);
|
||||
}
|
||||
|
@ -7,7 +7,7 @@ package com.bib.essensbestellungsverwaltung;
|
||||
*/
|
||||
public class SuperMain {
|
||||
public static void main(String[] args) {
|
||||
if(args.length > 0){
|
||||
if(args.length > 0 && args[0].equals("Here be dragons")){
|
||||
ConsoleMain.main(args);
|
||||
}else {
|
||||
StartViewApplication.main(args);
|
||||
|
@ -28,9 +28,6 @@ public class User {
|
||||
this.email = email;
|
||||
this.address = address;
|
||||
}
|
||||
public User (String password){
|
||||
this.password = password;
|
||||
}
|
||||
|
||||
public long getId() {
|
||||
return id;
|
||||
@ -55,4 +52,13 @@ public class User {
|
||||
public Address getAddress() {
|
||||
return address;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Reshad Meher
|
||||
*/
|
||||
public User (String password){
|
||||
this.password = password;
|
||||
}
|
||||
}
|
||||
|
@ -1,14 +1,21 @@
|
||||
package com.bib.essensbestellungsverwaltung;
|
||||
|
||||
/**
|
||||
* one constructor is used to create new worker the other is used to create existing worker from database
|
||||
* one constructor is used to create new worker the other is used to create
|
||||
* existing worker from database
|
||||
*
|
||||
* @author Malte Schulze Hobeling
|
||||
*/
|
||||
public class Worker extends User{
|
||||
public class Worker extends User {
|
||||
public Worker(long id, String name, String firstname, String password, String email, Address address) {
|
||||
super(id, name, firstname, password, email, address);
|
||||
}
|
||||
|
||||
public Worker(String name, String firstname, String password, String email, Address address) {
|
||||
super(name, firstname, password, email, address);
|
||||
}
|
||||
|
||||
public Worker(User user) {
|
||||
super(user.getId(), user.getName(), user.getFirstname(), user.getPassword(), user.getEmail(), user.getAddress());
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,95 @@
|
||||
package com.bib.essensbestellungsverwaltung;
|
||||
|
||||
import javafx.fxml.FXML;
|
||||
import javafx.fxml.FXMLLoader;
|
||||
import javafx.scene.Parent;
|
||||
import javafx.scene.control.Button;
|
||||
import javafx.scene.input.MouseEvent;
|
||||
import javafx.scene.layout.BorderPane;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
public class WorkerMenuController {
|
||||
@FXML
|
||||
public BorderPane contentView;
|
||||
@FXML
|
||||
Button tagesbestellungButton;
|
||||
@FXML
|
||||
Button wochenplanButton;
|
||||
@FXML
|
||||
Button monatsabrechnungButton;
|
||||
@FXML
|
||||
Button mitarbeiterButton;
|
||||
@FXML
|
||||
Button mahlzeitButton;
|
||||
@FXML
|
||||
Button einstellungenButton;
|
||||
|
||||
@FXML
|
||||
public void initialize() {
|
||||
changePage("dailyOrder-view.fxml");
|
||||
setButtonActive(tagesbestellungButton);
|
||||
}
|
||||
|
||||
@FXML
|
||||
public void onTagesbestellungenClick(MouseEvent mouseEvent) {
|
||||
changePage("dailyOrder-view.fxml");
|
||||
setButtonActive(tagesbestellungButton);
|
||||
}
|
||||
|
||||
@FXML
|
||||
public void onWochenplanClick(MouseEvent mouseEvent) {
|
||||
changePage("createFoodplan-view.fxml");
|
||||
setButtonActive(wochenplanButton);
|
||||
}
|
||||
|
||||
@FXML
|
||||
public void onMonatsabrechnungClick(MouseEvent mouseEvent) {
|
||||
changePage("invoice-view.fxml");
|
||||
setButtonActive(monatsabrechnungButton);
|
||||
}
|
||||
|
||||
|
||||
@FXML
|
||||
public void onMitarbeiterClick(MouseEvent mouseEvent) {
|
||||
changePage("createCoworker-view.fxml");
|
||||
setButtonActive(mitarbeiterButton);
|
||||
}
|
||||
|
||||
|
||||
@FXML
|
||||
public void onMahlzeitClick(MouseEvent mouseEvent) {
|
||||
changePage("createFood-view.fxml");
|
||||
setButtonActive(mahlzeitButton);
|
||||
}
|
||||
|
||||
|
||||
public void onEinstellungenClick(MouseEvent mouseEvent) {
|
||||
setButtonActive(einstellungenButton);
|
||||
}
|
||||
|
||||
@FXML
|
||||
public void onAusloggenClick(MouseEvent mouseEvent) throws IOException {
|
||||
AccountMgr.currentUser = null;
|
||||
StartViewApplication.changeScene("login-view.fxml");
|
||||
}
|
||||
|
||||
private void changePage(String page) {
|
||||
try {
|
||||
Parent root = FXMLLoader.load(getClass().getResource(page));
|
||||
contentView.setCenter(root);
|
||||
} catch (IOException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
|
||||
private void setButtonActive(Button b) {
|
||||
tagesbestellungButton.getStyleClass().remove("active");
|
||||
monatsabrechnungButton.getStyleClass().remove("active");
|
||||
wochenplanButton.getStyleClass().remove("active");
|
||||
mahlzeitButton.getStyleClass().remove("active");
|
||||
mitarbeiterButton.getStyleClass().remove("active");
|
||||
einstellungenButton.getStyleClass().remove("active");
|
||||
b.getStyleClass().add("active");
|
||||
}
|
||||
}
|
@ -3,6 +3,7 @@ module com.bib.essensbestellungsverwaltung {
|
||||
requires javafx.fxml;
|
||||
requires java.sql;
|
||||
requires org.xerial.sqlitejdbc;
|
||||
requires org.controlsfx.controls;
|
||||
|
||||
|
||||
opens com.bib.essensbestellungsverwaltung to javafx.fxml;
|
||||
|
@ -1,109 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<?import javafx.geometry.Insets?>
|
||||
<?import javafx.scene.control.Button?>
|
||||
<?import javafx.scene.image.Image?>
|
||||
<?import javafx.scene.image.ImageView?>
|
||||
<?import javafx.scene.layout.AnchorPane?>
|
||||
<?import javafx.scene.layout.HBox?>
|
||||
<?import javafx.scene.layout.VBox?>
|
||||
<?import javafx.scene.text.Font?>
|
||||
|
||||
<AnchorPane prefHeight="625.0" prefWidth="600.0" stylesheets="@adminMenue.css" xmlns="http://javafx.com/javafx/19" xmlns:fx="http://javafx.com/fxml/1" fx:controller="com.bib.essensbestellungsverwaltung.AdminController">
|
||||
<children>
|
||||
<VBox id="optionsContainer" layoutY="25.0" prefHeight="600.0" prefWidth="300.0" stylesheets="@adminMenue.css">
|
||||
<children>
|
||||
<HBox alignment="CENTER_LEFT" prefHeight="40.0" prefWidth="179.0">
|
||||
<children>
|
||||
<ImageView fitHeight="25.0" fitWidth="25.0" pickOnBounds="true" preserveRatio="true">
|
||||
<image>
|
||||
<Image url="@pics/to-do-list.png" />
|
||||
</image>
|
||||
</ImageView>
|
||||
<Button id="buttons" alignment="BASELINE_LEFT" mnemonicParsing="false" prefHeight="25.0" prefWidth="300.0" style="-fx-background-color: transparent;" text="Tagesbestellungen" textFill="WHITE">
|
||||
<font>
|
||||
<Font size="23.0" />
|
||||
</font>
|
||||
</Button>
|
||||
</children>
|
||||
<padding>
|
||||
<Insets bottom="5.0" left="5.0" right="5.0" top="5.0" />
|
||||
</padding>
|
||||
</HBox>
|
||||
<HBox alignment="CENTER_LEFT" prefHeight="35.0" prefWidth="175.0">
|
||||
<children>
|
||||
<ImageView fitHeight="25.0" fitWidth="25.0" pickOnBounds="true" preserveRatio="true">
|
||||
<image>
|
||||
<Image url="@pics/spreadsheet.png" />
|
||||
</image>
|
||||
</ImageView>
|
||||
<Button id="buttons" alignment="BASELINE_LEFT" mnemonicParsing="false" prefHeight="25.0" prefWidth="300.0" style="-fx-background-color: transparent;" text="Monatsabrechnung" textFill="WHITE">
|
||||
<font>
|
||||
<Font size="23.0" />
|
||||
</font>
|
||||
</Button>
|
||||
</children>
|
||||
<padding>
|
||||
<Insets bottom="5.0" left="5.0" right="5.0" top="5.0" />
|
||||
</padding>
|
||||
</HBox>
|
||||
<HBox alignment="CENTER_LEFT" prefHeight="23.0" prefWidth="175.0">
|
||||
<children>
|
||||
<ImageView fitHeight="25.0" fitWidth="25.0" pickOnBounds="true" preserveRatio="true">
|
||||
<image>
|
||||
<Image url="@pics/calendar.png" />
|
||||
</image>
|
||||
</ImageView>
|
||||
<Button id="buttons" alignment="BASELINE_LEFT" mnemonicParsing="false" prefHeight="25.0" prefWidth="300.0" style="-fx-background-color: transparent;" text="Wochenplan" textFill="WHITE">
|
||||
<font>
|
||||
<Font size="23.0" />
|
||||
</font>
|
||||
</Button>
|
||||
</children>
|
||||
<padding>
|
||||
<Insets bottom="5.0" left="5.0" right="5.0" top="5.0" />
|
||||
</padding>
|
||||
</HBox>
|
||||
<HBox alignment="CENTER_LEFT" prefHeight="0.0" prefWidth="175.0">
|
||||
<children>
|
||||
<ImageView fitHeight="25.0" fitWidth="25.0" pickOnBounds="true" preserveRatio="true">
|
||||
<image>
|
||||
<Image url="@pics/lunch.png" />
|
||||
</image>
|
||||
</ImageView>
|
||||
<Button id="buttons" alignment="BASELINE_LEFT" mnemonicParsing="false" prefHeight="25.0" prefWidth="300.0" style="-fx-background-color: transparent;" text="Mahlzeit" textFill="WHITE">
|
||||
<font>
|
||||
<Font size="23.0" />
|
||||
</font>
|
||||
</Button>
|
||||
</children>
|
||||
<padding>
|
||||
<Insets bottom="5.0" left="5.0" right="5.0" top="5.0" />
|
||||
</padding>
|
||||
</HBox>
|
||||
<HBox alignment="CENTER_LEFT" prefHeight="26.0" prefWidth="175.0">
|
||||
<children>
|
||||
<ImageView fitHeight="25.0" fitWidth="25.0" pickOnBounds="true" preserveRatio="true">
|
||||
<image>
|
||||
<Image url="@pics/teamwork.png" />
|
||||
</image>
|
||||
</ImageView>
|
||||
<Button id="buttons" alignment="BASELINE_LEFT" mnemonicParsing="false" prefHeight="25.0" prefWidth="300.0" style="-fx-background-color: transparent;" text="Mitarbeiter" textFill="WHITE">
|
||||
<font>
|
||||
<Font size="23.0" />
|
||||
</font>
|
||||
</Button>
|
||||
</children>
|
||||
<padding>
|
||||
<Insets bottom="5.0" left="5.0" right="5.0" top="5.0" />
|
||||
</padding>
|
||||
</HBox>
|
||||
</children>
|
||||
</VBox>
|
||||
<HBox id="optionsContainer" alignment="TOP_RIGHT" prefHeight="25.0" prefWidth="1200.0" style="-fx-background-color: lightblue;">
|
||||
<children>
|
||||
<Button mnemonicParsing="false" style="-fx-background-color: transparent;" text="Hallo, [Nutzername]" textFill="WHITE" />
|
||||
</children>
|
||||
</HBox>
|
||||
</children>
|
||||
</AnchorPane>
|
@ -1,12 +0,0 @@
|
||||
#buttons:hover{
|
||||
-fx-underline: true;
|
||||
-fx-background-color: rgba(85, 103, 136, 0.64);
|
||||
}
|
||||
|
||||
#buttons:pressed{
|
||||
-fx-background-color: #748d96;
|
||||
}
|
||||
|
||||
#optionsContainer{
|
||||
-fx-background-color: lightblue;
|
||||
}
|
@ -2,9 +2,8 @@
|
||||
|
||||
<?import javafx.geometry.Insets?>
|
||||
<?import javafx.scene.control.Button?>
|
||||
<?import javafx.scene.control.CheckBox?>
|
||||
<?import javafx.scene.control.ChoiceBox?>
|
||||
<?import javafx.scene.control.Label?>
|
||||
<?import javafx.scene.control.ComboBox?>
|
||||
<?import javafx.scene.control.ListView?>
|
||||
<?import javafx.scene.control.TextField?>
|
||||
<?import javafx.scene.layout.AnchorPane?>
|
||||
<?import javafx.scene.layout.HBox?>
|
||||
@ -12,64 +11,111 @@
|
||||
<?import javafx.scene.text.Font?>
|
||||
<?import javafx.scene.text.Text?>
|
||||
|
||||
<AnchorPane prefHeight="760.0" prefWidth="867.0" stylesheets="@child.css" xmlns="http://javafx.com/javafx/19" xmlns:fx="http://javafx.com/fxml/1" fx:controller="com.bib.essensbestellungsverwaltung.ParentController">
|
||||
<children>
|
||||
<Text layoutX="51.0" layoutY="90.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Kinder">
|
||||
<font>
|
||||
<Font size="58.0" />
|
||||
</font>
|
||||
</Text>
|
||||
<HBox id="contentContainer" alignment="CENTER" layoutX="8.0" layoutY="165.0" prefHeight="127.0" prefWidth="937.0">
|
||||
<children>
|
||||
<VBox id="contentContainer" prefHeight="250.0" prefWidth="256.0">
|
||||
<children>
|
||||
<Text strokeType="OUTSIDE" strokeWidth="0.0" text="Vorname">
|
||||
<VBox.margin>
|
||||
<Insets bottom="15.0" top="15.0" />
|
||||
</VBox.margin>
|
||||
</Text>
|
||||
<TextField fx:id="firstName" prefWidth="97.0">
|
||||
<VBox.margin>
|
||||
<Insets bottom="15.0" top="15.0" />
|
||||
</VBox.margin>
|
||||
</TextField>
|
||||
</children>
|
||||
<HBox.margin>
|
||||
<Insets left="15.0" right="15.0" />
|
||||
</HBox.margin>
|
||||
</VBox>
|
||||
<VBox id="contentContainer" prefHeight="250.0" prefWidth="256.0">
|
||||
<children>
|
||||
<Text strokeType="OUTSIDE" strokeWidth="0.0" text="Nachname">
|
||||
<VBox.margin>
|
||||
<Insets bottom="15.0" top="15.0" />
|
||||
</VBox.margin>
|
||||
</Text>
|
||||
<TextField fx:id="lastName" prefWidth="97.0">
|
||||
<VBox.margin>
|
||||
<Insets bottom="15.0" top="15.0" />
|
||||
</VBox.margin>
|
||||
</TextField>
|
||||
</children>
|
||||
<HBox.margin>
|
||||
<Insets left="15.0" right="15.0" />
|
||||
</HBox.margin>
|
||||
</VBox>
|
||||
</children>
|
||||
</HBox>
|
||||
<Button id="btAddChild" fx:id="kindHinzufügenButton" layoutX="779.0" layoutY="646.0" mnemonicParsing="false" onAction="#onKindHinzufügen" prefHeight="26.0" prefWidth="125.0" text="Kind hinzufügen" />
|
||||
<ChoiceBox fx:id="childChoiceBox" layoutX="704.0" layoutY="62.0" onAction="#onSelectChild" prefWidth="150.0" />
|
||||
<Label layoutX="704.0" layoutY="44.0" text="Kind" />
|
||||
<VBox id="contentContainer" layoutX="493.0" layoutY="330.0" prefHeight="250.0" prefWidth="256.0" spacing="20.0">
|
||||
<children>
|
||||
<Text strokeType="OUTSIDE" strokeWidth="0.0" text="Allergien">
|
||||
<VBox.margin>
|
||||
<AnchorPane prefHeight="700.0" prefWidth="950.0" stylesheets="@child.css" xmlns="http://javafx.com/javafx/19" xmlns:fx="http://javafx.com/fxml/1" fx:controller="com.bib.essensbestellungsverwaltung.ChildViewController">
|
||||
<children>
|
||||
<Text layoutX="51.0" layoutY="90.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Kinder">
|
||||
<font>
|
||||
<Font size="58.0" />
|
||||
</font>
|
||||
</Text>
|
||||
<HBox id="contentContainer" alignment="CENTER" layoutX="8.0" layoutY="165.0" prefHeight="331.0" prefWidth="937.0">
|
||||
<children>
|
||||
<VBox id="contentContainer" prefHeight="250.0" prefWidth="256.0">
|
||||
<children>
|
||||
<Text strokeType="OUTSIDE" strokeWidth="0.0" text="Name">
|
||||
<VBox.margin>
|
||||
<Insets bottom="15.0" top="15.0" />
|
||||
</VBox.margin>
|
||||
</Text>
|
||||
<CheckBox fx:id="allergienComboBox" prefHeight="18.0" prefWidth="200.0" />
|
||||
</children>
|
||||
</VBox>
|
||||
<Button id="btAddChild" fx:id="kindLoeschenButton" layoutX="621.0" layoutY="646.0" mnemonicParsing="false" onAction="#onKindLoeschen" prefHeight="26.0" prefWidth="125.0" text="Kind löschen" />
|
||||
</children>
|
||||
</VBox.margin>
|
||||
</Text>
|
||||
<TextField fx:id="name" prefWidth="97.0">
|
||||
<VBox.margin>
|
||||
<Insets bottom="15.0" top="15.0" />
|
||||
</VBox.margin>
|
||||
</TextField>
|
||||
<Text strokeType="OUTSIDE" strokeWidth="0.0" text="Nachname">
|
||||
<VBox.margin>
|
||||
<Insets bottom="15.0" top="15.0" />
|
||||
</VBox.margin>
|
||||
</Text>
|
||||
<TextField fx:id="lastname" prefWidth="97.0">
|
||||
<VBox.margin>
|
||||
<Insets bottom="15.0" top="15.0" />
|
||||
</VBox.margin>
|
||||
</TextField>
|
||||
</children>
|
||||
<HBox.margin>
|
||||
<Insets left="15.0" right="15.0" />
|
||||
</HBox.margin>
|
||||
</VBox>
|
||||
<VBox id="contentContainer" prefHeight="250.0" prefWidth="256.0">
|
||||
<children>
|
||||
<Text strokeType="OUTSIDE" strokeWidth="0.0" text="Straße">
|
||||
<VBox.margin>
|
||||
<Insets bottom="15.0" top="15.0" />
|
||||
</VBox.margin>
|
||||
</Text>
|
||||
<TextField fx:id="street" prefWidth="97.0">
|
||||
<VBox.margin>
|
||||
<Insets bottom="15.0" top="15.0" />
|
||||
</VBox.margin>
|
||||
</TextField>
|
||||
<Text strokeType="OUTSIDE" strokeWidth="0.0" text="Hausnummer">
|
||||
<VBox.margin>
|
||||
<Insets bottom="15.0" top="15.0" />
|
||||
</VBox.margin>
|
||||
</Text>
|
||||
<TextField fx:id="number" prefWidth="97.0">
|
||||
<VBox.margin>
|
||||
<Insets bottom="15.0" top="15.0" />
|
||||
</VBox.margin>
|
||||
</TextField>
|
||||
<Text strokeType="OUTSIDE" strokeWidth="0.0" text="PLZ">
|
||||
<VBox.margin>
|
||||
<Insets bottom="15.0" top="15.0" />
|
||||
</VBox.margin>
|
||||
</Text>
|
||||
<TextField fx:id="plz" prefWidth="97.0">
|
||||
<VBox.margin>
|
||||
<Insets bottom="15.0" top="15.0" />
|
||||
</VBox.margin>
|
||||
</TextField>
|
||||
<Text strokeType="OUTSIDE" strokeWidth="0.0" text="Stadt">
|
||||
<VBox.margin>
|
||||
<Insets bottom="15.0" top="15.0" />
|
||||
</VBox.margin>
|
||||
</Text>
|
||||
<TextField fx:id="city" prefWidth="97.0">
|
||||
<VBox.margin>
|
||||
<Insets bottom="15.0" top="15.0" />
|
||||
</VBox.margin>
|
||||
</TextField>
|
||||
</children>
|
||||
<HBox.margin>
|
||||
<Insets left="15.0" right="15.0" />
|
||||
</HBox.margin>
|
||||
</VBox>
|
||||
<VBox id="contentContainer" prefHeight="250.0" prefWidth="256.0">
|
||||
<children>
|
||||
<Text strokeType="OUTSIDE" strokeWidth="0.0" text="Allergien">
|
||||
<VBox.margin>
|
||||
<Insets bottom="15.0" top="15.0" />
|
||||
</VBox.margin>
|
||||
</Text>
|
||||
<ListView fx:id="allergiesList" prefHeight="101.0" prefWidth="227.0" />
|
||||
<HBox prefHeight="26.0" prefWidth="256.0">
|
||||
<children>
|
||||
<ComboBox fx:id="selectAllergy" prefWidth="150.0" promptText="Allergie wählen" />
|
||||
<ComboBox fx:id="selectAllergySeverity" prefWidth="150.0" promptText="Schwere" />
|
||||
</children>
|
||||
</HBox>
|
||||
<Button fx:id="addAllergy" mnemonicParsing="false" onAction="#addAllergy" prefHeight="25.0" prefWidth="171.0" text="Allergie hinzufügen" />
|
||||
</children>
|
||||
<HBox.margin>
|
||||
<Insets left="15.0" right="15.0" />
|
||||
</HBox.margin>
|
||||
</VBox>
|
||||
</children>
|
||||
</HBox>
|
||||
<Button id="btAddChild" layoutX="421.0" layoutY="587.0" mnemonicParsing="false" onAction="#onBtClick" prefHeight="26.0" prefWidth="125.0" text="Kind hinzufügen" />
|
||||
</children>
|
||||
</AnchorPane>
|
||||
|
@ -11,147 +11,147 @@
|
||||
<?import javafx.scene.text.Font?>
|
||||
|
||||
<AnchorPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="860.0" prefWidth="850.0" stylesheets="@createCoworker.css" xmlns="http://javafx.com/javafx/19" xmlns:fx="http://javafx.com/fxml/1" fx:controller="com.bib.essensbestellungsverwaltung.AdminController">
|
||||
<children>
|
||||
<Label layoutX="301.0" layoutY="49.0" />
|
||||
<Label layoutX="223.0" layoutY="76.0" prefHeight="28.0" prefWidth="220.0" text="Mitarbeiter hinzufügen">
|
||||
<font>
|
||||
<Font size="18.0" />
|
||||
</font>
|
||||
</Label>
|
||||
<VBox layoutX="223.0" layoutY="149.0" prefHeight="317.0" prefWidth="514.0">
|
||||
<children>
|
||||
<HBox prefHeight="43.0" prefWidth="331.0">
|
||||
<children>
|
||||
<Label prefHeight="17.0" prefWidth="116.0" text="Nachname">
|
||||
<font>
|
||||
<Font size="16.0" />
|
||||
</font>
|
||||
</Label>
|
||||
<TextField id="lastname" prefHeight="25.0" prefWidth="194.0" />
|
||||
</children>
|
||||
</HBox>
|
||||
<HBox prefHeight="60.0" prefWidth="331.0">
|
||||
<children>
|
||||
<Label prefHeight="35.0" prefWidth="118.0" text="Vorname">
|
||||
<padding>
|
||||
<children>
|
||||
<Label layoutX="301.0" layoutY="49.0" />
|
||||
<Label layoutX="223.0" layoutY="76.0" prefHeight="28.0" prefWidth="220.0" text="Mitarbeiter hinzufügen">
|
||||
<font>
|
||||
<Font size="18.0" />
|
||||
</font>
|
||||
</Label>
|
||||
<VBox layoutX="223.0" layoutY="149.0" prefHeight="317.0" prefWidth="514.0">
|
||||
<children>
|
||||
<HBox prefHeight="43.0" prefWidth="331.0">
|
||||
<children>
|
||||
<Label prefHeight="17.0" prefWidth="116.0" text="Nachname">
|
||||
<font>
|
||||
<Font size="16.0" />
|
||||
</font>
|
||||
</Label>
|
||||
<TextField fx:id="lastname" prefHeight="25.0" prefWidth="194.0" />
|
||||
</children>
|
||||
</HBox>
|
||||
<HBox prefHeight="60.0" prefWidth="331.0">
|
||||
<children>
|
||||
<Label prefHeight="35.0" prefWidth="118.0" text="Vorname">
|
||||
<padding>
|
||||
<Insets top="10.0" />
|
||||
</padding>
|
||||
<font>
|
||||
<Font size="16.0" />
|
||||
</font>
|
||||
</Label>
|
||||
<TextField fx:id="firstname" prefHeight="25.0" prefWidth="193.0">
|
||||
<HBox.margin>
|
||||
<Insets top="10.0" />
|
||||
</HBox.margin>
|
||||
</TextField>
|
||||
</children>
|
||||
</HBox>
|
||||
<HBox prefHeight="100.0" prefWidth="200.0">
|
||||
<children>
|
||||
<Label prefHeight="35.0" prefWidth="116.0" text="Straße">
|
||||
<font>
|
||||
<Font size="16.0" />
|
||||
</font>
|
||||
<padding>
|
||||
<Insets top="10.0" />
|
||||
</padding>
|
||||
</Label>
|
||||
<TextField fx:id="street" prefHeight="25.0" prefWidth="195.0">
|
||||
<HBox.margin>
|
||||
<Insets top="10.0" />
|
||||
</HBox.margin>
|
||||
</TextField>
|
||||
</children>
|
||||
</HBox>
|
||||
<HBox prefHeight="100.0" prefWidth="200.0">
|
||||
<children>
|
||||
<Label prefHeight="25.0" prefWidth="118.0" text="Hausnummer">
|
||||
<font>
|
||||
<Font size="16.0" />
|
||||
</font>
|
||||
<padding>
|
||||
<Insets top="10.0" />
|
||||
</padding>
|
||||
</Label>
|
||||
<TextField fx:id="number" prefHeight="25.0" prefWidth="87.0">
|
||||
<HBox.margin>
|
||||
<Insets top="10.0" />
|
||||
</HBox.margin>
|
||||
</TextField>
|
||||
</children>
|
||||
</HBox>
|
||||
<HBox prefHeight="24.0" prefWidth="331.0">
|
||||
<children>
|
||||
<Label prefHeight="25.0" prefWidth="118.0" text="PLZ">
|
||||
<font>
|
||||
<Font size="16.0" />
|
||||
</font>
|
||||
</Label>
|
||||
<TextField fx:id="plz" prefHeight="25.0" prefWidth="87.0">
|
||||
<HBox.margin>
|
||||
<Insets />
|
||||
</HBox.margin>
|
||||
</TextField>
|
||||
</children>
|
||||
<padding>
|
||||
<Insets top="10.0" />
|
||||
</padding>
|
||||
<font>
|
||||
<Font size="16.0" />
|
||||
</font>
|
||||
</Label>
|
||||
<TextField id="firstname" prefHeight="25.0" prefWidth="193.0">
|
||||
<HBox.margin>
|
||||
</padding>
|
||||
</HBox>
|
||||
<HBox prefHeight="100.0" prefWidth="200.0">
|
||||
<children>
|
||||
<Label prefHeight="35.0" prefWidth="120.0" text="Stadt">
|
||||
<font>
|
||||
<Font size="16.0" />
|
||||
</font>
|
||||
</Label>
|
||||
<TextField fx:id="city" prefHeight="13.0" prefWidth="194.0">
|
||||
<HBox.margin>
|
||||
<Insets top="5.0" />
|
||||
</HBox.margin>
|
||||
</TextField>
|
||||
</children>
|
||||
<padding>
|
||||
<Insets top="10.0" />
|
||||
</HBox.margin>
|
||||
</TextField>
|
||||
</children>
|
||||
</HBox>
|
||||
<HBox prefHeight="100.0" prefWidth="200.0">
|
||||
<children>
|
||||
<Label prefHeight="35.0" prefWidth="116.0" text="Straße">
|
||||
<font>
|
||||
<Font size="16.0" />
|
||||
</font>
|
||||
<padding>
|
||||
<Insets top="10.0" />
|
||||
</padding>
|
||||
</Label>
|
||||
<TextField id="street" prefHeight="25.0" prefWidth="195.0">
|
||||
<HBox.margin>
|
||||
<Insets top="10.0" />
|
||||
</HBox.margin>
|
||||
</TextField>
|
||||
</children>
|
||||
</HBox>
|
||||
<HBox prefHeight="100.0" prefWidth="200.0">
|
||||
<children>
|
||||
<Label prefHeight="25.0" prefWidth="118.0" text="Hausnummer">
|
||||
<font>
|
||||
<Font size="16.0" />
|
||||
</font>
|
||||
<padding>
|
||||
<Insets top="10.0" />
|
||||
</padding>
|
||||
</Label>
|
||||
<TextField id="number" prefHeight="25.0" prefWidth="87.0">
|
||||
<HBox.margin>
|
||||
<Insets top="10.0" />
|
||||
</HBox.margin>
|
||||
</TextField>
|
||||
</children>
|
||||
</HBox>
|
||||
<HBox prefHeight="24.0" prefWidth="331.0">
|
||||
<children>
|
||||
<Label prefHeight="25.0" prefWidth="118.0" text="PLZ">
|
||||
<font>
|
||||
<Font size="16.0" />
|
||||
</font>
|
||||
</Label>
|
||||
<TextField id="plz" prefHeight="25.0" prefWidth="87.0">
|
||||
<HBox.margin>
|
||||
<Insets />
|
||||
</HBox.margin>
|
||||
</TextField>
|
||||
</children>
|
||||
<padding>
|
||||
<Insets top="10.0" />
|
||||
</padding>
|
||||
</HBox>
|
||||
<HBox prefHeight="100.0" prefWidth="200.0">
|
||||
<children>
|
||||
<Label prefHeight="35.0" prefWidth="120.0" text="Stadt">
|
||||
<font>
|
||||
<Font size="16.0" />
|
||||
</font>
|
||||
</Label>
|
||||
<TextField id="city" prefHeight="13.0" prefWidth="194.0">
|
||||
<HBox.margin>
|
||||
<Insets top="5.0" />
|
||||
</HBox.margin>
|
||||
</TextField>
|
||||
</children>
|
||||
<padding>
|
||||
<Insets top="10.0" />
|
||||
</padding>
|
||||
</HBox>
|
||||
<HBox prefHeight="100.0" prefWidth="200.0">
|
||||
<children>
|
||||
<Label prefHeight="35.0" prefWidth="117.0" text="Email">
|
||||
<font>
|
||||
<Font size="16.0" />
|
||||
</font>
|
||||
<padding>
|
||||
<Insets top="10.0" />
|
||||
</padding>
|
||||
</Label>
|
||||
<TextField id="email" prefHeight="25.0" prefWidth="196.0">
|
||||
<HBox.margin>
|
||||
<Insets top="10.0" />
|
||||
</HBox.margin>
|
||||
</TextField>
|
||||
</children>
|
||||
</HBox>
|
||||
<HBox prefHeight="100.0" prefWidth="471.0">
|
||||
<children>
|
||||
<Label prefHeight="35.0" prefWidth="122.0" text="Passwort">
|
||||
<font>
|
||||
<Font size="16.0" />
|
||||
</font>
|
||||
<padding>
|
||||
<Insets top="10.0" />
|
||||
</padding>
|
||||
</Label>
|
||||
<PasswordField id="password" accessibleRole="PASSWORD_FIELD" prefHeight="25.0" prefWidth="194.0">
|
||||
<HBox.margin>
|
||||
<Insets top="10.0" />
|
||||
</HBox.margin>
|
||||
</PasswordField>
|
||||
</children>
|
||||
</HBox>
|
||||
</children>
|
||||
</VBox>
|
||||
<Button id="btCreateCoworker" fx:id="btCreateCoworker" layoutX="216.0" layoutY="533.0" mnemonicParsing="false" onAction="#onBtSignUp" prefHeight="44.0" prefWidth="158.0" text="Mitarbeiter hinzufügen" />
|
||||
<Button id="btCancelCoworker" fx:id="btCancelCoworker" layoutX="443.0" layoutY="533.0" mnemonicParsing="false" onAction="#onBtCancel" prefHeight="44.0" prefWidth="158.0" text="Abbrechen" />
|
||||
</children>
|
||||
</padding>
|
||||
</HBox>
|
||||
<HBox prefHeight="100.0" prefWidth="200.0">
|
||||
<children>
|
||||
<Label prefHeight="35.0" prefWidth="117.0" text="Email">
|
||||
<font>
|
||||
<Font size="16.0" />
|
||||
</font>
|
||||
<padding>
|
||||
<Insets top="10.0" />
|
||||
</padding>
|
||||
</Label>
|
||||
<TextField fx:id="email" prefHeight="25.0" prefWidth="196.0">
|
||||
<HBox.margin>
|
||||
<Insets top="10.0" />
|
||||
</HBox.margin>
|
||||
</TextField>
|
||||
</children>
|
||||
</HBox>
|
||||
<HBox prefHeight="100.0" prefWidth="471.0">
|
||||
<children>
|
||||
<Label prefHeight="35.0" prefWidth="122.0" text="Passwort">
|
||||
<font>
|
||||
<Font size="16.0" />
|
||||
</font>
|
||||
<padding>
|
||||
<Insets top="10.0" />
|
||||
</padding>
|
||||
</Label>
|
||||
<PasswordField fx:id="password" accessibleRole="PASSWORD_FIELD" prefHeight="25.0" prefWidth="194.0">
|
||||
<HBox.margin>
|
||||
<Insets top="10.0" />
|
||||
</HBox.margin>
|
||||
</PasswordField>
|
||||
</children>
|
||||
</HBox>
|
||||
</children>
|
||||
</VBox>
|
||||
<Button id="btCreateCoworker" fx:id="btCreateCoworker" layoutX="216.0" layoutY="533.0" mnemonicParsing="false" onAction="#onBtSignUp" prefHeight="44.0" prefWidth="158.0" text="Mitarbeiter hinzufügen" />
|
||||
<Button id="btCancelCoworker" fx:id="btCancelCoworker" layoutX="443.0" layoutY="533.0" mnemonicParsing="false" onAction="#onBtCancel" prefHeight="44.0" prefWidth="158.0" text="Abbrechen" />
|
||||
</children>
|
||||
</AnchorPane>
|
||||
|
@ -4,93 +4,105 @@
|
||||
<?import javafx.scene.control.*?>
|
||||
<?import javafx.scene.layout.*?>
|
||||
<?import javafx.scene.text.*?>
|
||||
<?import org.controlsfx.control.*?>
|
||||
|
||||
<AnchorPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="521.0" prefWidth="731.0" stylesheets="@createFood.css" xmlns="http://javafx.com/javafx/17.0.2-ea" xmlns:fx="http://javafx.com/fxml/1">
|
||||
<children>
|
||||
<Label alignment="CENTER" layoutX="247.0" layoutY="29.0" prefHeight="44.0" prefWidth="237.0" text="Gericht hinzufügen">
|
||||
<font>
|
||||
<Font size="18.0" />
|
||||
</font>
|
||||
</Label>
|
||||
<VBox layoutX="136.0" layoutY="73.0" prefHeight="389.0" prefWidth="459.0">
|
||||
<children>
|
||||
<HBox prefHeight="75.0" prefWidth="459.0">
|
||||
<children>
|
||||
<Label prefHeight="33.0" prefWidth="121.0" text="Name des Gerichts" />
|
||||
<TextField prefHeight="25.0" prefWidth="290.0">
|
||||
<HBox.margin>
|
||||
<AnchorPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="600.0" prefWidth="731.0" stylesheets="@createFood.css" xmlns="http://javafx.com/javafx/17.0.2-ea" xmlns:fx="http://javafx.com/fxml/1" fx:controller="com.bib.essensbestellungsverwaltung.CreateFoodController">
|
||||
<children>
|
||||
<Label alignment="CENTER" layoutX="247.0" layoutY="29.0" prefHeight="44.0" prefWidth="237.0" text="Gericht hinzufügen">
|
||||
<font>
|
||||
<Font size="18.0" />
|
||||
</font>
|
||||
</Label>
|
||||
<VBox layoutX="136.0" layoutY="73.0" prefHeight="388.0" prefWidth="459.0">
|
||||
<children>
|
||||
<HBox prefHeight="75.0" prefWidth="459.0">
|
||||
<children>
|
||||
<Label prefHeight="33.0" prefWidth="121.0" text="Name des Gerichts" />
|
||||
<TextField fx:id="name" prefHeight="25.0" prefWidth="290.0">
|
||||
<HBox.margin>
|
||||
<Insets top="5.0" />
|
||||
</HBox.margin>
|
||||
</TextField>
|
||||
</children>
|
||||
</HBox>
|
||||
<HBox prefHeight="75.0" prefWidth="459.0">
|
||||
<children>
|
||||
<Label prefHeight="33.0" prefWidth="121.0" text="Beschreibung" />
|
||||
<TextArea fx:id="description" prefHeight="75.0" prefWidth="290.0" />
|
||||
</children>
|
||||
<padding>
|
||||
<Insets top="5.0" />
|
||||
</HBox.margin>
|
||||
</TextField>
|
||||
</children>
|
||||
</HBox>
|
||||
<HBox prefHeight="75.0" prefWidth="459.0">
|
||||
<children>
|
||||
<Label prefHeight="33.0" prefWidth="121.0" text="Beschreibung" />
|
||||
<TextArea prefHeight="75.0" prefWidth="290.0" />
|
||||
</children>
|
||||
<padding>
|
||||
<Insets top="5.0" />
|
||||
</padding>
|
||||
</HBox>
|
||||
<HBox prefHeight="75.0" prefWidth="459.0">
|
||||
<children>
|
||||
<Label text="Art des Gerichts">
|
||||
<HBox.margin>
|
||||
<Insets top="20.0" />
|
||||
</HBox.margin>
|
||||
</Label>
|
||||
<RadioButton mnemonicParsing="false" text="Hauptgericht">
|
||||
<HBox.margin>
|
||||
<Insets left="35.0" top="20.0" />
|
||||
</HBox.margin>
|
||||
</RadioButton>
|
||||
<RadioButton mnemonicParsing="false" text="Dessert">
|
||||
<HBox.margin>
|
||||
<Insets left="50.0" top="20.0" />
|
||||
</HBox.margin>
|
||||
</RadioButton>
|
||||
</children>
|
||||
</padding>
|
||||
</HBox>
|
||||
<HBox prefHeight="75.0" prefWidth="459.0">
|
||||
<children>
|
||||
<Label text="Art des Gerichts">
|
||||
<HBox.margin>
|
||||
<Insets top="20.0" />
|
||||
</HBox.margin>
|
||||
</Label>
|
||||
<RadioButton fx:id="isHauptgerichtRadio" mnemonicParsing="false" text="Hauptgericht">
|
||||
<HBox.margin>
|
||||
<Insets left="35.0" top="20.0" />
|
||||
</HBox.margin>
|
||||
<toggleGroup>
|
||||
<ToggleGroup fx:id="art" />
|
||||
</toggleGroup>
|
||||
</RadioButton>
|
||||
<RadioButton fx:id="isDessertRadio" mnemonicParsing="false" text="Dessert" toggleGroup="$art">
|
||||
<HBox.margin>
|
||||
<Insets left="50.0" top="20.0" />
|
||||
</HBox.margin>
|
||||
</RadioButton>
|
||||
</children>
|
||||
<VBox.margin>
|
||||
<Insets />
|
||||
</VBox.margin>
|
||||
<padding>
|
||||
<Insets top="5.0" />
|
||||
</padding>
|
||||
</HBox>
|
||||
<HBox prefHeight="75.0" prefWidth="459.0">
|
||||
<children>
|
||||
<Label text="Typ">
|
||||
<HBox.margin>
|
||||
<Insets top="20.0" />
|
||||
</HBox.margin>
|
||||
</Label>
|
||||
<RadioButton fx:id="isVegetarischRadio" mnemonicParsing="false" prefHeight="17.0" prefWidth="91.0" text="Vegetarisch">
|
||||
<HBox.margin>
|
||||
<Insets left="100.0" top="20.0" />
|
||||
</HBox.margin>
|
||||
<toggleGroup>
|
||||
<ToggleGroup fx:id="typ" />
|
||||
</toggleGroup>
|
||||
</RadioButton>
|
||||
<RadioButton fx:id="isVeganRadio" mnemonicParsing="false" text="Vegan" toggleGroup="$typ">
|
||||
<HBox.margin>
|
||||
<Insets left="20.0" top="20.0" />
|
||||
</HBox.margin>
|
||||
</RadioButton>
|
||||
<RadioButton fx:id="isFleischRadio" mnemonicParsing="false" text="Fleisch" toggleGroup="$typ">
|
||||
<HBox.margin>
|
||||
<Insets left="40.0" top="20.0" />
|
||||
</HBox.margin>
|
||||
</RadioButton>
|
||||
</children>
|
||||
</HBox>
|
||||
<HBox prefHeight="76.0" prefWidth="459.0">
|
||||
<children>
|
||||
<Label prefHeight="25.0" prefWidth="171.0" text="Allergien" />
|
||||
<CheckComboBox fx:id="allergienComboBox" prefHeight="25.0" prefWidth="200.0" />
|
||||
</children>
|
||||
</HBox>
|
||||
<Text fx:id="responseText" fill="RED" strokeType="OUTSIDE" strokeWidth="0.0" textAlignment="CENTER" wrappingWidth="459.13673400878906">
|
||||
<VBox.margin>
|
||||
<Insets />
|
||||
<Insets top="20.0" />
|
||||
</VBox.margin>
|
||||
<padding>
|
||||
<Insets top="5.0" />
|
||||
</padding>
|
||||
</HBox>
|
||||
<HBox prefHeight="75.0" prefWidth="459.0">
|
||||
<children>
|
||||
<Label text="Typ">
|
||||
<HBox.margin>
|
||||
<Insets top="20.0" />
|
||||
</HBox.margin>
|
||||
</Label>
|
||||
<RadioButton mnemonicParsing="false" prefHeight="17.0" prefWidth="91.0" text="Vegetarisch">
|
||||
<HBox.margin>
|
||||
<Insets left="100.0" top="20.0" />
|
||||
</HBox.margin>
|
||||
</RadioButton>
|
||||
<RadioButton mnemonicParsing="false" text="Vegan">
|
||||
<HBox.margin>
|
||||
<Insets left="20.0" top="20.0" />
|
||||
</HBox.margin>
|
||||
</RadioButton>
|
||||
<RadioButton mnemonicParsing="false" text="Fleisch">
|
||||
<HBox.margin>
|
||||
<Insets left="40.0" top="20.0" />
|
||||
</HBox.margin>
|
||||
</RadioButton>
|
||||
</children>
|
||||
</HBox>
|
||||
<HBox prefHeight="76.0" prefWidth="459.0">
|
||||
<children>
|
||||
<Label prefHeight="41.0" prefWidth="171.0" text="Allergien mit Komma getrennt" />
|
||||
<TextArea prefHeight="76.0" prefWidth="246.0" />
|
||||
</children>
|
||||
</HBox>
|
||||
</children>
|
||||
</VBox>
|
||||
<Button id="btCreateFood" layoutX="485.0" layoutY="464.0" mnemonicParsing="false" prefHeight="34.0" prefWidth="146.0" text="Hinzufügen" />
|
||||
<Button id="btCancelFood" layoutX="102.0" layoutY="456.0" mnemonicParsing="false" prefHeight="50.0" prefWidth="162.0" text="Abbrechen" />
|
||||
</children>
|
||||
</Text>
|
||||
</children>
|
||||
</VBox>
|
||||
<Button id="btCreateFood" layoutX="484.0" layoutY="481.0" mnemonicParsing="false" onAction="#onHinzufuegen" prefHeight="34.0" prefWidth="146.0" text="Hinzufügen" />
|
||||
<Button id="btCancelFood" layoutX="102.0" layoutY="473.0" mnemonicParsing="false" onAction="#onAbbrechen" prefHeight="50.0" prefWidth="162.0" text="Abbrechen" />
|
||||
</children>
|
||||
</AnchorPane>
|
||||
|
@ -1,87 +1,83 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<?import javafx.geometry.Insets?>
|
||||
<?import javafx.scene.control.Button?>
|
||||
<?import javafx.scene.control.Label?>
|
||||
<?import javafx.scene.control.TextField?>
|
||||
<?import javafx.scene.layout.AnchorPane?>
|
||||
<?import javafx.scene.layout.HBox?>
|
||||
<?import javafx.scene.layout.VBox?>
|
||||
<?import javafx.scene.text.Font?>
|
||||
<?import javafx.geometry.*?>
|
||||
<?import javafx.scene.control.*?>
|
||||
<?import javafx.scene.layout.*?>
|
||||
<?import javafx.scene.text.*?>
|
||||
|
||||
<AnchorPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="599.0" prefWidth="900.0" stylesheets="@createFoodplan.css" xmlns="http://javafx.com/javafx/19" xmlns:fx="http://javafx.com/fxml/1">
|
||||
<children>
|
||||
<Label layoutX="359.0" layoutY="36.0" text="Essensplan erstellen">
|
||||
<font>
|
||||
<Font size="18.0" />
|
||||
</font>
|
||||
</Label>
|
||||
<VBox layoutX="134.0" layoutY="124.0" prefHeight="327.0" prefWidth="632.0">
|
||||
<children>
|
||||
<HBox prefHeight="50.0" prefWidth="632.0">
|
||||
<children>
|
||||
<Label prefHeight="17.0" prefWidth="133.0" text="Datum JJJJ-MMM-TT">
|
||||
<HBox.margin>
|
||||
<Insets top="5.0" />
|
||||
</HBox.margin>
|
||||
</Label>
|
||||
<TextField />
|
||||
</children>
|
||||
</HBox>
|
||||
<HBox prefHeight="50.0" prefWidth="632.0">
|
||||
<children>
|
||||
<Label prefHeight="17.0" prefWidth="133.0" text="Veganes Hauptgericht">
|
||||
<HBox.margin>
|
||||
<Insets top="5.0" />
|
||||
</HBox.margin>
|
||||
</Label>
|
||||
<TextField>
|
||||
<HBox.margin>
|
||||
<Insets />
|
||||
</HBox.margin>
|
||||
</TextField>
|
||||
</children>
|
||||
</HBox>
|
||||
<HBox prefHeight="50.0" prefWidth="632.0">
|
||||
<children>
|
||||
<Label prefHeight="17.0" prefWidth="133.0" text="Zweites Hauptgericht">
|
||||
<HBox.margin>
|
||||
<Insets top="5.0" />
|
||||
</HBox.margin>
|
||||
</Label>
|
||||
<TextField>
|
||||
<HBox.margin>
|
||||
<Insets />
|
||||
</HBox.margin>
|
||||
</TextField>
|
||||
</children>
|
||||
</HBox>
|
||||
<HBox prefHeight="50.0" prefWidth="632.0">
|
||||
<children>
|
||||
<Label prefHeight="17.0" prefWidth="133.0" text="Veganes Dessert">
|
||||
<HBox.margin>
|
||||
<Insets />
|
||||
</HBox.margin>
|
||||
<padding>
|
||||
<Insets top="5.0" />
|
||||
</padding>
|
||||
</Label>
|
||||
<TextField />
|
||||
</children>
|
||||
</HBox>
|
||||
<HBox prefHeight="50.0" prefWidth="632.0">
|
||||
<children>
|
||||
<Label prefHeight="17.0" prefWidth="133.0" text="Zweites Dessert">
|
||||
<padding>
|
||||
<Insets top="5.0" />
|
||||
</padding>
|
||||
</Label>
|
||||
<TextField />
|
||||
</children>
|
||||
</HBox>
|
||||
</children>
|
||||
</VBox>
|
||||
<Button id="btCreateFoodplan" layoutX="112.0" layoutY="427.0" mnemonicParsing="false" prefHeight="68.0" prefWidth="133.0" text="Plan erstellen" />
|
||||
<Button id="btCancelFoodplan" layoutX="299.0" layoutY="427.0" mnemonicParsing="false" prefHeight="68.0" prefWidth="133.0" text="Abbrechen" />
|
||||
</children>
|
||||
</AnchorPane>
|
||||
<HBox alignment="CENTER" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="700.0" prefWidth="950.0" stylesheets="@createFoodplan.css" xmlns="http://javafx.com/javafx/17.0.2-ea" xmlns:fx="http://javafx.com/fxml/1" fx:controller="com.bib.essensbestellungsverwaltung.CreateFoodplanController">
|
||||
<children>
|
||||
<VBox alignment="CENTER" prefHeight="599.0" prefWidth="357.0" spacing="20.0">
|
||||
<children>
|
||||
<Label text="Essensplan erstellen">
|
||||
<font>
|
||||
<Font size="18.0" />
|
||||
</font>
|
||||
</Label>
|
||||
<VBox prefHeight="285.0" prefWidth="358.0">
|
||||
<children>
|
||||
<HBox prefHeight="50.0" prefWidth="632.0">
|
||||
<children>
|
||||
<Label prefHeight="17.0" prefWidth="133.0" text="Datum JJJJ-MMM-TT">
|
||||
<HBox.margin>
|
||||
<Insets top="5.0" />
|
||||
</HBox.margin>
|
||||
</Label>
|
||||
<DatePicker fx:id="date" onAction="#onDateChange" />
|
||||
</children>
|
||||
</HBox>
|
||||
<HBox prefHeight="50.0" prefWidth="632.0">
|
||||
<children>
|
||||
<Label prefHeight="17.0" prefWidth="133.0" text="Veganes Hauptgericht">
|
||||
<HBox.margin>
|
||||
<Insets top="5.0" />
|
||||
</HBox.margin>
|
||||
</Label>
|
||||
<ChoiceBox fx:id="firstMeal" prefWidth="150.0" />
|
||||
</children>
|
||||
</HBox>
|
||||
<HBox prefHeight="50.0" prefWidth="632.0">
|
||||
<children>
|
||||
<Label prefHeight="17.0" prefWidth="133.0" text="Zweites Hauptgericht">
|
||||
<HBox.margin>
|
||||
<Insets top="5.0" />
|
||||
</HBox.margin>
|
||||
</Label>
|
||||
<ChoiceBox fx:id="secondMeal" prefWidth="150.0" />
|
||||
</children>
|
||||
</HBox>
|
||||
<HBox prefHeight="50.0" prefWidth="632.0">
|
||||
<children>
|
||||
<Label prefHeight="17.0" prefWidth="133.0" text="Veganes Dessert">
|
||||
<HBox.margin>
|
||||
<Insets />
|
||||
</HBox.margin>
|
||||
<padding>
|
||||
<Insets top="5.0" />
|
||||
</padding>
|
||||
</Label>
|
||||
<ChoiceBox fx:id="firstDessert" prefWidth="150.0" />
|
||||
</children>
|
||||
</HBox>
|
||||
<HBox prefHeight="50.0" prefWidth="632.0">
|
||||
<children>
|
||||
<Label prefHeight="17.0" prefWidth="133.0" text="Zweites Dessert">
|
||||
<padding>
|
||||
<Insets top="5.0" />
|
||||
</padding>
|
||||
</Label>
|
||||
<ChoiceBox fx:id="secondDessert" prefWidth="150.0" />
|
||||
</children>
|
||||
</HBox>
|
||||
<HBox alignment="CENTER" prefHeight="100.0" prefWidth="200.0">
|
||||
<children>
|
||||
<Button id="btCreateFoodplan" fx:id="erstellenButton" mnemonicParsing="false" onAction="#onPlanErstellen" prefHeight="68.0" prefWidth="133.0" text="Plan erstellen" />
|
||||
<Button id="btCancelFoodplan" mnemonicParsing="false" onAction="#onAbbrechen" prefHeight="68.0" prefWidth="133.0" text="Abbrechen" />
|
||||
</children>
|
||||
</HBox>
|
||||
</children>
|
||||
</VBox>
|
||||
</children>
|
||||
</VBox>
|
||||
</children>
|
||||
</HBox>
|
||||
|
@ -1,14 +1,23 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<?import java.lang.*?>
|
||||
<?import java.util.*?>
|
||||
<?import javafx.scene.*?>
|
||||
<?import javafx.scene.control.*?>
|
||||
<?import javafx.scene.layout.*?>
|
||||
<?import javafx.scene.text.*?>
|
||||
|
||||
<AnchorPane xmlns="http://javafx.com/javafx"
|
||||
xmlns:fx="http://javafx.com/fxml"
|
||||
fx:controller="com.bib.essensbestellungsverwaltung.AdminController"
|
||||
prefHeight="400.0" prefWidth="600.0">
|
||||
|
||||
<AnchorPane prefHeight="700.0" prefWidth="800.0" xmlns="http://javafx.com/javafx/17.0.2-ea" xmlns:fx="http://javafx.com/fxml/1" fx:controller="com.bib.essensbestellungsverwaltung.DailyOrderController">
|
||||
<children>
|
||||
<HBox alignment="CENTER" layoutX="58.0" layoutY="221.0" prefHeight="349.0" prefWidth="683.0">
|
||||
<children>
|
||||
<ListView fx:id="listView" prefHeight="349.0" prefWidth="300.0" />
|
||||
</children>
|
||||
</HBox>
|
||||
<Text layoutX="88.0" layoutY="68.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Tagesbestellung">
|
||||
<font>
|
||||
<Font name="System Bold" size="25.0" />
|
||||
</font>
|
||||
</Text>
|
||||
<DatePicker fx:id="datePicker" layoutX="88.0" layoutY="142.0" onAction="#onChangeDate" />
|
||||
<Label layoutX="88.0" layoutY="121.0" text="Datum" />
|
||||
<Button fx:id="sendButton" layoutX="374.0" layoutY="617.0" mnemonicParsing="false" onAction="#onSendButton" text="Bestellung senden" />
|
||||
</children>
|
||||
</AnchorPane>
|
||||
|
@ -9,19 +9,18 @@
|
||||
|
||||
|
||||
<AnchorPane prefHeight="400.0" prefWidth="600.0" stylesheets="@deleteChild.css" xmlns="http://javafx.com/javafx/19" xmlns:fx="http://javafx.com/fxml/1" fx:controller="com.bib.essensbestellungsverwaltung.ParentController">
|
||||
<children>
|
||||
<Text layoutX="253.0" layoutY="180.0" strokeType="OUTSIDE" strokeWidth="0.0" text="[Name vom Kind] löschen?" wrappingWidth="274.130859375">
|
||||
<font>
|
||||
<Font size="23.0" />
|
||||
</font>
|
||||
</Text>
|
||||
<ImageView fitHeight="150.0" fitWidth="200.0" layoutX="66.0" layoutY="97.0" pickOnBounds="true" preserveRatio="true">
|
||||
<image>
|
||||
<Image url="@pics/trash-can.png" />
|
||||
</image>
|
||||
</ImageView>
|
||||
<Button id="btDeletConfim" layoutX="390.0" layoutY="315.0" mnemonicParsing="false" prefHeight="53.0" prefWidth="141.0" text="Bestätigen" />
|
||||
<Button id="btDeleteDeny" layoutX="71.0" layoutY="315.0" mnemonicParsing="false" prefHeight="53.0" prefWidth="141.0" text="zurück" />
|
||||
</children>
|
||||
|
||||
<children>
|
||||
<Text layoutX="253.0" layoutY="180.0" strokeType="OUTSIDE" strokeWidth="0.0" text="[Name vom Kind] löschen?" wrappingWidth="274.130859375">
|
||||
<font>
|
||||
<Font size="23.0" />
|
||||
</font>
|
||||
</Text>
|
||||
<ImageView fitHeight="150.0" fitWidth="200.0" layoutX="66.0" layoutY="97.0" pickOnBounds="true" preserveRatio="true">
|
||||
<image>
|
||||
<Image url="@pics/trash-can.png" />
|
||||
</image>
|
||||
</ImageView>
|
||||
<Button id="btDeletConfim" layoutX="390.0" layoutY="315.0" mnemonicParsing="false" prefHeight="53.0" prefWidth="141.0" text="Bestätigen" />
|
||||
<Button id="btDeleteDeny" layoutX="71.0" layoutY="315.0" mnemonicParsing="false" prefHeight="53.0" prefWidth="141.0" text="zurück" />
|
||||
</children>
|
||||
</AnchorPane>
|
||||
|
@ -1,14 +1,70 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<?import java.lang.*?>
|
||||
<?import java.util.*?>
|
||||
<?import javafx.scene.*?>
|
||||
<?import javafx.collections.*?>
|
||||
<?import javafx.geometry.*?>
|
||||
<?import javafx.scene.control.*?>
|
||||
<?import javafx.scene.layout.*?>
|
||||
<?import javafx.scene.text.*?>
|
||||
|
||||
<AnchorPane xmlns="http://javafx.com/javafx"
|
||||
xmlns:fx="http://javafx.com/fxml"
|
||||
fx:controller="com.bib.essensbestellungsverwaltung.AdminController"
|
||||
prefHeight="400.0" prefWidth="600.0">
|
||||
|
||||
</AnchorPane>
|
||||
<HBox alignment="CENTER" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="700.0" prefWidth="950.0" xmlns="http://javafx.com/javafx/17.0.2-ea" xmlns:fx="http://javafx.com/fxml/1" fx:controller="com.bib.essensbestellungsverwaltung.InvoiceController">
|
||||
<children>
|
||||
<VBox alignment="CENTER" prefHeight="860.0" prefWidth="500.0">
|
||||
<children>
|
||||
<Text strokeType="OUTSIDE" strokeWidth="0.0" text="Abrechnung erstellen">
|
||||
<font>
|
||||
<Font name="System Bold" size="25.0" />
|
||||
</font></Text>
|
||||
<HBox alignment="CENTER" prefHeight="100.0" prefWidth="122.0" spacing="20.0">
|
||||
<children>
|
||||
<VBox alignment="CENTER" layoutX="150.0" layoutY="10.0" prefHeight="200.0" prefWidth="100.0">
|
||||
<children>
|
||||
<Label text="Kind" />
|
||||
<ChoiceBox fx:id="childChoiceBox"></ChoiceBox>
|
||||
</children>
|
||||
</VBox>
|
||||
<VBox alignment="CENTER" prefHeight="200.0" prefWidth="100.0">
|
||||
<children>
|
||||
<Label text="Monat" />
|
||||
<ChoiceBox fx:id="monatChoiceBox" value="Januar">
|
||||
<items>
|
||||
<FXCollections fx:factory="observableArrayList">
|
||||
<String fx:value="Januar" />
|
||||
<String fx:value="Februar" />
|
||||
<String fx:value="März" />
|
||||
<String fx:value="April" />
|
||||
<String fx:value="Mai" />
|
||||
<String fx:value="Juni" />
|
||||
<String fx:value="Juli" />
|
||||
<String fx:value="August" />
|
||||
<String fx:value="September" />
|
||||
<String fx:value="Oktober" />
|
||||
<String fx:value="November" />
|
||||
<String fx:value="Dezember" />
|
||||
</FXCollections>
|
||||
</items>
|
||||
</ChoiceBox>
|
||||
</children>
|
||||
</VBox>
|
||||
<VBox alignment="CENTER" prefHeight="200.0" prefWidth="100.0">
|
||||
<children>
|
||||
<Label text="Jahr" />
|
||||
<Spinner fx:id="jahrSpinner">
|
||||
<valueFactory>
|
||||
<SpinnerValueFactory.IntegerSpinnerValueFactory initialValue="2023" max="2100" min="2020" />
|
||||
</valueFactory>
|
||||
</Spinner>
|
||||
</children>
|
||||
</VBox>
|
||||
</children>
|
||||
</HBox>
|
||||
<Button mnemonicParsing="false" onMouseClicked="#onRechnungErstellenClick" text="Rechnung erstellen" />
|
||||
<Text fx:id="responseText" strokeType="OUTSIDE" strokeWidth="0.0">
|
||||
<VBox.margin>
|
||||
<Insets top="100.0" />
|
||||
</VBox.margin>
|
||||
</Text>
|
||||
</children>
|
||||
</VBox>
|
||||
</children>
|
||||
</HBox>
|
||||
|
@ -1,147 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<?import javafx.geometry.Insets?>
|
||||
<?import javafx.scene.control.Button?>
|
||||
<?import javafx.scene.control.Label?>
|
||||
<?import javafx.scene.layout.AnchorPane?>
|
||||
<?import javafx.scene.layout.VBox?>
|
||||
<?import javafx.scene.text.Font?>
|
||||
|
||||
<AnchorPane prefHeight="536.0" prefWidth="929.0" style="-fx-background-color: lightblue;" xmlns="http://javafx.com/javafx/19" xmlns:fx="http://javafx.com/fxml/1" fx:controller="com.bib.essensbestellungsverwaltung.MenueController">
|
||||
<children>
|
||||
<Label alignment="CENTER" layoutX="14.0" layoutY="14.0" prefHeight="35.0" prefWidth="895.0" text="Essenbestellung">
|
||||
<font>
|
||||
<Font size="28.0"/>
|
||||
</font>
|
||||
</Label>
|
||||
<Button alignment="CENTER" layoutX="868.0" layoutY="61.0" mnemonicParsing="false" style="-fx-background-color: white;" text="Login" />
|
||||
<VBox layoutX="14.0" layoutY="100.0" prefHeight="350.0" prefWidth="180.0" style="-fx-background-color: transparent; -fx-padding: 5;">
|
||||
<children>
|
||||
<Label alignment="CENTER" contentDisplay="TOP" prefHeight="23.0" prefWidth="196.0" style="-fx-background-color: lightdarkblue;" text="Montag" textAlignment="CENTER">
|
||||
<VBox.margin>
|
||||
<Insets bottom="10.0" />
|
||||
</VBox.margin>
|
||||
<font>
|
||||
<Font size="18.0" />
|
||||
</font>
|
||||
</Label>
|
||||
<Label prefHeight="18.0" prefWidth="180.0" text="Hauptgericht" />
|
||||
<Button alignment="CENTER" mnemonicParsing="false" prefHeight="78.0" prefWidth="218.0" text="Button" />
|
||||
<Button alignment="CENTER" mnemonicParsing="false" prefHeight="78.0" prefWidth="218.0" text="Button" />
|
||||
<Button alignment="CENTER" mnemonicParsing="false" prefHeight="20.0" prefWidth="170.0" text="Button">
|
||||
<VBox.margin>
|
||||
<Insets />
|
||||
</VBox.margin>
|
||||
</Button>
|
||||
<Label prefHeight="18.0" prefWidth="174.0" text="Dessert">
|
||||
<VBox.margin>
|
||||
<Insets top="10.0" />
|
||||
</VBox.margin>
|
||||
</Label>
|
||||
<Button alignment="CENTER" mnemonicParsing="false" prefHeight="78.0" prefWidth="218.0" text="Button" />
|
||||
<Button alignment="CENTER" mnemonicParsing="false" prefHeight="78.0" prefWidth="218.0" text="Button" />
|
||||
<Button alignment="CENTER" mnemonicParsing="false" prefHeight="20.0" prefWidth="170.0" text="Button" />
|
||||
</children>
|
||||
</VBox>
|
||||
<VBox layoutX="194.0" layoutY="100.0" prefHeight="350.0" prefWidth="180.0" style="-fx-background-color: transparent; -fx-padding: 5;">
|
||||
<children>
|
||||
<Label alignment="CENTER" prefHeight="18.0" prefWidth="210.0" text="Dienstag">
|
||||
<font>
|
||||
<Font size="18.0" />
|
||||
</font>
|
||||
</Label>
|
||||
<Label prefHeight="18.0" prefWidth="182.0" text="Hauptgericht">
|
||||
<VBox.margin>
|
||||
<Insets top="10.0" />
|
||||
</VBox.margin>
|
||||
</Label>
|
||||
<Button alignment="CENTER" mnemonicParsing="false" prefHeight="78.0" prefWidth="218.0" text="Button" />
|
||||
<Button alignment="CENTER" mnemonicParsing="false" prefHeight="78.0" prefWidth="218.0" text="Button" />
|
||||
<Button alignment="CENTER" mnemonicParsing="false" prefHeight="20.0" prefWidth="170.0" text="Button" />
|
||||
<Label prefHeight="18.0" prefWidth="183.0" text="Dessert">
|
||||
<VBox.margin>
|
||||
<Insets top="10.0" />
|
||||
</VBox.margin>
|
||||
</Label>
|
||||
<Button alignment="CENTER" mnemonicParsing="false" prefHeight="78.0" prefWidth="218.0" text="Button" />
|
||||
<Button alignment="CENTER" mnemonicParsing="false" prefHeight="78.0" prefWidth="218.0" text="Button" />
|
||||
<Button alignment="CENTER" mnemonicParsing="false" prefHeight="20.0" prefWidth="170.0" text="Button" />
|
||||
</children>
|
||||
</VBox>
|
||||
<VBox layoutX="554.0" layoutY="100.0" prefHeight="350.0" prefWidth="180.0" style="-fx-background-color: transparent; -fx-padding: 5;">
|
||||
<children>
|
||||
<Label alignment="CENTER" prefHeight="18.0" prefWidth="214.0" text="Donnerstag">
|
||||
<font>
|
||||
<Font size="18.0" />
|
||||
</font>
|
||||
</Label>
|
||||
<Label prefHeight="18.0" prefWidth="178.0" text="Hauptgericht">
|
||||
<VBox.margin>
|
||||
<Insets top="10.0" />
|
||||
</VBox.margin>
|
||||
</Label>
|
||||
<Button alignment="CENTER" mnemonicParsing="false" prefHeight="78.0" prefWidth="218.0" text="Button" />
|
||||
<Button alignment="CENTER" mnemonicParsing="false" prefHeight="78.0" prefWidth="218.0" text="Button" />
|
||||
<Button alignment="CENTER" mnemonicParsing="false" prefHeight="20.0" prefWidth="218.0" text="Button" />
|
||||
<Label prefHeight="18.0" prefWidth="186.0" text="Dessert">
|
||||
<VBox.margin>
|
||||
<Insets top="10.0" />
|
||||
</VBox.margin>
|
||||
</Label>
|
||||
<Button alignment="CENTER" mnemonicParsing="false" prefHeight="78.0" prefWidth="218.0" text="Button" />
|
||||
<Button alignment="CENTER" mnemonicParsing="false" prefHeight="78.0" prefWidth="218.0" text="Button" />
|
||||
<Button alignment="CENTER" mnemonicParsing="false" prefHeight="20.0" prefWidth="218.0" text="Button" />
|
||||
</children>
|
||||
</VBox>
|
||||
<VBox layoutX="374.0" layoutY="100.0" prefHeight="350.0" prefWidth="180.0" style="-fx-background-color: transparent; -fx-padding: 5;">
|
||||
<children>
|
||||
<Label alignment="CENTER" prefHeight="18.0" prefWidth="212.0" text="Mittwoch">
|
||||
<font>
|
||||
<Font size="18.0" />
|
||||
</font>
|
||||
</Label>
|
||||
<Label prefHeight="18.0" prefWidth="176.0" text="Hauptgericht">
|
||||
<VBox.margin>
|
||||
<Insets top="10.0" />
|
||||
</VBox.margin>
|
||||
</Label>
|
||||
<Button alignment="CENTER" mnemonicParsing="false" prefHeight="78.0" prefWidth="218.0" text="Button" />
|
||||
<Button alignment="CENTER" mnemonicParsing="false" prefHeight="78.0" prefWidth="218.0" text="Button" />
|
||||
<Button alignment="CENTER" mnemonicParsing="false" prefHeight="20.0" prefWidth="218.0" text="Button" />
|
||||
<Label prefHeight="18.0" prefWidth="177.0" text="Dessert">
|
||||
<VBox.margin>
|
||||
<Insets top="10.0" />
|
||||
</VBox.margin>
|
||||
</Label>
|
||||
<Button alignment="CENTER" mnemonicParsing="false" prefHeight="78.0" prefWidth="218.0" text="Button" />
|
||||
<Button alignment="CENTER" mnemonicParsing="false" prefHeight="78.0" prefWidth="218.0" text="Button" />
|
||||
<Button alignment="CENTER" mnemonicParsing="false" prefHeight="20.0" prefWidth="218.0" text="Button" />
|
||||
</children>
|
||||
</VBox>
|
||||
<VBox layoutX="734.0" layoutY="100.0" prefHeight="350.0" prefWidth="180.0" style="-fx-background-color: transparent; -fx-padding: 5;">
|
||||
<children>
|
||||
<Label alignment="CENTER" prefHeight="18.0" prefWidth="200.0" text="Freitag">
|
||||
<font>
|
||||
<Font size="18.0" />
|
||||
</font>
|
||||
</Label>
|
||||
<Label prefHeight="18.0" prefWidth="190.0" text="Hauptgericht">
|
||||
<VBox.margin>
|
||||
<Insets top="10.0" />
|
||||
</VBox.margin>
|
||||
</Label>
|
||||
<Button alignment="CENTER" mnemonicParsing="false" prefHeight="78.0" prefWidth="218.0" text="Button" />
|
||||
<Button alignment="CENTER" mnemonicParsing="false" prefHeight="78.0" prefWidth="218.0" text="Button" />
|
||||
<Button alignment="CENTER" mnemonicParsing="false" prefHeight="20.0" prefWidth="218.0" text="Button" />
|
||||
<Label prefHeight="18.0" prefWidth="190.0" text="Dessert">
|
||||
<VBox.margin>
|
||||
<Insets top="10.0" />
|
||||
</VBox.margin>
|
||||
</Label>
|
||||
<Button alignment="CENTER" mnemonicParsing="false" prefHeight="78.0" prefWidth="218.0" text="Button" />
|
||||
<Button alignment="CENTER" mnemonicParsing="false" prefHeight="78.0" prefWidth="218.0" text="Button" />
|
||||
<Button alignment="CENTER" mnemonicParsing="false" prefHeight="20.0" prefWidth="218.0" text="Button" />
|
||||
</children>
|
||||
</VBox>
|
||||
</children>
|
||||
</AnchorPane>
|
@ -8,63 +8,66 @@
|
||||
<?import javafx.scene.layout.AnchorPane?>
|
||||
<?import javafx.scene.layout.HBox?>
|
||||
<?import javafx.scene.layout.VBox?>
|
||||
<?import javafx.scene.shape.Circle?>
|
||||
<?import javafx.scene.text.Font?>
|
||||
<?import javafx.scene.text.Text?>
|
||||
|
||||
<AnchorPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/19" xmlns:fx="http://javafx.com/fxml/1" fx:controller="com.bib.essensbestellungsverwaltung.LoginController">
|
||||
<children>
|
||||
<VBox alignment="CENTER" prefHeight="400.0" prefWidth="265.0" style="-fx-background-color: lightblue;">
|
||||
<children>
|
||||
<Text fill="WHITE" strokeType="OUTSIDE" strokeWidth="0.0" text="Essensbestellung">
|
||||
<font>
|
||||
<Font name="Yu Gothic Light" size="26.0" />
|
||||
</font>
|
||||
</Text>
|
||||
</children>
|
||||
<padding>
|
||||
<Insets bottom="150.0" />
|
||||
</padding>
|
||||
</VBox>
|
||||
<Circle fill="#67b5ff2e" layoutX="-23.0" layoutY="368.0" radius="100.0" stroke="BLACK" strokeType="INSIDE" strokeWidth="0.0" />
|
||||
<Circle fill="#69b6ffb0" layoutX="235.0" layoutY="310.0" radius="158.0" stroke="BLACK" strokeType="INSIDE" strokeWidth="0.0" />
|
||||
<Circle fill="#93c4f23d" layoutY="258.0" radius="106.0" stroke="BLACK" strokeType="INSIDE" strokeWidth="0.0" />
|
||||
<VBox alignment="CENTER" layoutX="263.0" prefHeight="400.0" prefWidth="338.0" style="-fx-background-color: white;">
|
||||
<children>
|
||||
<TextField promptText="Email" style="-fx-background-color: transparent; -fx-border-color: lightgray; -fx-border-width: 0 0 1 0;" fx:id="tfEmail">
|
||||
<VBox.margin>
|
||||
<Insets bottom="15.0" left="25.0" right="25.0" top="25.0" />
|
||||
</VBox.margin>
|
||||
<effect>
|
||||
<Blend />
|
||||
</effect>
|
||||
<font>
|
||||
<Font name="Microsoft Tai Le" size="12.0" />
|
||||
</font>
|
||||
</TextField>
|
||||
<PasswordField promptText="Passwort" style="-fx-background-color: transparent; -fx-border-color: lightgray; -fx-border-width: 0 0 1 0;" fx:id="pfPassword">
|
||||
<VBox.margin>
|
||||
<Insets bottom="25.0" left="25.0" right="25.0" top="15.0" />
|
||||
</VBox.margin>
|
||||
<font>
|
||||
<Font name="Microsoft Tai Le Bold" size="12.0" />
|
||||
</font>
|
||||
</PasswordField>
|
||||
<HBox alignment="CENTER" prefHeight="30.0" prefWidth="238.0">
|
||||
<children>
|
||||
<Button mnemonicParsing="false" prefHeight="25.0" prefWidth="106.0" style="-fx-background-radius: 25; -fx-background-color: lightblue;" text="Login" textFill="WHITE" onAction="#onBtLoginClick">
|
||||
<font>
|
||||
<Font name="Microsoft Tai Le Bold" size="12.0" />
|
||||
</font></Button>
|
||||
<Button id="btSignUp" mnemonicParsing="false" prefHeight="25.0" prefWidth="101.0" style="-fx-background-color: tranparent;" text="Sign up" textFill="#7c7b7b" underline="true" onAction="#onBtSingnupClick" />
|
||||
</children>
|
||||
</HBox>
|
||||
</children>
|
||||
<padding>
|
||||
<Insets bottom="65.0" left="45.0" right="45.0" top="45.0" />
|
||||
</padding>
|
||||
</VBox>
|
||||
<Circle fill="#1469b895" layoutX="133.0" layoutY="368.0" radius="106.0" stroke="BLACK" strokeType="INSIDE" strokeWidth="0.0" />
|
||||
<Circle fill="#0088ff82" layoutX="77.0" layoutY="276.0" radius="53.0" stroke="BLACK" strokeType="INSIDE" strokeWidth="0.0" />
|
||||
</children>
|
||||
<AnchorPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="750.0" prefWidth="1300.0" xmlns="http://javafx.com/javafx/19" xmlns:fx="http://javafx.com/fxml/1" fx:controller="com.bib.essensbestellungsverwaltung.LoginController">
|
||||
<children>
|
||||
<VBox alignment="CENTER" prefHeight="750.0" prefWidth="400.0" style="-fx-background-color: lightblue;">
|
||||
<children>
|
||||
<Text fill="WHITE" strokeType="OUTSIDE" strokeWidth="0.0" text="Essensbestellung">
|
||||
<font>
|
||||
<Font name="Yu Gothic Light" size="35.0" />
|
||||
</font>
|
||||
</Text>
|
||||
</children>
|
||||
<padding>
|
||||
<Insets bottom="150.0" />
|
||||
</padding>
|
||||
</VBox>
|
||||
<VBox alignment="CENTER" layoutX="400.0" prefHeight="750.0" prefWidth="900.0" style="-fx-background-color: white;">
|
||||
<children>
|
||||
<TextField fx:id="tfEmail" promptText="Email" style="-fx-background-color: transparent; -fx-border-color: lightgray; -fx-border-width: 0 0 1 0;">
|
||||
<VBox.margin>
|
||||
<Insets bottom="15.0" left="25.0" right="25.0" top="25.0" />
|
||||
</VBox.margin>
|
||||
<effect>
|
||||
<Blend />
|
||||
</effect>
|
||||
<font>
|
||||
<Font name="Microsoft Tai Le Bold" size="20.0" />
|
||||
</font>
|
||||
</TextField>
|
||||
<PasswordField fx:id="pfPassword" promptText="Passwort" style="-fx-background-color: transparent; -fx-border-color: lightgray; -fx-border-width: 0 0 1 0;">
|
||||
<VBox.margin>
|
||||
<Insets bottom="25.0" left="25.0" right="25.0" top="15.0" />
|
||||
</VBox.margin>
|
||||
<font>
|
||||
<Font name="Microsoft Tai Le Bold" size="20.0" />
|
||||
</font>
|
||||
</PasswordField>
|
||||
<HBox alignment="CENTER" prefHeight="30.0" prefWidth="238.0">
|
||||
<children>
|
||||
<Button mnemonicParsing="false" onAction="#onBtLoginClick" prefHeight="45.0" prefWidth="118.0" style="-fx-background-radius: 25; -fx-background-color: lightblue;" text="Login" textFill="WHITE">
|
||||
<font>
|
||||
<Font name="Microsoft Tai Le Bold" size="18.0" />
|
||||
</font>
|
||||
<HBox.margin>
|
||||
<Insets right="15.0" />
|
||||
</HBox.margin></Button>
|
||||
<Button id="btSignUp" mnemonicParsing="false" onAction="#changeToSignUp" prefHeight="25.0" prefWidth="101.0" style="-fx-background-color: tranparent;" text="Sign up" textFill="#7c7b7b" underline="true">
|
||||
<font>
|
||||
<Font size="15.0" />
|
||||
</font>
|
||||
<HBox.margin>
|
||||
<Insets left="15.0" />
|
||||
</HBox.margin></Button>
|
||||
</children>
|
||||
</HBox>
|
||||
</children>
|
||||
<padding>
|
||||
<Insets bottom="65.0" left="45.0" right="45.0" top="45.0" />
|
||||
</padding>
|
||||
</VBox>
|
||||
</children>
|
||||
</AnchorPane>
|
||||
|
@ -17,10 +17,9 @@
|
||||
<Font size="28.0" />
|
||||
</font>
|
||||
</Label>
|
||||
<Button id="btLogin" fx:id="btLogin" alignment="CENTER" layoutX="848.0" layoutY="34.0" mnemonicParsing="false" text="Login" />
|
||||
<HBox layoutX="220.0" layoutY="87.0" prefHeight="414.0" prefWidth="688.0">
|
||||
<HBox layoutX="220.0" layoutY="87.0" prefHeight="414.0" prefWidth="688.0" stylesheets="@menue.css">
|
||||
<children>
|
||||
<VBox prefHeight="350.0" prefWidth="180.0" style="-fx-background-color: transparent; -fx-padding: 5;">
|
||||
<VBox prefHeight="350.0" prefWidth="180.0" style="-fx-background-color: transparent; -fx-padding: 5;" styleClass="container">
|
||||
<children>
|
||||
<Label alignment="CENTER" contentDisplay="TOP" prefHeight="23.0" prefWidth="196.0" style="-fx-background-color: lightdarkblue;" text="Montag" textAlignment="CENTER">
|
||||
<VBox.margin>
|
||||
@ -32,9 +31,12 @@
|
||||
</Label>
|
||||
<VBox prefHeight="200.0" prefWidth="100.0">
|
||||
<children>
|
||||
<Button id="btFoodChoice" fx:id="btFirstMealMon" alignment="CENTER" mnemonicParsing="false" onAction="#setButtonActive" prefHeight="78.0" prefWidth="218.0" styleClass="btFood" text="Mahlzeit 1" />
|
||||
<Button id="btFoodChoice" fx:id="btSecondMealMon" alignment="CENTER" mnemonicParsing="false" onAction="#setButtonActive" prefHeight="78.0" prefWidth="218.0" styleClass="btFood" text="Mahlzeit 2" />
|
||||
<Button id="btFoodChoice" fx:id="btNoMealMon" alignment="CENTER" mnemonicParsing="false" onAction="#setButtonActive" prefHeight="20.0" prefWidth="170.0" styleClass="btFood" text="Keine Mahlzeit">
|
||||
<Button id="btFoodChoice" fx:id="btFirstMealMon" alignment="CENTER" mnemonicParsing="false" onAction="#setButtonActive" prefHeight="78.0" prefWidth="218.0" styleClass="btFood" stylesheets="@menue.css" text="Mahlzeit 1">
|
||||
<VBox.margin>
|
||||
<Insets />
|
||||
</VBox.margin></Button>
|
||||
<Button id="btFoodChoice" fx:id="btSecondMealMon" alignment="CENTER" mnemonicParsing="false" onAction="#setButtonActive" prefHeight="78.0" prefWidth="218.0" styleClass="btFood" stylesheets="@menue.css" text="Mahlzeit 2" />
|
||||
<Button id="btFoodChoice" fx:id="btNoMealMon" alignment="CENTER" mnemonicParsing="false" onAction="#setButtonActive" prefHeight="20.0" prefWidth="170.0" styleClass="btFood" stylesheets="@menue.css" text="Keine Mahlzeit">
|
||||
<VBox.margin>
|
||||
<Insets bottom="20.0" />
|
||||
</VBox.margin>
|
||||
@ -43,14 +45,14 @@
|
||||
</VBox>
|
||||
<VBox prefHeight="200.0" prefWidth="100.0">
|
||||
<children>
|
||||
<Button id="btFoodChoice" fx:id="btFirstDessertMon" alignment="CENTER" mnemonicParsing="false" onAction="#setButtonActive" prefHeight="78.0" prefWidth="218.0" text="Dessert 1" />
|
||||
<Button id="btFoodChoice" fx:id="btSecondDessertMon" alignment="CENTER" mnemonicParsing="false" onAction="#setButtonActive" prefHeight="78.0" prefWidth="218.0" text="Dessert 2" />
|
||||
<Button id="btFoodChoice" fx:id="btNoDessertMon" alignment="CENTER" mnemonicParsing="false" onAction="#setButtonActive" prefHeight="20.0" prefWidth="170.0" text="kein Dessert" />
|
||||
<Button id="btFoodChoice" fx:id="btFirstDessertMon" alignment="CENTER" mnemonicParsing="false" onAction="#setButtonActive" prefHeight="78.0" prefWidth="218.0" styleClass="btFood" text="Dessert 1" />
|
||||
<Button id="btFoodChoice" fx:id="btSecondDessertMon" alignment="CENTER" mnemonicParsing="false" onAction="#setButtonActive" prefHeight="78.0" prefWidth="218.0" styleClass="btFood" text="Dessert 2" />
|
||||
<Button id="btFoodChoice" fx:id="btNoDessertMon" alignment="CENTER" mnemonicParsing="false" onAction="#setButtonActive" prefHeight="20.0" prefWidth="170.0" styleClass="btFood" text="kein Dessert" />
|
||||
</children>
|
||||
</VBox>
|
||||
</children>
|
||||
</VBox>
|
||||
<VBox prefHeight="350.0" prefWidth="180.0" style="-fx-background-color: transparent; -fx-padding: 5;">
|
||||
<VBox prefHeight="350.0" prefWidth="180.0" style="-fx-background-color: transparent; -fx-padding: 5;" styleClass="container">
|
||||
<children>
|
||||
<Label alignment="CENTER" contentDisplay="TOP" prefHeight="23.0" prefWidth="196.0" style="-fx-background-color: lightdarkblue;" text="Dienstag" textAlignment="CENTER">
|
||||
<VBox.margin>
|
||||
@ -62,9 +64,9 @@
|
||||
</Label>
|
||||
<VBox prefHeight="200.0" prefWidth="100.0">
|
||||
<children>
|
||||
<Button id="btFoodChoice" fx:id="btFirstMealTue" alignment="CENTER" mnemonicParsing="false" onAction="#setButtonActive" prefHeight="78.0" prefWidth="218.0" text="Mahlzeit 1" />
|
||||
<Button id="btFoodChoice" fx:id="btSecondMealTue" alignment="CENTER" mnemonicParsing="false" onAction="#setButtonActive" prefHeight="78.0" prefWidth="218.0" text="Mahlzeit 2" />
|
||||
<Button id="btFoodChoice" fx:id="btNoMealTue" alignment="CENTER" mnemonicParsing="false" onAction="#setButtonActive" prefHeight="20.0" prefWidth="170.0" text="Keine Mahlzeit">
|
||||
<Button id="btFoodChoice" fx:id="btFirstMealTue" alignment="CENTER" mnemonicParsing="false" onAction="#setButtonActive" prefHeight="78.0" prefWidth="218.0" styleClass="btFood" text="Mahlzeit 1" />
|
||||
<Button id="btFoodChoice" fx:id="btSecondMealTue" alignment="CENTER" mnemonicParsing="false" onAction="#setButtonActive" prefHeight="78.0" prefWidth="218.0" styleClass="btFood" text="Mahlzeit 2" />
|
||||
<Button id="btFoodChoice" fx:id="btNoMealTue" alignment="CENTER" mnemonicParsing="false" onAction="#setButtonActive" prefHeight="20.0" prefWidth="170.0" styleClass="btFood" text="Keine Mahlzeit">
|
||||
<VBox.margin>
|
||||
<Insets bottom="20.0" />
|
||||
</VBox.margin>
|
||||
@ -73,14 +75,14 @@
|
||||
</VBox>
|
||||
<VBox prefHeight="200.0" prefWidth="100.0">
|
||||
<children>
|
||||
<Button id="btFoodChoice" fx:id="btFirstDessertTue" alignment="CENTER" mnemonicParsing="false" onAction="#setButtonActive" prefHeight="78.0" prefWidth="218.0" text="Dessert 1" />
|
||||
<Button id="btFoodChoice" fx:id="btSecondDessertTue" alignment="CENTER" mnemonicParsing="false" onAction="#setButtonActive" prefHeight="78.0" prefWidth="218.0" text="Dessert 2" />
|
||||
<Button id="btFoodChoice" fx:id="btNoDessertTue" alignment="CENTER" mnemonicParsing="false" onAction="#setButtonActive" prefHeight="20.0" prefWidth="170.0" text="kein Dessert" />
|
||||
<Button id="btFoodChoice" fx:id="btFirstDessertTue" alignment="CENTER" mnemonicParsing="false" onAction="#setButtonActive" prefHeight="78.0" prefWidth="218.0" styleClass="btFood" text="Dessert 1" />
|
||||
<Button id="btFoodChoice" fx:id="btSecondDessertTue" alignment="CENTER" mnemonicParsing="false" onAction="#setButtonActive" prefHeight="78.0" prefWidth="218.0" styleClass="btFood" text="Dessert 2" />
|
||||
<Button id="btFoodChoice" fx:id="btNoDessertTue" alignment="CENTER" mnemonicParsing="false" onAction="#setButtonActive" prefHeight="20.0" prefWidth="170.0" styleClass="btFood" text="kein Dessert" />
|
||||
</children>
|
||||
</VBox>
|
||||
</children>
|
||||
</VBox>
|
||||
<VBox prefHeight="350.0" prefWidth="180.0" style="-fx-background-color: transparent; -fx-padding: 5;">
|
||||
<VBox prefHeight="350.0" prefWidth="180.0" style="-fx-background-color: transparent; -fx-padding: 5;" styleClass="container">
|
||||
<children>
|
||||
<Label alignment="CENTER" contentDisplay="TOP" prefHeight="23.0" prefWidth="196.0" style="-fx-background-color: lightdarkblue;" text="Mittwoch" textAlignment="CENTER">
|
||||
<VBox.margin>
|
||||
@ -92,9 +94,9 @@
|
||||
</Label>
|
||||
<VBox prefHeight="200.0" prefWidth="100.0">
|
||||
<children>
|
||||
<Button id="btFoodChoice" fx:id="btFirstMealWed" alignment="CENTER" mnemonicParsing="false" onAction="#setButtonActive" prefHeight="78.0" prefWidth="218.0" text="Mahlzeit 1" />
|
||||
<Button id="btFoodChoice" fx:id="btSecondMealWed" alignment="CENTER" mnemonicParsing="false" onAction="#setButtonActive" prefHeight="78.0" prefWidth="218.0" text="Mahlzeit 2" />
|
||||
<Button id="btFoodChoice" fx:id="btNoMealWed" alignment="CENTER" mnemonicParsing="false" onAction="#setButtonActive" prefHeight="20.0" prefWidth="170.0" text="Keine Mahlzeit">
|
||||
<Button id="btFoodChoice" fx:id="btFirstMealWed" alignment="CENTER" mnemonicParsing="false" onAction="#setButtonActive" prefHeight="78.0" prefWidth="218.0" styleClass="btFood" text="Mahlzeit 1" />
|
||||
<Button id="btFoodChoice" fx:id="btSecondMealWed" alignment="CENTER" mnemonicParsing="false" onAction="#setButtonActive" prefHeight="78.0" prefWidth="218.0" styleClass="btFood" text="Mahlzeit 2" />
|
||||
<Button id="btFoodChoice" fx:id="btNoMealWed" alignment="CENTER" mnemonicParsing="false" onAction="#setButtonActive" prefHeight="20.0" prefWidth="170.0" styleClass="btFood" text="Keine Mahlzeit">
|
||||
<VBox.margin>
|
||||
<Insets bottom="20.0" />
|
||||
</VBox.margin>
|
||||
@ -103,14 +105,14 @@
|
||||
</VBox>
|
||||
<VBox prefHeight="200.0" prefWidth="100.0">
|
||||
<children>
|
||||
<Button id="btFoodChoice" fx:id="btFirstDessertWed" alignment="CENTER" mnemonicParsing="false" onAction="#setButtonActive" prefHeight="78.0" prefWidth="218.0" text="Dessert 1" />
|
||||
<Button id="btFoodChoice" fx:id="btSecondDessertWed" alignment="CENTER" mnemonicParsing="false" onAction="#setButtonActive" prefHeight="78.0" prefWidth="218.0" text="Dessert 2" />
|
||||
<Button id="btFoodChoice" fx:id="btNoDessertWed" alignment="CENTER" mnemonicParsing="false" onAction="#setButtonActive" prefHeight="20.0" prefWidth="170.0" text="kein Dessert" />
|
||||
<Button id="btFoodChoice" fx:id="btFirstDessertWed" alignment="CENTER" mnemonicParsing="false" onAction="#setButtonActive" prefHeight="78.0" prefWidth="218.0" styleClass="btFood" text="Dessert 1" />
|
||||
<Button id="btFoodChoice" fx:id="btSecondDessertWed" alignment="CENTER" mnemonicParsing="false" onAction="#setButtonActive" prefHeight="78.0" prefWidth="218.0" styleClass="btFood" text="Dessert 2" />
|
||||
<Button id="btFoodChoice" fx:id="btNoDessertWed" alignment="CENTER" mnemonicParsing="false" onAction="#setButtonActive" prefHeight="20.0" prefWidth="170.0" styleClass="btFood" text="kein Dessert" />
|
||||
</children>
|
||||
</VBox>
|
||||
</children>
|
||||
</VBox>
|
||||
<VBox prefHeight="350.0" prefWidth="180.0" style="-fx-background-color: transparent; -fx-padding: 5;">
|
||||
<VBox prefHeight="350.0" prefWidth="180.0" style="-fx-background-color: transparent; -fx-padding: 5;" styleClass="container">
|
||||
<children>
|
||||
<Label alignment="CENTER" contentDisplay="TOP" prefHeight="23.0" prefWidth="196.0" style="-fx-background-color: lightdarkblue;" text="Donnerstag" textAlignment="CENTER">
|
||||
<VBox.margin>
|
||||
@ -122,9 +124,9 @@
|
||||
</Label>
|
||||
<VBox prefHeight="200.0" prefWidth="100.0">
|
||||
<children>
|
||||
<Button id="btFoodChoice" fx:id="btFirstMealThu" alignment="CENTER" mnemonicParsing="false" onAction="#setButtonActive" prefHeight="78.0" prefWidth="218.0" text="Mahlzeit 1" />
|
||||
<Button id="btFoodChoice" fx:id="btSecondMealThu" alignment="CENTER" mnemonicParsing="false" onAction="#setButtonActive" prefHeight="78.0" prefWidth="218.0" text="Mahlzeit 2" />
|
||||
<Button id="btFoodChoice" fx:id="btNoMealThu" alignment="CENTER" mnemonicParsing="false" onAction="#setButtonActive" prefHeight="20.0" prefWidth="170.0" text="Keine Mahlzeit">
|
||||
<Button id="btFoodChoice" fx:id="btFirstMealThu" alignment="CENTER" mnemonicParsing="false" onAction="#setButtonActive" prefHeight="78.0" prefWidth="218.0" styleClass="btFood" text="Mahlzeit 1" />
|
||||
<Button id="btFoodChoice" fx:id="btSecondMealThu" alignment="CENTER" mnemonicParsing="false" onAction="#setButtonActive" prefHeight="78.0" prefWidth="218.0" styleClass="btFood" text="Mahlzeit 2" />
|
||||
<Button id="btFoodChoice" fx:id="btNoMealThu" alignment="CENTER" mnemonicParsing="false" onAction="#setButtonActive" prefHeight="20.0" prefWidth="170.0" styleClass="btFood" text="Keine Mahlzeit">
|
||||
<VBox.margin>
|
||||
<Insets bottom="20.0" />
|
||||
</VBox.margin>
|
||||
@ -133,14 +135,14 @@
|
||||
</VBox>
|
||||
<VBox prefHeight="200.0" prefWidth="100.0">
|
||||
<children>
|
||||
<Button id="btFoodChoice" fx:id="btFirstDessertThu" alignment="CENTER" mnemonicParsing="false" onAction="#setButtonActive" prefHeight="78.0" prefWidth="218.0" text="Dessert 1" />
|
||||
<Button id="btFoodChoice" fx:id="btSecondDessertThu" alignment="CENTER" mnemonicParsing="false" onAction="#setButtonActive" prefHeight="78.0" prefWidth="218.0" text="Dessert 2" />
|
||||
<Button id="btFoodChoice" fx:id="btNoDessertThu" alignment="CENTER" mnemonicParsing="false" onAction="#setButtonActive" prefHeight="20.0" prefWidth="170.0" text="kein Dessert" />
|
||||
<Button id="btFoodChoice" fx:id="btFirstDessertThu" alignment="CENTER" mnemonicParsing="false" onAction="#setButtonActive" prefHeight="78.0" prefWidth="218.0" styleClass="btFood" text="Dessert 1" />
|
||||
<Button id="btFoodChoice" fx:id="btSecondDessertThu" alignment="CENTER" mnemonicParsing="false" onAction="#setButtonActive" prefHeight="78.0" prefWidth="218.0" styleClass="btFood" text="Dessert 2" />
|
||||
<Button id="btFoodChoice" fx:id="btNoDessertThu" alignment="CENTER" mnemonicParsing="false" onAction="#setButtonActive" prefHeight="20.0" prefWidth="170.0" styleClass="btFood" text="kein Dessert" />
|
||||
</children>
|
||||
</VBox>
|
||||
</children>
|
||||
</VBox>
|
||||
<VBox prefHeight="350.0" prefWidth="180.0" style="-fx-background-color: transparent; -fx-padding: 5;">
|
||||
<VBox prefHeight="350.0" prefWidth="180.0" style="-fx-background-color: transparent; -fx-padding: 5;" styleClass="container">
|
||||
<children>
|
||||
<Label alignment="CENTER" contentDisplay="TOP" prefHeight="23.0" prefWidth="196.0" style="-fx-background-color: lightdarkblue;" text="Freitag" textAlignment="CENTER">
|
||||
<VBox.margin>
|
||||
@ -152,9 +154,9 @@
|
||||
</Label>
|
||||
<VBox prefHeight="200.0" prefWidth="100.0">
|
||||
<children>
|
||||
<Button id="btFoodChoice" fx:id="btFirstMealFri" alignment="CENTER" mnemonicParsing="false" onAction="#setButtonActive" prefHeight="78.0" prefWidth="218.0" text="Mahlzeit 1" />
|
||||
<Button id="btFoodChoice" fx:id="btSecondMealFri" alignment="CENTER" mnemonicParsing="false" onAction="#setButtonActive" prefHeight="78.0" prefWidth="218.0" text="Mahlzeit 2" />
|
||||
<Button id="btFoodChoice" fx:id="btNoMealFri" alignment="CENTER" mnemonicParsing="false" onAction="#setButtonActive" prefHeight="20.0" prefWidth="170.0" text="Keine Mahlzeit">
|
||||
<Button id="btFoodChoice" fx:id="btFirstMealFri" alignment="CENTER" mnemonicParsing="false" onAction="#setButtonActive" prefHeight="78.0" prefWidth="218.0" styleClass="btFood" text="Mahlzeit 1" />
|
||||
<Button id="btFoodChoice" fx:id="btSecondMealFri" alignment="CENTER" mnemonicParsing="false" onAction="#setButtonActive" prefHeight="78.0" prefWidth="218.0" styleClass="btFood" text="Mahlzeit 2" />
|
||||
<Button id="btFoodChoice" fx:id="btNoMealFri" alignment="CENTER" mnemonicParsing="false" onAction="#setButtonActive" prefHeight="20.0" prefWidth="170.0" styleClass="btFood" text="Keine Mahlzeit">
|
||||
<VBox.margin>
|
||||
<Insets bottom="20.0" />
|
||||
</VBox.margin>
|
||||
@ -163,9 +165,9 @@
|
||||
</VBox>
|
||||
<VBox prefHeight="200.0" prefWidth="100.0">
|
||||
<children>
|
||||
<Button id="btFoodChoice" fx:id="btFirstDessertFri" alignment="CENTER" mnemonicParsing="false" onAction="#setButtonActive" prefHeight="78.0" prefWidth="218.0" text="Dessert 1" />
|
||||
<Button id="btFoodChoice" fx:id="btSecondDessertFri" alignment="CENTER" mnemonicParsing="false" onAction="#setButtonActive" prefHeight="78.0" prefWidth="218.0" text="Dessert 2" />
|
||||
<Button id="btFoodChoice" fx:id="btNoDessertFri" alignment="CENTER" mnemonicParsing="false" onAction="#setButtonActive" prefHeight="20.0" prefWidth="170.0" text="kein Dessert" />
|
||||
<Button id="btFoodChoice" fx:id="btFirstDessertFri" alignment="CENTER" mnemonicParsing="false" onAction="#setButtonActive" prefHeight="78.0" prefWidth="218.0" styleClass="btFood" text="Dessert 1" />
|
||||
<Button id="btFoodChoice" fx:id="btSecondDessertFri" alignment="CENTER" mnemonicParsing="false" onAction="#setButtonActive" prefHeight="78.0" prefWidth="218.0" styleClass="btFood" text="Dessert 2" />
|
||||
<Button id="btFoodChoice" fx:id="btNoDessertFri" alignment="CENTER" mnemonicParsing="false" onAction="#setButtonActive" prefHeight="20.0" prefWidth="170.0" styleClass="btFood" text="kein Dessert" />
|
||||
</children>
|
||||
</VBox>
|
||||
</children>
|
||||
|
@ -13,7 +13,6 @@
|
||||
-fx-background-radius: 25;
|
||||
}
|
||||
|
||||
|
||||
#btPlaceOrder:hover{
|
||||
-fx-border-width: 0;
|
||||
-fx-text-fill: black;
|
||||
@ -23,11 +22,16 @@
|
||||
#cbChooseChild{
|
||||
-fx-background-color: lightgray;
|
||||
}
|
||||
.btFood{
|
||||
-fx-background-color: transparent;
|
||||
|
||||
.container{
|
||||
-fx-padding: 10%;
|
||||
}
|
||||
|
||||
.btFood.active{
|
||||
-fx-background-color: rgba(97, 97, 232, 0.3);
|
||||
-fx-background-radius: 25;
|
||||
.sidebar-nav_button{
|
||||
-fx-border-width: 0px;
|
||||
}
|
||||
|
||||
.sidebar-nav_button.active {
|
||||
-fx-background-color: #4e92b4;
|
||||
-fx-border-width: 0px;
|
||||
}
|
@ -0,0 +1,17 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<?import javafx.scene.control.*?>
|
||||
<?import javafx.scene.layout.*?>
|
||||
<?import javafx.scene.text.*?>
|
||||
|
||||
|
||||
<AnchorPane prefHeight="700.0" prefWidth="800.0" xmlns="http://javafx.com/javafx/17.0.2-ea" xmlns:fx="http://javafx.com/fxml/1" fx:controller="com.bib.essensbestellungsverwaltung.OrderHistoryController">
|
||||
<children>
|
||||
<Text layoutX="91.0" layoutY="84.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Bestellungen">
|
||||
<font>
|
||||
<Font name="System Bold" size="25.0" />
|
||||
</font>
|
||||
</Text>
|
||||
<ListView fx:id="listView" layoutX="91.0" layoutY="135.0" prefHeight="428.0" prefWidth="499.0" />
|
||||
</children>
|
||||
</AnchorPane>
|
@ -5,72 +5,61 @@
|
||||
<?import javafx.scene.image.Image?>
|
||||
<?import javafx.scene.image.ImageView?>
|
||||
<?import javafx.scene.layout.AnchorPane?>
|
||||
<?import javafx.scene.layout.BorderPane?>
|
||||
<?import javafx.scene.layout.HBox?>
|
||||
<?import javafx.scene.layout.Region?>
|
||||
<?import javafx.scene.layout.VBox?>
|
||||
<?import javafx.scene.text.Font?>
|
||||
|
||||
<?import javafx.scene.layout.BorderPane?>
|
||||
<?import javafx.scene.layout.Region?>
|
||||
<BorderPane fx:id="contentView" prefHeight="750.0" prefWidth="1200.0" stylesheets="@menue.css"
|
||||
xmlns="http://javafx.com/javafx/17.0.2-ea" xmlns:fx="http://javafx.com/fxml/1"
|
||||
fx:controller="com.bib.essensbestellungsverwaltung.ParentMenuController">
|
||||
<BorderPane fx:id="contentView" prefHeight="750.0" prefWidth="1300.0" stylesheets="@menue.css" xmlns="http://javafx.com/javafx/19" xmlns:fx="http://javafx.com/fxml/1" fx:controller="com.bib.essensbestellungsverwaltung.ParentMenuController">
|
||||
<left>
|
||||
<VBox alignment="TOP_CENTER" prefHeight="750.0" prefWidth="350.0" spacing="10.0"
|
||||
style="-fx-background-color: #69b6ff; -fx-padding: 20;" BorderPane.alignment="CENTER">
|
||||
<VBox alignment="TOP_CENTER" prefHeight="750.0" prefWidth="350.0" spacing="10.0" style="-fx-background-color: #ADD8E6FF; -fx-padding: 20;" BorderPane.alignment="CENTER">
|
||||
<children>
|
||||
<Button fx:id="essensplanButton" alignment="CENTER_LEFT" mnemonicParsing="false"
|
||||
onMouseClicked="#onEssensplanClick" prefHeight="60.0" prefWidth="250.0"
|
||||
styleClass="sidebar-nav_button" text="Essensplan">
|
||||
<Button fx:id="essensplanButton" alignment="CENTER_LEFT" mnemonicParsing="false" onMouseClicked="#onEssensplanClick" prefHeight="60.0" prefWidth="250.0" styleClass="sidebar-nav_button" text="Essensplan">
|
||||
<font>
|
||||
<Font size="20.0"/>
|
||||
<Font size="20.0" />
|
||||
</font>
|
||||
<graphic>
|
||||
<ImageView fitHeight="35.0" fitWidth="35.0" pickOnBounds="true" preserveRatio="true">
|
||||
<image>
|
||||
<Image url="@pics/menu.png"/>
|
||||
<Image url="@pics/menu.png" />
|
||||
</image>
|
||||
</ImageView>
|
||||
</graphic>
|
||||
</Button>
|
||||
<Button fx:id="kinderButton" alignment="CENTER_LEFT" mnemonicParsing="false"
|
||||
onMouseClicked="#onKinderClick" prefHeight="60.0" prefWidth="250.0"
|
||||
styleClass="sidebar-nav_button" text="Kinder">
|
||||
<Button fx:id="kinderButton" alignment="CENTER_LEFT" mnemonicParsing="false" onMouseClicked="#onKinderClick" prefHeight="60.0" prefWidth="250.0" styleClass="sidebar-nav_button" text="Kinder">
|
||||
<font>
|
||||
<Font size="20.0"/>
|
||||
<Font size="20.0" />
|
||||
</font>
|
||||
<graphic>
|
||||
<ImageView fitHeight="35.0" fitWidth="35.0" pickOnBounds="true" preserveRatio="true">
|
||||
<image>
|
||||
<Image url="@pics/little-kid.png"/>
|
||||
<Image url="@pics/little-kid.png" />
|
||||
</image>
|
||||
</ImageView>
|
||||
</graphic>
|
||||
</Button>
|
||||
<Button fx:id="bestellungButton" alignment="CENTER_LEFT" mnemonicParsing="false"
|
||||
onMouseClicked="#onBestellungClick" prefHeight="60.0" prefWidth="250.0"
|
||||
styleClass="sidebar-nav_button" text="Bestellung">
|
||||
<Button fx:id="bestellungButton" alignment="CENTER_LEFT" mnemonicParsing="false" onMouseClicked="#onBestellungClick" prefHeight="60.0" prefWidth="250.0" styleClass="sidebar-nav_button" text="Bestellung">
|
||||
<font>
|
||||
<Font size="20.0"/>
|
||||
<Font size="20.0" />
|
||||
</font>
|
||||
<graphic>
|
||||
<ImageView fitHeight="35.0" fitWidth="35.0" pickOnBounds="true" preserveRatio="true">
|
||||
<image>
|
||||
<Image url="@pics/shopping-list.png"/>
|
||||
<Image url="@pics/shopping-list.png" />
|
||||
</image>
|
||||
</ImageView>
|
||||
</graphic>
|
||||
</Button>
|
||||
<Region VBox.vgrow="ALWAYS"/>
|
||||
<Button fx:id="einstellungenButton" alignment="CENTER_LEFT" layoutX="10.0" layoutY="130.0"
|
||||
mnemonicParsing="false" onMouseClicked="#onEinstellungenClick" prefHeight="60.0"
|
||||
prefWidth="250.0" styleClass="sidebar-nav_button" text="Einstellungen">
|
||||
<Region VBox.vgrow="ALWAYS" />
|
||||
<Button fx:id="einstellungenButton" alignment="CENTER_LEFT" layoutX="10.0" layoutY="130.0" mnemonicParsing="false" onMouseClicked="#onEinstellungenClick" prefHeight="60.0" prefWidth="250.0" styleClass="sidebar-nav_button" text="Einstellungen">
|
||||
<font>
|
||||
<Font size="20.0"/>
|
||||
<Font size="20.0" />
|
||||
</font>
|
||||
<graphic>
|
||||
<ImageView fitHeight="35.0" fitWidth="35.0" pickOnBounds="true" preserveRatio="true">
|
||||
<image>
|
||||
<Image url="@pics/setting.png"/>
|
||||
<Image url="@pics/setting.png" />
|
||||
</image>
|
||||
</ImageView>
|
||||
</graphic>
|
||||
@ -79,23 +68,20 @@
|
||||
</VBox>
|
||||
</left>
|
||||
<top>
|
||||
<HBox alignment="CENTER_RIGHT" prefHeight="50.0" prefWidth="1200.0" style="-fx-background-color: #69b6ff;"
|
||||
BorderPane.alignment="CENTER">
|
||||
<HBox alignment="CENTER_RIGHT" prefHeight="50.0" prefWidth="1200.0" style="-fx-background-color: #ADD8E6FF;" BorderPane.alignment="CENTER">
|
||||
<children>
|
||||
<Button mnemonicParsing="false" onMouseClicked="#onAusloggenClick" styleClass="sidebar-nav_button"
|
||||
text="Ausloggen">
|
||||
<Button mnemonicParsing="false" onMouseClicked="#onAusloggenClick" styleClass="sidebar-nav_button" text="Ausloggen">
|
||||
<opaqueInsets>
|
||||
<Insets/>
|
||||
<Insets />
|
||||
</opaqueInsets>
|
||||
</Button>
|
||||
</children>
|
||||
<padding>
|
||||
<Insets right="20.0"/>
|
||||
<Insets right="20.0" />
|
||||
</padding>
|
||||
</HBox>
|
||||
</top>
|
||||
<center>
|
||||
<AnchorPane prefHeight="200.0" prefWidth="200.0" BorderPane.alignment="CENTER"/>
|
||||
<AnchorPane prefHeight="200.0" prefWidth="200.0" BorderPane.alignment="CENTER" />
|
||||
</center>
|
||||
</BorderPane>
|
||||
|
@ -80,104 +80,104 @@
|
||||
<Button mnemonicParsing="false" onAction="#onLogOutBtClick" text="Abmelden" />
|
||||
</children>
|
||||
</HBox>
|
||||
<HBox fx:id="UserSetting" layoutX="343.0" layoutY="48.0" prefHeight="355.0" prefWidth="856.0" style="-fx-border-width: 1 1 1 1; -fx-border-color: lightblue;" AnchorPane.topAnchor="230.0">
|
||||
<children>
|
||||
<VBox prefHeight="353.0" prefWidth="260.0">
|
||||
<children>
|
||||
<Label text="Elterndaten">
|
||||
<font>
|
||||
<Font name="Microsoft Tai Le Bold" size="24.0" />
|
||||
</font>
|
||||
<VBox.margin>
|
||||
<Insets bottom="25.0" left="25.0" right="25.0" top="10.0" />
|
||||
</VBox.margin>
|
||||
</Label>
|
||||
<TextField prefHeight="36.0" prefWidth="274.0" promptText="aktuelles Passwort" style="-fx-background-color: transparent; -fx-border-color: lightgray; -fx-border-width: 0 0 1 0;">
|
||||
<VBox.margin>
|
||||
<Insets bottom="25.0" left="20.0" right="25.0" top="5.0" />
|
||||
</VBox.margin>
|
||||
<font>
|
||||
<Font name="Microsoft Tai Le Bold" size="16.0" />
|
||||
</font>
|
||||
</TextField>
|
||||
<TextField promptText="neues Passwort" style="-fx-background-color: transparent; -fx-border-color: lightgray; -fx-border-width: 0 0 1 0;">
|
||||
<VBox.margin>
|
||||
<Insets left="20.0" right="25.0" top="5.0" />
|
||||
</VBox.margin>
|
||||
<font>
|
||||
<Font name="Microsoft Tai Le Bold" size="16.799999237060547" />
|
||||
</font>
|
||||
</TextField>
|
||||
<TextField promptText="passwort bestätigen " style="-fx-background-color: transparent; -fx-border-color: lightgray; -fx-border-width: 0 0 1 0;">
|
||||
<VBox.margin>
|
||||
<Insets bottom="25.0" left="20.0" right="25.0" top="25.0" />
|
||||
</VBox.margin>
|
||||
<font>
|
||||
<Font name="Microsoft Tai Le Bold" size="16.799999237060547" />
|
||||
</font>
|
||||
</TextField>
|
||||
<Button alignment="BASELINE_LEFT" contentDisplay="TOP" mnemonicParsing="false" style="-fx-background-radius: 25; -fx-background-color: lightblue;" text="Passowrt ändern" textFill="WHITE">
|
||||
<font>
|
||||
<Font name="Microsoft Tai Le Bold" size="16.799999237060547" />
|
||||
</font>
|
||||
<VBox.margin>
|
||||
<Insets left="80.0" top="25.0" />
|
||||
</VBox.margin>
|
||||
</Button>
|
||||
</children>
|
||||
</VBox>
|
||||
<VBox prefHeight="353.0" prefWidth="245.0">
|
||||
<children>
|
||||
<TextField prefHeight="35.0" prefWidth="102.0" promptText="PLZ" style="-fx-background-color: transparent; -fx-border-color: lightgray; -fx-border-width: 0 0 1 0;">
|
||||
<VBox.margin>
|
||||
<Insets bottom="25.0" left="20.0" right="25.0" top="75.0" />
|
||||
</VBox.margin>
|
||||
<font>
|
||||
<Font name="Microsoft Tai Le Bold" size="16.0" />
|
||||
</font>
|
||||
</TextField>
|
||||
<TextField promptText="Straße" style="-fx-background-color: transparent; -fx-border-color: lightgray; -fx-border-width: 0 0 1 0;">
|
||||
<font>
|
||||
<Font name="Microsoft Tai Le Bold" size="16.799999237060547" />
|
||||
</font>
|
||||
<VBox.margin>
|
||||
<Insets bottom="25.0" left="20.0" right="25.0" top="5.0" />
|
||||
</VBox.margin>
|
||||
</TextField>
|
||||
</children>
|
||||
<HBox.margin>
|
||||
<Insets left="80.0" />
|
||||
</HBox.margin>
|
||||
</VBox>
|
||||
<VBox prefHeight="411.0" prefWidth="225.0">
|
||||
<children>
|
||||
<TextField promptText="Stadt" style="-fx-background-color: transparent; -fx-border-color: lightgray; -fx-border-width: 0 0 1 0;">
|
||||
<VBox.margin>
|
||||
<Insets left="20.0" right="25.0" top="75.0" />
|
||||
</VBox.margin>
|
||||
<font>
|
||||
<Font name="Microsoft Tai Le Bold" size="16.799999237060547" />
|
||||
</font>
|
||||
</TextField>
|
||||
<TextField promptText="Hausnummer" style="-fx-background-color: transparent; -fx-border-color: lightgray; -fx-border-width: 0 0 1 0;">
|
||||
<font>
|
||||
<Font name="Microsoft Tai Le Bold" size="16.799999237060547" />
|
||||
</font>
|
||||
<VBox.margin>
|
||||
<Insets left="25.0" right="25.0" top="25.0" />
|
||||
</VBox.margin>
|
||||
</TextField>
|
||||
<Button alignment="BASELINE_LEFT" contentDisplay="TOP" mnemonicParsing="false" style="-fx-background-radius: 25; -fx-background-color: lightblue;" text="Adresse ändern" textFill="WHITE">
|
||||
<font>
|
||||
<Font name="Microsoft Tai Le Bold" size="16.799999237060547" />
|
||||
</font>
|
||||
<VBox.margin>
|
||||
<Insets left="60.0" top="120.0" />
|
||||
</VBox.margin>
|
||||
</Button>
|
||||
</children>
|
||||
</VBox>
|
||||
</children>
|
||||
</HBox>
|
||||
<HBox fx:id="UserSetting" layoutX="343.0" layoutY="48.0" prefHeight="355.0" prefWidth="856.0" style="-fx-border-width: 1 1 1 1; -fx-border-color: lightblue;" AnchorPane.topAnchor="230.0">
|
||||
<children>
|
||||
<VBox prefHeight="353.0" prefWidth="260.0">
|
||||
<children>
|
||||
<Label text="Elterndaten">
|
||||
<font>
|
||||
<Font name="Microsoft Tai Le Bold" size="24.0" />
|
||||
</font>
|
||||
<VBox.margin>
|
||||
<Insets bottom="25.0" left="25.0" right="25.0" top="10.0" />
|
||||
</VBox.margin>
|
||||
</Label>
|
||||
<TextField prefHeight="36.0" prefWidth="274.0" promptText="aktuelles Passwort" style="-fx-background-color: transparent; -fx-border-color: lightgray; -fx-border-width: 0 0 1 0;">
|
||||
<VBox.margin>
|
||||
<Insets bottom="25.0" left="20.0" right="25.0" top="5.0" />
|
||||
</VBox.margin>
|
||||
<font>
|
||||
<Font name="Microsoft Tai Le Bold" size="16.0" />
|
||||
</font>
|
||||
</TextField>
|
||||
<TextField promptText="neues Passwort" style="-fx-background-color: transparent; -fx-border-color: lightgray; -fx-border-width: 0 0 1 0;">
|
||||
<VBox.margin>
|
||||
<Insets left="20.0" right="25.0" top="5.0" />
|
||||
</VBox.margin>
|
||||
<font>
|
||||
<Font name="Microsoft Tai Le Bold" size="16.799999237060547" />
|
||||
</font>
|
||||
</TextField>
|
||||
<TextField promptText="passwort bestätigen " style="-fx-background-color: transparent; -fx-border-color: lightgray; -fx-border-width: 0 0 1 0;">
|
||||
<VBox.margin>
|
||||
<Insets bottom="25.0" left="20.0" right="25.0" top="25.0" />
|
||||
</VBox.margin>
|
||||
<font>
|
||||
<Font name="Microsoft Tai Le Bold" size="16.799999237060547" />
|
||||
</font>
|
||||
</TextField>
|
||||
<Button alignment="BASELINE_LEFT" contentDisplay="TOP" mnemonicParsing="false" style="-fx-background-radius: 25; -fx-background-color: lightblue;" text="Passowrt ändern" textFill="WHITE">
|
||||
<font>
|
||||
<Font name="Microsoft Tai Le Bold" size="16.799999237060547" />
|
||||
</font>
|
||||
<VBox.margin>
|
||||
<Insets left="80.0" top="25.0" />
|
||||
</VBox.margin>
|
||||
</Button>
|
||||
</children>
|
||||
</VBox>
|
||||
<VBox prefHeight="353.0" prefWidth="245.0">
|
||||
<children>
|
||||
<TextField prefHeight="35.0" prefWidth="102.0" promptText="PLZ" style="-fx-background-color: transparent; -fx-border-color: lightgray; -fx-border-width: 0 0 1 0;">
|
||||
<VBox.margin>
|
||||
<Insets bottom="25.0" left="20.0" right="25.0" top="75.0" />
|
||||
</VBox.margin>
|
||||
<font>
|
||||
<Font name="Microsoft Tai Le Bold" size="16.0" />
|
||||
</font>
|
||||
</TextField>
|
||||
<TextField promptText="Straße" style="-fx-background-color: transparent; -fx-border-color: lightgray; -fx-border-width: 0 0 1 0;">
|
||||
<font>
|
||||
<Font name="Microsoft Tai Le Bold" size="16.799999237060547" />
|
||||
</font>
|
||||
<VBox.margin>
|
||||
<Insets bottom="25.0" left="20.0" right="25.0" top="5.0" />
|
||||
</VBox.margin>
|
||||
</TextField>
|
||||
</children>
|
||||
<HBox.margin>
|
||||
<Insets left="80.0" />
|
||||
</HBox.margin>
|
||||
</VBox>
|
||||
<VBox prefHeight="411.0" prefWidth="225.0">
|
||||
<children>
|
||||
<TextField promptText="Stadt" style="-fx-background-color: transparent; -fx-border-color: lightgray; -fx-border-width: 0 0 1 0;">
|
||||
<VBox.margin>
|
||||
<Insets left="20.0" right="25.0" top="75.0" />
|
||||
</VBox.margin>
|
||||
<font>
|
||||
<Font name="Microsoft Tai Le Bold" size="16.799999237060547" />
|
||||
</font>
|
||||
</TextField>
|
||||
<TextField promptText="Hausnummer" style="-fx-background-color: transparent; -fx-border-color: lightgray; -fx-border-width: 0 0 1 0;">
|
||||
<font>
|
||||
<Font name="Microsoft Tai Le Bold" size="16.799999237060547" />
|
||||
</font>
|
||||
<VBox.margin>
|
||||
<Insets left="25.0" right="25.0" top="25.0" />
|
||||
</VBox.margin>
|
||||
</TextField>
|
||||
<Button alignment="BASELINE_LEFT" contentDisplay="TOP" mnemonicParsing="false" style="-fx-background-radius: 25; -fx-background-color: lightblue;" text="Adresse ändern" textFill="WHITE">
|
||||
<font>
|
||||
<Font name="Microsoft Tai Le Bold" size="16.799999237060547" />
|
||||
</font>
|
||||
<VBox.margin>
|
||||
<Insets left="60.0" top="120.0" />
|
||||
</VBox.margin>
|
||||
</Button>
|
||||
</children>
|
||||
</VBox>
|
||||
</children>
|
||||
</HBox>
|
||||
</children>
|
||||
</AnchorPane>
|
||||
|
@ -8,35 +8,19 @@
|
||||
<?import javafx.scene.layout.AnchorPane?>
|
||||
<?import javafx.scene.layout.HBox?>
|
||||
<?import javafx.scene.layout.VBox?>
|
||||
<?import javafx.scene.shape.Circle?>
|
||||
<?import javafx.scene.text.Font?>
|
||||
<?import javafx.scene.text.Text?>
|
||||
|
||||
<AnchorPane maxHeight="-400" maxWidth="-600" minHeight="-400" minWidth="-600" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/19" xmlns:fx="http://javafx.com/fxml/1" fx:controller="com.bib.essensbestellungsverwaltung.SingUpController">
|
||||
<AnchorPane maxHeight="750.0" maxWidth="1300.0" minHeight="750.0" minWidth="1200.0" prefHeight="750.0" prefWidth="1300.0" xmlns="http://javafx.com/javafx/19" xmlns:fx="http://javafx.com/fxml/1" fx:controller="com.bib.essensbestellungsverwaltung.SingUpController">
|
||||
<children>
|
||||
<VBox alignment="CENTER" prefHeight="400.0" prefWidth="265.0" style="-fx-background-color: lightblue;">
|
||||
<children>
|
||||
<Text fill="WHITE" strokeType="OUTSIDE" strokeWidth="0.0" text="Essensbestellung">
|
||||
<font>
|
||||
<Font name="Yu Gothic Light" size="26.0" />
|
||||
</font>
|
||||
</Text>
|
||||
</children>
|
||||
<padding>
|
||||
<Insets bottom="150.0" />
|
||||
</padding>
|
||||
</VBox>
|
||||
<Circle fill="#67b5ff2e" layoutX="-23.0" layoutY="368.0" radius="100.0" stroke="BLACK" strokeType="INSIDE" strokeWidth="0.0" />
|
||||
<Circle fill="#69b6ffb0" layoutX="235.0" layoutY="310.0" radius="158.0" stroke="BLACK" strokeType="INSIDE" strokeWidth="0.0" />
|
||||
<Circle fill="#93c4f23d" layoutY="258.0" radius="106.0" stroke="BLACK" strokeType="INSIDE" strokeWidth="0.0" />
|
||||
<VBox layoutX="262.0" prefHeight="400.0" prefWidth="364.0" style="-fx-background-color: white;">
|
||||
<VBox layoutX="400.0" prefHeight="750.0" prefWidth="900.0" style="-fx-background-color: white;">
|
||||
<children>
|
||||
<TextField fx:id="tfLastName" alignment="TOP_LEFT" prefHeight="26.0" prefWidth="282.0" promptText="Name" style="-fx-background-color: transparent; -fx-border-color: lightgray; -fx-border-width: 0 0 1 0;">
|
||||
<effect>
|
||||
<Blend />
|
||||
</effect>
|
||||
<font>
|
||||
<Font name="Microsoft Tai Le Bold" size="12.0" />
|
||||
<Font name="Microsoft Tai Le Bold" size="20.0" />
|
||||
</font>
|
||||
<VBox.margin>
|
||||
<Insets bottom="10.0" left="10.0" right="10.0" top="10.0" />
|
||||
@ -47,7 +31,7 @@
|
||||
<Blend />
|
||||
</effect>
|
||||
<font>
|
||||
<Font name="Microsoft Tai Le Bold" size="12.0" />
|
||||
<Font name="Microsoft Tai Le Bold" size="20.0" />
|
||||
</font>
|
||||
<VBox.margin>
|
||||
<Insets bottom="10.0" left="10.0" right="10.0" top="10.0" />
|
||||
@ -58,7 +42,7 @@
|
||||
<Blend />
|
||||
</effect>
|
||||
<font>
|
||||
<Font name="Microsoft Tai Le Bold" size="12.0" />
|
||||
<Font name="Microsoft Tai Le Bold" size="20.0" />
|
||||
</font>
|
||||
<VBox.margin>
|
||||
<Insets bottom="10.0" left="10.0" right="10.0" top="10.0" />
|
||||
@ -66,7 +50,7 @@
|
||||
</TextField>
|
||||
<PasswordField fx:id="pfPassword" accessibleRole="TEXT_FIELD" promptText="Passwort" style="-fx-background-color: transparent; -fx-border-color: lightgray; -fx-border-width: 0 0 1 0;">
|
||||
<font>
|
||||
<Font name="Microsoft Tai Le Bold" size="12.0" />
|
||||
<Font name="Microsoft Tai Le Bold" size="20.0" />
|
||||
</font>
|
||||
<opaqueInsets>
|
||||
<Insets />
|
||||
@ -80,12 +64,12 @@
|
||||
</PasswordField>
|
||||
<HBox prefHeight="100.0" prefWidth="200.0">
|
||||
<children>
|
||||
<TextField fx:id="tfPostCode" prefHeight="35.0" prefWidth="92.0" promptText="PLZ" style="-fx-background-color: transparent; -fx-border-color: lightgray; -fx-border-width: 0 0 1 0;">
|
||||
<TextField fx:id="tfPostCode" prefHeight="35.0" prefWidth="92.0" promptText="PLZ" style="-fx-background-color: transparent; -fx-border-color: lightgray; -fx-border-width: 0 0 1 0;">
|
||||
<HBox.margin>
|
||||
<Insets bottom="10.0" left="10.0" right="10.0" top="10.0" />
|
||||
</HBox.margin>
|
||||
<font>
|
||||
<Font name="Microsoft Tai Le Bold" size="12.0" />
|
||||
<Font name="Microsoft Tai Le Bold" size="20.0" />
|
||||
</font>
|
||||
</TextField>
|
||||
<TextField fx:id="tfCity" prefHeight="35.0" prefWidth="182.0" promptText="Stadt" style="-fx-background-color: transparent; -fx-border-color: lightgray; -fx-border-width: 0 0 1 0;">
|
||||
@ -93,38 +77,47 @@
|
||||
<Insets bottom="10.0" left="10.0" right="10.0" top="10.0" />
|
||||
</HBox.margin>
|
||||
<font>
|
||||
<Font name="Microsoft Tai Le Bold" size="12.0" />
|
||||
<Font name="Microsoft Tai Le Bold" size="20.0" />
|
||||
</font>
|
||||
</TextField>
|
||||
</children>
|
||||
</HBox>
|
||||
<HBox prefHeight="100.0" prefWidth="200.0">
|
||||
<children>
|
||||
<TextField fx:id="tfStreet" prefHeight="27.0" prefWidth="134.0" promptText="Straße" style="-fx-background-color: transparent; -fx-border-color: lightgray; -fx-border-width: 0 0 1 0;">
|
||||
<TextField fx:id="tfStreet" prefHeight="27.0" prefWidth="134.0" promptText="Straße" style="-fx-background-color: transparent; -fx-border-color: lightgray; -fx-border-width: 0 0 1 0;">
|
||||
<HBox.margin>
|
||||
<Insets bottom="10.0" left="10.0" right="10.0" top="10.0" />
|
||||
</HBox.margin>
|
||||
<font>
|
||||
<Font name="Microsoft Tai Le Bold" size="12.0" />
|
||||
<Font name="Microsoft Tai Le Bold" size="20.0" />
|
||||
</font>
|
||||
</TextField>
|
||||
<TextField fx:id="tfHousNumber" prefHeight="27.0" prefWidth="99.0" promptText="Hausnummer" style="-fx-background-color: transparent; -fx-border-color: lightgray; -fx-border-width: 0 0 1 0;">
|
||||
<TextField fx:id="tfHouseNumber" prefHeight="43.0" prefWidth="155.0" promptText="Hausnummer" style="-fx-background-color: transparent; -fx-border-color: lightgray; -fx-border-width: 0 0 1 0;">
|
||||
<HBox.margin>
|
||||
<Insets bottom="10.0" left="10.0" right="10.0" top="10.0" />
|
||||
</HBox.margin>
|
||||
<font>
|
||||
<Font name="Microsoft Tai Le Bold" size="12.0" />
|
||||
<Font name="Microsoft Tai Le Bold" size="20.0" />
|
||||
</font>
|
||||
</TextField>
|
||||
</children>
|
||||
</HBox>
|
||||
<HBox alignment="CENTER" prefHeight="30.0" prefWidth="238.0">
|
||||
<children>
|
||||
<Button mnemonicParsing="false" onAction="#onKontoErstellenBtClick" prefHeight="25.0" prefWidth="106.0" style="-fx-background-radius: 25; -fx-background-color: lightblue;" text="Konto erstellen" textFill="WHITE">
|
||||
<Button mnemonicParsing="false" onAction="#onKontoErstellenBtClick" prefHeight="48.0" prefWidth="137.0" style="-fx-background-radius: 25; -fx-background-color: lightblue;" text="Konto erstellen" textFill="WHITE">
|
||||
<font>
|
||||
<Font name="Microsoft Tai Le Bold" size="12.0" />
|
||||
</font></Button>
|
||||
<Button id="btSignUp" mnemonicParsing="false" onAction="#onAnmeldenBtClick" prefHeight="25.0" prefWidth="101.0" style="-fx-background-color: tranparent;" text="Anmelden" textFill="#7c7b7b" underline="true" />
|
||||
<Font name="Microsoft Tai Le Bold" size="15.0" />
|
||||
</font>
|
||||
<HBox.margin>
|
||||
<Insets right="15.0" />
|
||||
</HBox.margin></Button>
|
||||
<Button id="btSignUp" mnemonicParsing="false" onAction="#onAnmeldenBtClick" prefHeight="25.0" prefWidth="101.0" style="-fx-background-color: tranparent;" text="Anmelden" textFill="#7c7b7b" underline="true">
|
||||
<font>
|
||||
<Font size="15.0" />
|
||||
</font>
|
||||
<HBox.margin>
|
||||
<Insets left="15.0" />
|
||||
</HBox.margin></Button>
|
||||
</children>
|
||||
<opaqueInsets>
|
||||
<Insets top="15.0" />
|
||||
@ -135,10 +128,20 @@
|
||||
</HBox>
|
||||
</children>
|
||||
<padding>
|
||||
<Insets bottom="65.0" left="45.0" right="45.0" top="45.0" />
|
||||
<Insets bottom="65.0" left="45.0" right="45.0" top="150.0" />
|
||||
</padding>
|
||||
</VBox>
|
||||
<VBox alignment="CENTER" prefHeight="750.0" prefWidth="400.0" style="-fx-background-color: lightblue;">
|
||||
<children>
|
||||
<Text fill="WHITE" strokeType="OUTSIDE" strokeWidth="0.0" text="Essensbestellung">
|
||||
<font>
|
||||
<Font name="Yu Gothic Light" size="35.0" />
|
||||
</font>
|
||||
</Text>
|
||||
</children>
|
||||
<padding>
|
||||
<Insets bottom="150.0" />
|
||||
</padding>
|
||||
</VBox>
|
||||
<Circle fill="#1469b895" layoutX="133.0" layoutY="368.0" radius="106.0" stroke="BLACK" strokeType="INSIDE" strokeWidth="0.0" />
|
||||
<Circle fill="#0088ff82" layoutX="77.0" layoutY="276.0" radius="53.0" stroke="BLACK" strokeType="INSIDE" strokeWidth="0.0" />
|
||||
</children>
|
||||
</AnchorPane>
|
||||
|
@ -0,0 +1,118 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<?import javafx.geometry.Insets?>
|
||||
<?import javafx.scene.control.Button?>
|
||||
<?import javafx.scene.image.Image?>
|
||||
<?import javafx.scene.image.ImageView?>
|
||||
<?import javafx.scene.layout.AnchorPane?>
|
||||
<?import javafx.scene.layout.BorderPane?>
|
||||
<?import javafx.scene.layout.HBox?>
|
||||
<?import javafx.scene.layout.Region?>
|
||||
<?import javafx.scene.layout.VBox?>
|
||||
<?import javafx.scene.text.Font?>
|
||||
|
||||
<BorderPane fx:id="contentView" prefHeight="750.0" prefWidth="1300.0" stylesheets="@menue.css" xmlns="http://javafx.com/javafx/19" xmlns:fx="http://javafx.com/fxml/1" fx:controller="com.bib.essensbestellungsverwaltung.WorkerMenuController">
|
||||
<left>
|
||||
<VBox alignment="TOP_CENTER" prefHeight="750.0" prefWidth="350.0" spacing="10.0" style="-fx-background-color: #ADD8E6FF; -fx-padding: 20;" BorderPane.alignment="CENTER">
|
||||
<children>
|
||||
<Button fx:id="tagesbestellungButton" alignment="CENTER_LEFT" mnemonicParsing="false" onMouseClicked="#onTagesbestellungenClick" prefHeight="60.0" prefWidth="250.0" styleClass="sidebar-nav_button" text="Tagesbestellung">
|
||||
<font>
|
||||
<Font size="20.0" />
|
||||
</font>
|
||||
<graphic>
|
||||
<ImageView fitHeight="35.0" fitWidth="35.0" pickOnBounds="true" preserveRatio="true">
|
||||
<image>
|
||||
<Image url="@pics/to-do-list.png" />
|
||||
</image>
|
||||
</ImageView>
|
||||
</graphic>
|
||||
</Button>
|
||||
<Button fx:id="monatsabrechnungButton" alignment="CENTER_LEFT" mnemonicParsing="false" onMouseClicked="#onMonatsabrechnungClick" prefHeight="60.0" prefWidth="250.0" styleClass="sidebar-nav_button" text="Monatsabrechnung">
|
||||
<font>
|
||||
<Font size="20.0" />
|
||||
</font>
|
||||
<graphic>
|
||||
<ImageView fitHeight="35.0" fitWidth="35.0" pickOnBounds="true" preserveRatio="true">
|
||||
<image>
|
||||
<Image url="@pics/spreadsheet.png" />
|
||||
</image>
|
||||
</ImageView>
|
||||
</graphic>
|
||||
</Button>
|
||||
<Button fx:id="wochenplanButton" alignment="CENTER_LEFT" mnemonicParsing="false" onMouseClicked="#onWochenplanClick" prefHeight="60.0" prefWidth="250.0" styleClass="sidebar-nav_button" text="Wochenplan">
|
||||
<font>
|
||||
<Font size="20.0" />
|
||||
</font>
|
||||
<graphic>
|
||||
<ImageView fitHeight="35.0" fitWidth="35.0" pickOnBounds="true" preserveRatio="true">
|
||||
<image>
|
||||
<Image url="@pics/calendar.png" />
|
||||
</image>
|
||||
</ImageView>
|
||||
</graphic>
|
||||
</Button>
|
||||
<Button fx:id="mahlzeitButton" alignment="CENTER_LEFT" mnemonicParsing="false" onMouseClicked="#onMahlzeitClick" prefHeight="60.0" prefWidth="250.0" styleClass="sidebar-nav_button" text="Mahlzeit">
|
||||
<font>
|
||||
<Font size="20.0" />
|
||||
</font>
|
||||
<graphic>
|
||||
<ImageView fitHeight="35.0" fitWidth="35.0" pickOnBounds="true" preserveRatio="true">
|
||||
<image>
|
||||
<Image url="@pics/lunch.png" />
|
||||
</image>
|
||||
</ImageView>
|
||||
</graphic>
|
||||
</Button>
|
||||
<Button fx:id="mitarbeiterButton" alignment="CENTER_LEFT" mnemonicParsing="false" onMouseClicked="#onMitarbeiterClick" prefHeight="60.0" prefWidth="250.0" styleClass="sidebar-nav_button" text="Mitarbeiter">
|
||||
<font>
|
||||
<Font size="20.0" />
|
||||
</font>
|
||||
<graphic>
|
||||
<ImageView fitHeight="35.0" fitWidth="35.0" pickOnBounds="true" preserveRatio="true">
|
||||
<image>
|
||||
<Image url="@pics/teamwork.png" />
|
||||
</image>
|
||||
</ImageView>
|
||||
</graphic>
|
||||
</Button>
|
||||
<Region style="-fx-padding: 20;" VBox.vgrow="ALWAYS">
|
||||
<opaqueInsets>
|
||||
<Insets />
|
||||
</opaqueInsets>
|
||||
</Region>
|
||||
<Button fx:id="einstellungenButton" alignment="CENTER_LEFT" layoutX="10.0" layoutY="130.0" mnemonicParsing="false" onMouseClicked="#onEinstellungenClick" prefHeight="60.0" prefWidth="250.0" styleClass="sidebar-nav_button" text="Einstellungen">
|
||||
<font>
|
||||
<Font size="20.0" />
|
||||
</font>
|
||||
<graphic>
|
||||
<ImageView fitHeight="35.0" fitWidth="35.0" pickOnBounds="true" preserveRatio="true">
|
||||
<image>
|
||||
<Image url="@pics/setting.png" />
|
||||
</image>
|
||||
</ImageView>
|
||||
</graphic>
|
||||
</Button>
|
||||
</children>
|
||||
<opaqueInsets>
|
||||
<Insets />
|
||||
</opaqueInsets>
|
||||
</VBox>
|
||||
</left>
|
||||
<top>
|
||||
<HBox alignment="CENTER_RIGHT" prefHeight="50.0" prefWidth="1200.0" style="-fx-background-color: #ADD8E6FF;" BorderPane.alignment="CENTER">
|
||||
<children>
|
||||
<Button mnemonicParsing="false" onMouseClicked="#onAusloggenClick" styleClass="sidebar-nav_button" text="Ausloggen">
|
||||
<opaqueInsets>
|
||||
<Insets />
|
||||
</opaqueInsets>
|
||||
</Button>
|
||||
</children>
|
||||
<padding>
|
||||
<Insets right="20.0" />
|
||||
</padding>
|
||||
</HBox>
|
||||
</top>
|
||||
<center>
|
||||
<AnchorPane prefHeight="200.0" prefWidth="200.0" BorderPane.alignment="CENTER" />
|
||||
</center>
|
||||
</BorderPane>
|
Loading…
Reference in New Issue
Block a user