Compare commits

..

55 Commits
stable ... main

Author SHA1 Message Date
c46eff1dda NutzerEinstellung: passwort akuelliseren, Adressse aktuelliseren 2023-02-06 03:23:27 +01:00
20a39be10b Variablen und Attributen auf englisch umbennent 2023-02-05 15:17:51 +01:00
d457b20f15 Merge remote-tracking branch 'origin/main'
# Conflicts:
#	src/main/java/com/bib/essensbestellungsverwaltung/MenueController.java
#	src/main/java/com/bib/essensbestellungsverwaltung/SettingsController.java
#	src/main/java/com/bib/essensbestellungsverwaltung/SingUpController.java
#	src/main/java/com/bib/essensbestellungsverwaltung/StartViewApplication.java
#	src/main/resources/com/bib/essensbestellungsverwaltung/menue-view.fxml
#	src/main/resources/com/bib/essensbestellungsverwaltung/signUp-view.fxml
2023-02-05 15:12:48 +01:00
634d1ce805 test 2023-02-05 15:12:21 +01:00
a9dede0974 Variablen und Attributen auf englisch umbennent 2023-02-05 15:11:42 +01:00
7932c7e896 Variablen und Attributen auf englisch umbennent 2023-02-05 15:11:32 +01:00
a23a1695ad „readme.md“ ändern 2023-02-03 14:51:01 +01:00
ba70f484a7 Kommentare 2: electric boogaloo 2023-02-01 21:33:53 +01:00
9d7b981c22 MenueController Button highlight 2023-02-01 18:32:56 +01:00
28dcd4a7ab MenueController Button highlight 2023-02-01 18:23:19 +01:00
0a7f941d61 Merge remote-tracking branch 'origin/main'
# Conflicts:
#	src/main/java/com/bib/essensbestellungsverwaltung/MenueController.java
2023-02-01 18:18:39 +01:00
6e60fb1517 MenueController Button highlight 2023-02-01 18:17:44 +01:00
Johannes Kantz
6c13cb1873 fix: remove db 2023-02-01 12:03:21 +01:00
Johannes Kantz
289617b9b7 fix: remove .idea folder 2023-02-01 11:55:54 +01:00
cd395d1982 test 2023-02-01 10:14:17 +01:00
Johannes Kantz
ea8beb9de5 fix: remove debug print 2023-02-01 10:14:00 +01:00
Johannes Kantz
b74a983d9a fix: changed window size to prevent essensplan overflow 2023-02-01 10:14:00 +01:00
Johannes Kantz
20700448af add: createFoodplan 2023-02-01 10:14:00 +01:00
Johannes Kantz
5978a079bf add: createFood 2023-02-01 10:13:57 +01:00
Johannes Kantz
56f359a63a add: database.db to gitignore 2023-02-01 10:13:54 +01:00
Johannes Kantz
d02acb89a4 add: change Scenes 2023-02-01 10:13:38 +01:00
Johannes Kantz
c08b0aece5 fix: refactor 2023-02-01 10:13:29 +01:00
Johannes Kantz
4d6c2043d7 fix: changed window size 2023-02-01 10:13:21 +01:00
Johannes Kantz
6555f8f8bc add: Rechnung View 2023-02-01 10:13:03 +01:00
Johannes Kantz
4559ad5036 add: workerMenu 2023-02-01 10:12:52 +01:00
Johannes Kantz
63d1030c7f add: parent menu 2023-02-01 10:12:44 +01:00
846c2c392a singup mit Datebase verbunden und new Adresse 2023-02-01 10:12:26 +01:00
40cc2b002a test 2023-02-01 10:04:35 +01:00
e87bae35bc test 2023-02-01 10:04:20 +01:00
0b02c1c661 Merge remote-tracking branch 'origin/main'
# Conflicts:
#	src/main/java/com/bib/essensbestellungsverwaltung/LoginController.java
#	src/main/java/com/bib/essensbestellungsverwaltung/SingUpController.java
#	src/main/java/com/bib/essensbestellungsverwaltung/StartViewApplication.java
2023-02-01 09:53:51 +01:00
b15b94e579 singup mit Datebase verbunden und new Adresse 2023-02-01 09:48:55 +01:00
0d36d7718e Merge pull request 'feat/essensplanErstellen' (#8) from feat/essensplanErstellen into main
Reviewed-on: #8
2023-02-01 09:38:30 +01:00
3613e246c9 MenueController Button highlight 2023-02-01 09:27:34 +01:00
b7bc440a4f MenueController Button highlight 2023-02-01 09:25:40 +01:00
b456b6d1d8 MenueController Button highlight 2023-01-31 21:26:41 +01:00
3f3875fd78 signup 2023-01-31 17:53:01 +01:00
f09d63dd21 aus main stuff kopiert 2023-01-31 17:51:37 +01:00
pbs2h21asc
2814244d29 Merge remote-tracking branch 'origin/Richards_Branch' into Richards_Branch
# Conflicts:
#	src/main/resources/com/bib/essensbestellungsverwaltung/createCoworker-view.fxml
2023-01-31 12:27:59 +01:00
pbs2h21asc
1a9f13581e Admin Controller bearbeitet 2023-01-31 12:27:14 +01:00
6747188668 settingsview & Controller erstellt 2023-01-31 10:22:48 +01:00
pbs2h21asc
0550482a6b View überarbeitet
Controller AdminController anfangen
2023-01-30 15:03:54 +01:00
pbs2h21asc
6cb48af976 Merge remote-tracking branch 'origin/Richards_Branch' into Richards_Branch 2023-01-30 14:58:43 +01:00
pbs2h21asc
9e4db23e7a View überarbeitet
Controller AdminController anfangen
2023-01-30 14:57:57 +01:00
a039bb09fc „.idea/vcs.xml“ löschen 2023-01-30 14:22:23 +01:00
97af9f3792 „.idea/misc.xml“ löschen 2023-01-30 14:22:17 +01:00
2b1223b3b7 „.idea/encodings.xml“ löschen 2023-01-30 14:22:12 +01:00
7e6b1aedf3 „.idea/.gitignore“ löschen 2023-01-30 14:22:07 +01:00
464285dcbf „database.db“ löschen 2023-01-30 14:21:50 +01:00
49575add8a Merge branch 'main' into Richards_Branch 2023-01-30 14:21:09 +01:00
3c0edbc431 new Regisiteren View 2023-01-27 15:17:17 +01:00
981169d578 Merge remote-tracking branch 'origin/Richards_Branch' into Richards_Branch 2023-01-27 15:11:38 +01:00
9b73f91f5c new Regisiteren View 2023-01-27 15:11:25 +01:00
67b3637505 Views & Controller erstellt 2023-01-27 14:36:10 +01:00
c7d0514c43 Merge remote-tracking branch 'origin/Richards_Branch' into Richards_Branch 2023-01-23 09:08:32 +01:00
702677b65b neue Zustand 23.01.23 2023-01-23 09:08:03 +01:00
64 changed files with 2094 additions and 2712 deletions

4
.gitignore vendored
View File

@ -8,6 +8,7 @@ target/
.idea/jarRepositories.xml .idea/jarRepositories.xml
.idea/compiler.xml .idea/compiler.xml
.idea/libraries/ .idea/libraries/
.idea
*.iws *.iws
*.iml *.iml
*.ipr *.ipr
@ -36,6 +37,3 @@ build/
### Mac OS ### ### Mac OS ###
.DS_Store .DS_Store
/database.db
/Rechnungen/**

3
.idea/.gitignore vendored Normal file
View File

@ -0,0 +1,3 @@
# Default ignored files
/shelf/
/workspace.xml

7
.idea/encodings.xml Normal file
View File

@ -0,0 +1,7 @@
<?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>

12
.idea/misc.xml Normal file
View File

@ -0,0 +1,12 @@
<?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

View File

@ -0,0 +1,4 @@
<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>

124
.idea/uiDesigner.xml Normal file
View File

@ -0,0 +1,124 @@
<?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>

6
.idea/vcs.xml Normal file
View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="" vcs="Git" />
</component>
</project>

147
.idea/workspace.xml Normal file
View File

@ -0,0 +1,147 @@
<?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">{
&quot;keyToString&quot;: {
&quot;ASKED_ADD_EXTERNAL_FILES&quot;: &quot;true&quot;,
&quot;ASKED_SHARE_PROJECT_CONFIGURATION_FILES&quot;: &quot;true&quot;,
&quot;RunOnceActivity.OpenProjectViewOnStart&quot;: &quot;true&quot;,
&quot;RunOnceActivity.ShowReadmeOnStart&quot;: &quot;true&quot;
}
}</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 Normal file

Binary file not shown.

View File

@ -45,11 +45,6 @@
<artifactId>sqlite-jdbc</artifactId> <artifactId>sqlite-jdbc</artifactId>
<version>3.40.0.0</version> <version>3.40.0.0</version>
</dependency> </dependency>
<dependency>
<groupId>org.controlsfx</groupId>
<artifactId>controlsfx</artifactId>
<version>11.1.2</version>
</dependency>
</dependencies> </dependencies>

View File

@ -1,13 +1,3 @@
# Essensbestellungsverwaltung # 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

View File

@ -13,7 +13,6 @@ import java.util.List;
/** /**
* A collection of functions loosely related to account management * A collection of functions loosely related to account management
* Acts as an abstraction layer to the database * Acts as an abstraction layer to the database
*
* @author Malte Schulze Hobeling * @author Malte Schulze Hobeling
*/ */
public class AccountMgr { public class AccountMgr {
@ -22,7 +21,6 @@ public class AccountMgr {
/** /**
* creates a user with createUser(...) and adds its id to the 'worker' table * creates a user with createUser(...) and adds its id to the 'worker' table
*
* @param worker the worker to be created * @param worker the worker to be created
* @return userid or -1 * @return userid or -1
* @author Malte Schulze Hobeling * @author Malte Schulze Hobeling
@ -36,7 +34,6 @@ public class AccountMgr {
/** /**
* creates a user with createUser(...) and adds its id to the 'parent' table * creates a user with createUser(...) and adds its id to the 'parent' table
*
* @param parent the parent to be created * @param parent the parent to be created
* @return userid or -1 * @return userid or -1
* @author Malte Schulze Hobeling * @author Malte Schulze Hobeling
@ -50,7 +47,6 @@ public class AccountMgr {
/** /**
* adds a user to the database * adds a user to the database
*
* @param user the user to be created * @param user the user to be created
* @return userid or -1 * @return userid or -1
* @author Malte Schulze Hobeling * @author Malte Schulze Hobeling
@ -71,7 +67,6 @@ public class AccountMgr {
/** /**
* adds an address to the database * adds an address to the database
*
* @param address the address to be created * @param address the address to be created
* @return id or -1 * @return id or -1
* @author Malte Schulze Hobeling * @author Malte Schulze Hobeling
@ -84,7 +79,6 @@ public class AccountMgr {
/** /**
* adds a child and allergies to the database * adds a child and allergies to the database
*
* @param child the child to be created * @param child the child to be created
* @return id of child or -1 * @return id of child or -1
* @author Malte Schulze Hobeling * @author Malte Schulze Hobeling
@ -105,51 +99,7 @@ public class AccountMgr {
} }
/** /**
* update Child * returns a User(Worker | Parent) for a given id or null if no unique id was found
*
* @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 * @param id id of the User
* @return User(Worker | Parent) or null * @return User(Worker | Parent) or null
* @author Malte Schulze Hobeling * @author Malte Schulze Hobeling
@ -178,7 +128,6 @@ public class AccountMgr {
/** /**
* returns a Child for a given id or null if no unique id was found * returns a Child for a given id or null if no unique id was found
*
* @param id id of child * @param id id of child
* @return Child or null * @return Child or null
* @author Malte Schulze Hobeling * @author Malte Schulze Hobeling
@ -198,86 +147,13 @@ public class AccountMgr {
List<String> severity = Database.getEntryById("severity", Long.parseLong(allergyParts[3])); List<String> severity = Database.getEntryById("severity", Long.parseLong(allergyParts[3]));
String sSeverity = severity.get(0).split(":")[1]; String sSeverity = severity.get(0).split(":")[1];
long lSeverity = Long.parseLong(severity.get(0).split(":")[0]); long lSeverity = Long.parseLong(severity.get(0).split(":")[0]);
allergySeverities.add( allergySeverities.add(new AllergySeverity(FoodMgr.getAllergyById(Long.parseLong(allergyParts[2])),lSeverity,sSeverity));
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 * returns an Address for a given id or null if no unique id was found
*
* @param id id of the address * @param id id of the address
* @return Address or null * @return Address or null
* @author Malte Schulze Hobeling * @author Malte Schulze Hobeling
@ -293,7 +169,6 @@ public class AccountMgr {
/** /**
* creates entries in the database to match parent to child * creates entries in the database to match parent to child
*
* @param parentId id of parent * @param parentId id of parent
* @param childId id of child * @param childId id of child
* @return id of parent_child or -1 * @return id of parent_child or -1
@ -307,7 +182,6 @@ public class AccountMgr {
/** /**
* a simple login to check if a given email matches a password * a simple login to check if a given email matches a password
*
* @param email email * @param email email
* @param pw password * @param pw password
* @return id or -1 * @return id or -1
@ -330,10 +204,35 @@ public class AccountMgr {
String[] userD = {email,hashAndSalt(pw,salt)}; String[] userD = {email,hashAndSalt(pw,salt)};
return Database.getSingleId("user",userH,userD); return Database.getSingleId("user",userH,userD);
} }
/**
* update password in User table
* @param password User
* @return update password
* @author Reshad Meher
*/
protected static long updatePassword( User password) {
String[] pwH = {"password"};
String[] pwD = {password.getPassword()};
long updates = Database.update("user",pwH,pwD);
return updates;
}
/**
* update adress in User table
* @param address Adresss
* @return update Adrssse
* @author Reshad Meher
*/
protected static long updateAdreess(Address address ){
String[] adH = {"stree","numbrt","plz","city"};
String[] adD = {address.getStreet(),address.getNumber(),address.getPlz(),address.getCity()};
long updates = Database.update("user",adH,adD);
return updates;
}
/** /**
* checks if id is in worker table * checks if id is in worker table
*
* @param id userid * @param id userid
* @return true if id is in worker table * @return true if id is in worker table
* @author Malte Schulze Hobeling * @author Malte Schulze Hobeling
@ -347,7 +246,6 @@ public class AccountMgr {
/** /**
* checks if id is in parent table * checks if id is in parent table
*
* @param id userid * @param id userid
* @return true if id is in parent table * @return true if id is in parent table
* @author Malte Schulze Hobeling * @author Malte Schulze Hobeling
@ -361,7 +259,6 @@ public class AccountMgr {
/** /**
* returns a hashed and salted password * returns a hashed and salted password
*
* @param pw the password to hash * @param pw the password to hash
* @return hashed and salted password * @return hashed and salted password
* @author Malte Schulze Hobeling * @author Malte Schulze Hobeling
@ -385,7 +282,6 @@ public class AccountMgr {
/** /**
* generates a secure random salt, Base64 encoded * generates a secure random salt, Base64 encoded
*
* @return String Base64 encoded * @return String Base64 encoded
* @author Malte Schulze Hobeling * @author Malte Schulze Hobeling
*/ */
@ -399,7 +295,6 @@ public class AccountMgr {
/** /**
* gives the invoice for one month and one child * gives the invoice for one month and one child
*
* @param date YYYY-MM the month * @param date YYYY-MM the month
* @param childId id of child * @param childId id of child
* @return the invoice as a List * @return the invoice as a List
@ -437,7 +332,6 @@ public class AccountMgr {
/** /**
* gets the price per meal from the database and converts it to double * gets the price per meal from the database and converts it to double
*
* @return double price * @return double price
* @author Malte Schulze Hobeling * @author Malte Schulze Hobeling
*/ */
@ -448,7 +342,6 @@ public class AccountMgr {
/** /**
* converts the price per meal to integer and updates it in the database * converts the price per meal to integer and updates it in the database
*
* @param price double * @param price double
* @author Malte Schulze Hobeling * @author Malte Schulze Hobeling
*/ */
@ -457,31 +350,4 @@ public class AccountMgr {
String[] priceD = {"1", String.valueOf((int)(price*100))}; String[] priceD = {"1", String.valueOf((int)(price*100))};
Database.update("price",priceH,priceD); Database.update("price",priceH,priceD);
} }
/**
* update password in User table
* @param password User
* @return update password
* @author Reshad Meher
*/
protected static long updatePassword( User password) {
String[] pwH = {"password"};
String[] pwD = {password.getPassword()};
long updates = Database.update("user",pwH,pwD);
return updates;
}
/**
* update adress in User table
* @param address Adresss
* @return update Adrssse
* @author Reshad Meher
*/
protected static long updateAdreess(Address address ){
String[] adH = {"stree","numbrt","plz","city"};
String[] adD = {address.getStreet(),address.getNumber(),address.getPlz(),address.getCity()};
long updates = Database.update("user",adH,adD);
return updates;
}
} }

View File

@ -46,4 +46,5 @@ public class Address {
this.plz = plz; this.plz = plz;
this.city = city; this.city = city;
} }
} }

View File

@ -1,5 +1,3 @@
/*Schulte*/
package com.bib.essensbestellungsverwaltung; package com.bib.essensbestellungsverwaltung;
import javafx.fxml.FXML; import javafx.fxml.FXML;
@ -31,6 +29,9 @@ public class AdminController {
@FXML @FXML
protected void onBtSignUp(){ protected void onBtSignUp(){
String ln = lastname.getText(); String ln = lastname.getText();
String fn = firstname.getText(); String fn = firstname.getText();
String st = street.getText(); String st = street.getText();
@ -40,21 +41,6 @@ public class AdminController {
String emailString = email.getText(); String emailString = email.getText();
String pw = password.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,}$")){ if(!pw.matches("^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%^&+=])(?=\\S+$).{8,}$")){
@ -64,57 +50,32 @@ public class AdminController {
alert.setHeaderText("Ungültiges Passwort"); 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"); 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(""); password.setText("");
alert.showAndWait();
}
else {
pwCorrect = true;
} }
if(!emailString.matches("^(.+)@(\\S+)$")){ 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,})$")){
Alert alert = new Alert(Alert.AlertType.ERROR); Alert alert = new Alert(Alert.AlertType.ERROR);
alert.setTitle("E-Mail"); alert.setTitle("E-Mail");
alert.setHeaderText("Ungültige E-Mail Adresse"); alert.setHeaderText("Ungültige E-Mail Adresse");
alert.setContentText("Bitte geben sie eine gültige E-Mail Adresse an"); alert.setContentText("Bitte geben sie eine gültige E-Mail Adresse an");
email.setText(""); email.setText("");
alert.showAndWait();
}
else{
emailCorrect = true;
} }
//String[] userData = new String[]{ln,fn,pw,emailString}; //String[] userData = new String[]{ln,fn,pw,emailString};
//String[] addressData = new String[]{st,nr,plzString,cityString}; //String[] addressData = new String[]{st,nr,plzString,cityString};
if(emailCorrect && pwCorrect && userData) {
Address address = new Address(st,nr,plzString,cityString); Address address = new Address(st,nr,plzString,cityString);
Worker worker = new Worker(ln,fn,pw,emailString,address); 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 @FXML
protected void onBtCancel(){ protected void onBtCancel(){
lastname.setText("");
firstname.setText("");
street.setText("");
number.setText("");
city.setText("");
plz.setText("");
email.setText("");
password.setText("");
} }
} }

View File

@ -27,8 +27,4 @@ public class Allergy {
return handle; return handle;
} }
@Override
public String toString() {
return getName();
}
} }

View File

@ -26,9 +26,4 @@ public class AllergySeverity {
public String getSeverity() { public String getSeverity() {
return severity; return severity;
} }
@Override
public String toString() {
return getAllergy().getName() + " (" + getSeverity() + ")";
}
} }

View File

@ -1,141 +0,0 @@
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();
}
}

View File

@ -1,156 +0,0 @@
/*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);
}
}

View File

@ -7,7 +7,7 @@ import java.util.Scanner;
* @author Malte Schulze Hobeling * @author Malte Schulze Hobeling
*/ */
public class ConsoleMain { public class ConsoleMain {
//static User currentUser = null; static User currentUser = null;
static boolean running = true; static boolean running = true;
public static void main(String[] args) { public static void main(String[] args) {
boolean firstRun = Database.init(); boolean firstRun = Database.init();
@ -18,12 +18,12 @@ public class ConsoleMain {
} }
AccountMgr.getPrice(); AccountMgr.getPrice();
while (running){ while (running){
if(AccountMgr.currentUser == null){ if(currentUser == null){
defaultMenu(); defaultMenu();
}else{ }else{
if(AccountMgr.currentUser.getClass().getSimpleName().equals("Worker")){ if(currentUser.getClass().getSimpleName().equals("Worker")){
adminMenu(); adminMenu();
}else if(AccountMgr.currentUser.getClass().getSimpleName().equals("Parent")){ }else if(currentUser.getClass().getSimpleName().equals("Parent")){
parentMenu(); parentMenu();
} }
} }
@ -41,7 +41,9 @@ public class ConsoleMain {
String selection = sc.nextLine(); String selection = sc.nextLine();
switch (selection) { switch (selection) {
case "0" -> running = false; case "0" -> running = false;
case "1" -> AccountMgr.currentUser = ConsoleLib.loginPrompt(); case "1" -> {
currentUser = ConsoleLib.loginPrompt();
}
case "2" -> ConsoleLib.showFood_planPrompt(); case "2" -> ConsoleLib.showFood_planPrompt();
case "3" -> ConsoleLib.createParentPrompt(); case "3" -> ConsoleLib.createParentPrompt();
} }
@ -68,11 +70,13 @@ public class ConsoleMain {
Scanner sc = new Scanner(System.in); Scanner sc = new Scanner(System.in);
String selection = sc.nextLine(); String selection = sc.nextLine();
switch (selection) { switch (selection) {
case "0" -> AccountMgr.currentUser = null; case "0" -> {
currentUser = null;
}
case "1" -> ConsoleLib.createWorkerPrompt(); case "1" -> ConsoleLib.createWorkerPrompt();
case "2" -> ConsoleLib.createParentPrompt(); case "2" -> ConsoleLib.createParentPrompt();
case "3" -> ConsoleLib.createChildPrompt(String.valueOf(AccountMgr.currentUser.getId())); case "3" -> ConsoleLib.createChildPrompt(String.valueOf(currentUser.getId()));
case "4" -> ConsoleLib.matchParentChildPrompt(String.valueOf(AccountMgr.currentUser.getId())); case "4" -> ConsoleLib.matchParentChildPrompt(String.valueOf(currentUser.getId()));
case "5" -> ConsoleLib.createFoodPrompt(); case "5" -> ConsoleLib.createFoodPrompt();
case "6" -> ConsoleLib.createFood_planPrompt(); case "6" -> ConsoleLib.createFood_planPrompt();
case "7" -> ConsoleLib.showFood_planPrompt(); case "7" -> ConsoleLib.showFood_planPrompt();
@ -97,9 +101,11 @@ public class ConsoleMain {
Scanner sc = new Scanner(System.in); Scanner sc = new Scanner(System.in);
String selection = sc.nextLine(); String selection = sc.nextLine();
switch (selection) { switch (selection) {
case "0" -> AccountMgr.currentUser = null; case "0" -> {
case "3" -> ConsoleLib.createChildPrompt(String.valueOf(AccountMgr.currentUser.getId())); currentUser = null;
case "x1" -> ConsoleLib.tablePrompt(); }
case "3" -> ConsoleLib.createChildPrompt(String.valueOf(currentUser.getId()));
case "6" -> ConsoleLib.tablePrompt();
case "7" -> ConsoleLib.showFood_planPrompt(); case "7" -> ConsoleLib.showFood_planPrompt();
case "8" -> ConsoleLib.createFood_selectionPrompt(); case "8" -> ConsoleLib.createFood_selectionPrompt();
} }

View File

@ -1,124 +0,0 @@
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();
}
}

View File

@ -1,127 +0,0 @@
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);
}
}
}

View File

@ -1,76 +0,0 @@
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");
}
}

View File

@ -9,10 +9,8 @@ import java.util.List;
/** /**
* Basic operations on the database * Basic operations on the database
* Use init() -> createDb() -> fillDb() to create the skeleton with some default * Use init() -> createDb() -> fillDb() to create the skeleton with some default values
* values
* Provides select, insert, update, delete, count operations and more * Provides select, insert, update, delete, count operations and more
*
* @author Malte Schulze Hobeling * @author Malte Schulze Hobeling
*/ */
public class Database { public class Database {
@ -20,7 +18,6 @@ public class Database {
/** /**
* creates new database.db if it doesn't exist * creates new database.db if it doesn't exist
*
* @return true if a new database has been created * @return true if a new database has been created
* @author Malte Schulze Hobeling * @author Malte Schulze Hobeling
*/ */
@ -35,7 +32,6 @@ public class Database {
/** /**
* connects to the database * connects to the database
*
* @return Connection to the database * @return Connection to the database
* @author Malte Schulze Hobeling * @author Malte Schulze Hobeling
*/ */
@ -51,7 +47,6 @@ public class Database {
/** /**
* creates the initial structure of the db * creates the initial structure of the db
*
* @author Malte Schulze Hobeling * @author Malte Schulze Hobeling
*/ */
protected static void createDb(){ protected static void createDb(){
@ -183,12 +178,10 @@ public class Database {
/** /**
* inserts fixed values into the database * inserts fixed values into the database
*
* @author Malte Schulze Hobeling * @author Malte Schulze Hobeling
*/ */
protected static void fillDb(){ protected static void fillDb(){
List<String> sqls = new ArrayList<>(); List<String> sqls = new ArrayList<>();
// food_type
sqls.add(""" sqls.add("""
INSERT OR IGNORE INTO food_type (id,name) INSERT OR IGNORE INTO food_type (id,name)
VALUES ('1','Vegan');"""); VALUES ('1','Vegan');""");
@ -198,7 +191,6 @@ public class Database {
sqls.add(""" sqls.add("""
INSERT OR IGNORE INTO food_type (id,name) INSERT OR IGNORE INTO food_type (id,name)
VALUES ('3','Fleischhaltig');"""); VALUES ('3','Fleischhaltig');""");
// allergy
sqls.add(""" sqls.add("""
INSERT OR IGNORE INTO allergy (id,name,handle) INSERT OR IGNORE INTO allergy (id,name,handle)
VALUES('1','Eier','a');"""); VALUES('1','Eier','a');""");
@ -265,7 +257,6 @@ public class Database {
sqls.add(""" sqls.add("""
INSERT OR IGNORE INTO allergy (id,name,handle) INSERT OR IGNORE INTO allergy (id,name,handle)
VALUES('22','Konservierungsstoff','8');"""); VALUES('22','Konservierungsstoff','8');""");
// severity
sqls.add(""" sqls.add("""
INSERT OR IGNORE INTO severity (id,name) INSERT OR IGNORE INTO severity (id,name)
VALUES('1','Harmlos');"""); VALUES('1','Harmlos');""");
@ -278,150 +269,6 @@ public class Database {
sqls.add(""" sqls.add("""
INSERT OR IGNORE INTO price (id,price) INSERT OR IGNORE INTO price (id,price)
VALUES('1','500');"""); VALUES('1','500');""");
// 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()){ try(Connection conn = connect(); Statement stmt = conn.createStatement()){
for (String sql : sqls) { for (String sql : sqls) {
stmt.execute(sql); stmt.execute(sql);
@ -434,7 +281,6 @@ public class Database {
/** /**
* inserts data into table and returns its id * inserts data into table and returns its id
* simple duplication check * 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 header String[] order should match with values
* @param values String[] order should match with header * @param values String[] order should match with header
@ -477,7 +323,6 @@ public class Database {
/** /**
* returns a single id that matches the given data * 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 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 * @param values the data you want the id of, order should match witch values
@ -533,7 +378,6 @@ public class Database {
/** /**
* deletes an entry from table with matching id * deletes an entry from table with matching id
*
* @param table the table that contains the entry you want to delete * @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 * @author Malte Schulze Hobeling
@ -554,10 +398,8 @@ public class Database {
* selectMatch: returns all matching rows from table * selectMatch: returns all matching rows from table
* insert: inserts or ignores into table * insert: inserts or ignores into table
* count: counts exact matches from table * count: counts exact matches from table
* update: updates table, header/values[0] is used as WHERE, using id is * update: updates table, header/values[0] is used as WHERE, using id is recommended header/values[1+] are used
* recommended header/values[1+] are used
* as SET * as SET
*
* @param type exists, selectMatch, insert, count, update * @param type exists, selectMatch, insert, count, update
* @param table table * @param table table
* @param header header * @param header header
@ -640,12 +482,12 @@ public class Database {
sb.append(" SET "); sb.append(" SET ");
sb.append(header[1]); sb.append(header[1]);
sb.append(" = "); sb.append(" = ");
sb.append("'" + values[1] + "'"); sb.append(values[1]);
for(int i = 2; i < header.length; i++){ for(int i = 2; i < header.length; i++){
sb.append(", "); sb.append(", ");
sb.append(header[i]); sb.append(header[i]);
sb.append(" = "); sb.append(" = ");
sb.append("'" + values[i] + "'"); sb.append(values[i]);
} }
sb.append(" WHERE "); sb.append(" WHERE ");
sb.append(header[0]); sb.append(header[0]);
@ -659,7 +501,6 @@ public class Database {
/** /**
* returns a list of all entries * returns a list of all entries
*
* @param table the table you want * @param table the table you want
* @return a list of all entries as String with the fields separated by ":" * @return a list of all entries as String with the fields separated by ":"
* @author Malte Schulze Hobeling * @author Malte Schulze Hobeling
@ -689,9 +530,7 @@ public class Database {
} }
/** /**
* issues a select query on the database for the given table and the given * issues a select query on the database for the given table and the given values checked with LIKE
* values checked with LIKE
*
* @param table the table you want the data from * @param table the table you want the data from
* @param header header for the WHERE portion, order should match with values * @param header header for the WHERE portion, order should match with values
* @param values values for the WHERE portion, order should match with header * @param values values for the WHERE portion, order should match with header
@ -725,7 +564,6 @@ public class Database {
/** /**
* returns the entry from table with the given id * returns the entry from table with the given id
*
* @param table the table you want the entry from * @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 ":" * @return a list of String separated by ":"
@ -759,7 +597,6 @@ public class Database {
/** /**
* counts the number of matching entries * 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 header the properties you want to count on
* @param values the values for the properties * @param values the values for the properties
@ -779,7 +616,6 @@ public class Database {
/** /**
* updates an entry in the database * 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 header [0] is used as WHERE, everything else in SET
* @param values [0] is used as WHERE, everything else in SET * @param values [0] is used as WHERE, everything else in SET

View File

@ -46,21 +46,6 @@ public class FoodMgr {
return Database.insert("food_plan",food_planH,food_planD); 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 * returns all non desserts or all desserts
* @param isDessert true for only desserts false for non desserts * @param isDessert true for only desserts false for non desserts
@ -107,9 +92,6 @@ public class FoodMgr {
String[] food_planH = {"date"}; String[] food_planH = {"date"};
String[] food_planD = {date}; String[] food_planD = {date};
List<String> entry = Database.select("food_plan",food_planH,food_planD); List<String> entry = Database.select("food_plan",food_planH,food_planD);
if(entry.size() < 1){
return null;
}
String[] parts = entry.get(0).split(":"); String[] parts = entry.get(0).split(":");
Food foodVegan = getFoodById(Long.parseLong(parts[2])); Food foodVegan = getFoodById(Long.parseLong(parts[2]));
Food foodSecond = getFoodById(Long.parseLong(parts[3])); Food foodSecond = getFoodById(Long.parseLong(parts[3]));
@ -235,9 +217,6 @@ public class FoodMgr {
public static List<String> getDayOrder(String date){ public static List<String> getDayOrder(String date){
List<String> orders = new ArrayList<>(); List<String> orders = new ArrayList<>();
FoodPlan food_plan = getFoodPlan(date); FoodPlan food_plan = getFoodPlan(date);
if(food_plan == null){
return orders;
}
String sId = String.valueOf(food_plan.getId()); String sId = String.valueOf(food_plan.getId());
String[] food_selectionH = {"food_planid","foodid"}; String[] food_selectionH = {"food_planid","foodid"};
Food[] foodArray = { Food[] foodArray = {

View File

@ -20,4 +20,5 @@ public class FoodType {
public String getName() { public String getName() {
return name; return name;
} }
} }

View File

@ -1,35 +0,0 @@
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("");
}
}

View File

@ -1,118 +0,0 @@
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);
}
}
}

View File

@ -1,4 +1,4 @@
/*Richard Reiswich*/ /*Reshad Meher*/
package com.bib.essensbestellungsverwaltung; package com.bib.essensbestellungsverwaltung;
import javafx.fxml.FXML; import javafx.fxml.FXML;
@ -7,10 +7,8 @@ import javafx.scene.Scene;
import javafx.scene.control.Alert; import javafx.scene.control.Alert;
import javafx.scene.control.PasswordField; import javafx.scene.control.PasswordField;
import javafx.scene.control.TextField; import javafx.scene.control.TextField;
import javafx.stage.Stage;
import java.io.IOException; import java.io.IOException;
import java.util.HashMap;
public class LoginController { public class LoginController {
@FXML @FXML
@ -18,30 +16,27 @@ public class LoginController {
@FXML @FXML
private PasswordField pfPassword; private PasswordField pfPassword;
@FXML @FXML
protected void onBtLoginClick() throws IOException { protected void onBtLoginClick() throws IOException {
String email = tfEmail.getText(); String email = tfEmail.getText();
String password = pfPassword.getText(); String password = pfPassword.getText();
long loginPruefen = AccountMgr.login(email,password); long loginPruefen = AccountMgr.login(email,password);
if(loginPruefen > 0){ if(loginPruefen > 0){
AccountMgr.currentUser = AccountMgr.getUserById(loginPruefen); FXMLLoader fxmlLoader = new FXMLLoader(StartViewApplication.class.getResource("menue-view.fxml"));
if(AccountMgr.currentUser.getClass().getSimpleName().equals("Worker")){ Scene scene = new Scene(fxmlLoader.load(), 950,700);
StartViewApplication.changeScene("workerMenu-view.fxml"); StartViewApplication.primary.setScene(scene);
}else{
StartViewApplication.changeScene("parentMenu-view.fxml");
}
}else { }else {
Alert alert = new Alert(Alert.AlertType.ERROR,"Email oder Passwort ist falsch"); Alert alert = new Alert(Alert.AlertType.ERROR,"Email oder Passwort ist falsch");
alert.showAndWait(); alert.showAndWait();
} }
tfEmail.setText(""); tfEmail.setText("");
pfPassword.setText(""); pfPassword.setText("");
} }
@FXML @FXML
protected void changeToSignUp() throws IOException { protected void onBtSingnupClick() throws IOException {
StartViewApplication.changeScene("signUp-view.fxml"); FXMLLoader fxmlLoader = new FXMLLoader(StartViewApplication.class.getResource("signUp-view.fxml"));
Scene scene = new Scene(fxmlLoader.load(), 950,700);
StartViewApplication.primary.setScene(scene);
} }
} }

View File

@ -6,10 +6,6 @@ import javafx.fxml.FXML;
import javafx.scene.Node; import javafx.scene.Node;
import javafx.scene.control.*; import javafx.scene.control.*;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List;
public class MenueController { public class MenueController {
@FXML @FXML
@ -75,26 +71,14 @@ public class MenueController {
@FXML @FXML
ComboBox<String> cbPickChild; ComboBox<String> cbPickChild;
@FXML @FXML
Button btLogin;
@FXML
Button btSaveOrder; Button btSaveOrder;
@FXML @FXML
ListView<String> lvFoodInfo; ListView<String> lvFoodInfo;
public ObservableList<Node> buttons = FXCollections.observableArrayList(); 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) { public void setButtonActive(ActionEvent event) {
Button b = (Button) event.getSource(); Button b = (Button) event.getSource();
@ -103,7 +87,14 @@ public class MenueController {
buttons = p.getChildrenUnmodifiable(); buttons = p.getChildrenUnmodifiable();
for(Node button : buttons){ for(Node button : buttons){
button.setDisable(button.equals(b)); System.out.println(b.getStyleClass());
/*
b.getStyleClass().remove("active");
if (button.equals(b)){
b.getStyleClass().add("active");;
}
*/
} }
} }
} }

View File

@ -1,37 +0,0 @@
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);
}
}
}

View File

@ -4,30 +4,21 @@ import java.util.ArrayList;
import java.util.List; import java.util.List;
/** /**
* one constructor is used to create new parents the other is used to create * one constructor is used to create new parents the other is used to create existing parents from database
* existing parents from database
*
* @author Malte Schulze Hobeling * @author Malte Schulze Hobeling
*/ */
public class Parent extends User{ public class Parent extends User{
List<Child> children; List<Child> children;
public Parent(long id, String name, String firstname, String password, String email, Address address, public Parent(long id, String name, String firstname, String password, String email, Address address, List<Child> children) {
List<Child> children) {
super(id, name, firstname, password, email, address); super(id, name, firstname, password, email, address);
this.children = children; this.children = children;
} }
public Parent(String name, String firstname, String password, String email, Address address) { public Parent(String name, String firstname, String password, String email, Address address) {
super(name, firstname, password, email, address); super(name, firstname, password, email, address);
this.children = new ArrayList<>(); 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() { public List<Child> getChildren() {
return children; return children;
} }

View File

@ -1,4 +1,78 @@
package com.bib.essensbestellungsverwaltung; 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{ 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");
}
} }

View File

@ -1,78 +0,0 @@
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");
}
}

View File

@ -1,12 +0,0 @@
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 {
}

View File

@ -1,6 +1,8 @@
package com.bib.essensbestellungsverwaltung; package com.bib.essensbestellungsverwaltung;
/**
* @autor Reshad Meher
*/
import javafx.event.ActionEvent;
import javafx.fxml.FXML; import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader; import javafx.fxml.FXMLLoader;
import javafx.scene.Scene; import javafx.scene.Scene;
@ -8,9 +10,6 @@ import javafx.scene.control.Alert;
import javafx.scene.control.TextField; import javafx.scene.control.TextField;
import java.io.IOException; import java.io.IOException;
/**
* @author Reshad Meher
*/
public class SettingsController { public class SettingsController {
@ -142,8 +141,4 @@ public class SettingsController {
Scene scene = new Scene(fxmlLoader.load(), 950,700); Scene scene = new Scene(fxmlLoader.load(), 950,700);
StartViewApplication.primary.setScene(scene); StartViewApplication.primary.setScene(scene);
} }
public void onSettingBtClick(ActionEvent actionEvent) {
}
} }

View File

@ -1,9 +1,7 @@
/**
* @autor: Reshad Meher
*/
package com.bib.essensbestellungsverwaltung; package com.bib.essensbestellungsverwaltung;
import javafx.fxml.FXML; import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.scene.Scene;
import javafx.scene.control.Alert; import javafx.scene.control.Alert;
import javafx.scene.control.PasswordField; import javafx.scene.control.PasswordField;
import javafx.scene.control.TextField; import javafx.scene.control.TextField;
@ -27,25 +25,25 @@ public class SingUpController {
@FXML @FXML
private TextField tfStreet; private TextField tfStreet;
@FXML @FXML
private TextField tfHouseNumber; private TextField tfHousNumber;
@FXML @FXML
private void onKontoErstellenBtClick(){ private void onKontoErstellenBtClick(){
String lastName = tfLastName.getText(); String lastName = tfLastName.getText();
String firstName = tfFirstName.getText(); String firstNanme = tfFirstName.getText();
String email = tfEmail.getText(); String email = tfEmail.getText();
String password = pfPassword.getText(); String password = pfPassword.getText();
String postCode = tfPostCode.getText(); String postCode = tfPostCode.getText();
String city = tfCity.getText(); String city = tfCity.getText();
String street = tfStreet.getText(); String street = tfStreet.getText();
String houseNumber = tfHouseNumber.getText(); String housNumber = tfHousNumber.getText();
Alert alert; Alert alert;
if(lastName.isEmpty() || firstName.isEmpty() || email.isEmpty() || password.isEmpty() || postCode.isEmpty() || if(lastName.isEmpty() || firstNanme.isEmpty() || email.isEmpty() || password.isEmpty() || postCode.isEmpty() ||
city.isEmpty() || street.isEmpty() || houseNumber.isEmpty()){ city.isEmpty() || street.isEmpty() || housNumber.isEmpty()){
if(lastName.isEmpty()){ if(lastName.isEmpty()){
alert = new Alert(Alert.AlertType.ERROR," Die Eingabefeld 'Name' ist leer."); alert = new Alert(Alert.AlertType.ERROR," Die Eingabefeld 'Name' ist leer.");
alert.showAndWait(); alert.showAndWait();
} else if (firstName.isEmpty()) { } else if (firstNanme.isEmpty()) {
alert = new Alert(Alert.AlertType.ERROR," Die Eingabefeld 'Vorname' ist leer."); alert = new Alert(Alert.AlertType.ERROR," Die Eingabefeld 'Vorname' ist leer.");
alert.showAndWait(); alert.showAndWait();
} else if (email.isEmpty()) { } else if (email.isEmpty()) {
@ -69,26 +67,11 @@ public class SingUpController {
} }
}else { }else {
Address newAdresse = new Address(street,houseNumber,postCode,city); Address newAdresse = new Address(street,housNumber,postCode,city);
User newUser = new User(lastName,firstName,password,email,newAdresse); User newUser = new User(lastName,firstNanme,password,email,newAdresse);
if(StartViewApplication.firstLaunch){ long creatNewUser = AccountMgr.createUser(newUser);
long id = AccountMgr.createWorker(new Worker(newUser)); if (creatNewUser > 0){
if(id < 1) { alert = new Alert(Alert.AlertType.CONFIRMATION,"Ihrer Daten wurde gespeichert.");
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(); alert.showAndWait();
} }
tfLastName.setText(""); tfLastName.setText("");
@ -98,13 +81,15 @@ public class SingUpController {
tfPostCode.setText(""); tfPostCode.setText("");
tfCity.setText(""); tfCity.setText("");
tfStreet.setText(""); tfStreet.setText("");
tfHouseNumber.setText(""); tfHousNumber.setText("");
} }
} }
@FXML @FXML
private void onAnmeldenBtClick() throws IOException { private void onAnmeldenBtClick() throws IOException {
StartViewApplication.changeScene("login-view.fxml"); FXMLLoader fxmlLoader = new FXMLLoader(StartViewApplication.class.getResource("login-view.fxml"));
Scene scene = new Scene(fxmlLoader.load(), 950,700);
StartViewApplication.primary.setScene(scene);
} }
} }

View File

@ -1,4 +0,0 @@
package com.bib.essensbestellungsverwaltung;
public class StartPageController {
}

View File

@ -16,21 +16,20 @@ import java.io.IOException;
public class StartViewApplication extends Application { public class StartViewApplication extends Application {
public static Stage primary; public static Stage primary;
public static boolean firstLaunch; public static boolean firstLaunch;
@Override @Override
public void start(Stage stage) throws IOException { 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) ? "signUp-view.fxml" : "login-view.fxml"));
Scene scene = new Scene(fxmlLoader.load(), 1300, 750); FXMLLoader fxmlLoader = new FXMLLoader(StartViewApplication.class.getResource((firstLaunch) ? "settingsMenue.fxml" : "settingsMenue.fxml"));
Scene scene = new Scene(fxmlLoader.load(), 1220, 790);
primary = stage; primary = stage;
stage.setTitle("Essen Bestellung im Kindergarten"); stage.setTitle("Essen Bestellung im Kindergarten");
stage.setScene(scene); stage.setScene(scene);
stage.show(); stage.show();
} }
public static void main(String[] args) { public static void main(String[] args) {
firstLaunch = Database.init(); firstLaunch = Database.init();
Database.init();
Database.createDb(); Database.createDb();
Database.fillDb(); Database.fillDb();
//Database.printSampleQuery(); //Database.printSampleQuery();

View File

@ -7,7 +7,7 @@ package com.bib.essensbestellungsverwaltung;
*/ */
public class SuperMain { public class SuperMain {
public static void main(String[] args) { public static void main(String[] args) {
if(args.length > 0 && args[0].equals("Here be dragons")){ if(args.length > 0){
ConsoleMain.main(args); ConsoleMain.main(args);
}else { }else {
StartViewApplication.main(args); StartViewApplication.main(args);

View File

@ -28,6 +28,9 @@ public class User {
this.email = email; this.email = email;
this.address = address; this.address = address;
} }
public User (String password){
this.password = password;
}
public long getId() { public long getId() {
return id; return id;
@ -52,13 +55,4 @@ public class User {
public Address getAddress() { public Address getAddress() {
return address; return address;
} }
/**
*
* @author Reshad Meher
*/
public User (String password){
this.password = password;
}
} }

View File

@ -1,21 +1,14 @@
package com.bib.essensbestellungsverwaltung; package com.bib.essensbestellungsverwaltung;
/** /**
* one constructor is used to create new worker the other is used to create * one constructor is used to create new worker the other is used to create existing worker from database
* existing worker from database
*
* @author Malte Schulze Hobeling * @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) { public Worker(long id, String name, String firstname, String password, String email, Address address) {
super(id, name, firstname, password, email, address); super(id, name, firstname, password, email, address);
} }
public Worker(String name, String firstname, String password, String email, Address address) { public Worker(String name, String firstname, String password, String email, Address address) {
super(name, firstname, password, email, address); super(name, firstname, password, email, address);
} }
public Worker(User user) {
super(user.getId(), user.getName(), user.getFirstname(), user.getPassword(), user.getEmail(), user.getAddress());
}
} }

View File

@ -1,95 +0,0 @@
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");
}
}

View File

@ -3,7 +3,6 @@ module com.bib.essensbestellungsverwaltung {
requires javafx.fxml; requires javafx.fxml;
requires java.sql; requires java.sql;
requires org.xerial.sqlitejdbc; requires org.xerial.sqlitejdbc;
requires org.controlsfx.controls;
opens com.bib.essensbestellungsverwaltung to javafx.fxml; opens com.bib.essensbestellungsverwaltung to javafx.fxml;

View File

@ -0,0 +1,109 @@
<?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>

View File

@ -0,0 +1,12 @@
#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;
}

View File

@ -2,8 +2,9 @@
<?import javafx.geometry.Insets?> <?import javafx.geometry.Insets?>
<?import javafx.scene.control.Button?> <?import javafx.scene.control.Button?>
<?import javafx.scene.control.ComboBox?> <?import javafx.scene.control.CheckBox?>
<?import javafx.scene.control.ListView?> <?import javafx.scene.control.ChoiceBox?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.control.TextField?> <?import javafx.scene.control.TextField?>
<?import javafx.scene.layout.AnchorPane?> <?import javafx.scene.layout.AnchorPane?>
<?import javafx.scene.layout.HBox?> <?import javafx.scene.layout.HBox?>
@ -11,33 +12,40 @@
<?import javafx.scene.text.Font?> <?import javafx.scene.text.Font?>
<?import javafx.scene.text.Text?> <?import javafx.scene.text.Text?>
<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"> <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> <children>
<Text layoutX="51.0" layoutY="90.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Kinder"> <Text layoutX="51.0" layoutY="90.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Kinder">
<font> <font>
<Font size="58.0" /> <Font size="58.0" />
</font> </font>
</Text> </Text>
<HBox id="contentContainer" alignment="CENTER" layoutX="8.0" layoutY="165.0" prefHeight="331.0" prefWidth="937.0"> <HBox id="contentContainer" alignment="CENTER" layoutX="8.0" layoutY="165.0" prefHeight="127.0" prefWidth="937.0">
<children> <children>
<VBox id="contentContainer" prefHeight="250.0" prefWidth="256.0"> <VBox id="contentContainer" prefHeight="250.0" prefWidth="256.0">
<children> <children>
<Text strokeType="OUTSIDE" strokeWidth="0.0" text="Name"> <Text strokeType="OUTSIDE" strokeWidth="0.0" text="Vorname">
<VBox.margin> <VBox.margin>
<Insets bottom="15.0" top="15.0" /> <Insets bottom="15.0" top="15.0" />
</VBox.margin> </VBox.margin>
</Text> </Text>
<TextField fx:id="name" prefWidth="97.0"> <TextField fx:id="firstName" prefWidth="97.0">
<VBox.margin> <VBox.margin>
<Insets bottom="15.0" top="15.0" /> <Insets bottom="15.0" top="15.0" />
</VBox.margin> </VBox.margin>
</TextField> </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"> <Text strokeType="OUTSIDE" strokeWidth="0.0" text="Nachname">
<VBox.margin> <VBox.margin>
<Insets bottom="15.0" top="15.0" /> <Insets bottom="15.0" top="15.0" />
</VBox.margin> </VBox.margin>
</Text> </Text>
<TextField fx:id="lastname" prefWidth="97.0"> <TextField fx:id="lastName" prefWidth="97.0">
<VBox.margin> <VBox.margin>
<Insets bottom="15.0" top="15.0" /> <Insets bottom="15.0" top="15.0" />
</VBox.margin> </VBox.margin>
@ -47,75 +55,21 @@
<Insets left="15.0" right="15.0" /> <Insets left="15.0" right="15.0" />
</HBox.margin> </HBox.margin>
</VBox> </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> </children>
<HBox.margin> </HBox>
<Insets left="15.0" right="15.0" /> <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" />
</HBox.margin> <ChoiceBox fx:id="childChoiceBox" layoutX="704.0" layoutY="62.0" onAction="#onSelectChild" prefWidth="150.0" />
</VBox> <Label layoutX="704.0" layoutY="44.0" text="Kind" />
<VBox id="contentContainer" prefHeight="250.0" prefWidth="256.0"> <VBox id="contentContainer" layoutX="493.0" layoutY="330.0" prefHeight="250.0" prefWidth="256.0" spacing="20.0">
<children> <children>
<Text strokeType="OUTSIDE" strokeWidth="0.0" text="Allergien"> <Text strokeType="OUTSIDE" strokeWidth="0.0" text="Allergien">
<VBox.margin> <VBox.margin>
<Insets bottom="15.0" top="15.0" /> <Insets bottom="15.0" top="15.0" />
</VBox.margin> </VBox.margin>
</Text> </Text>
<ListView fx:id="allergiesList" prefHeight="101.0" prefWidth="227.0" /> <CheckBox fx:id="allergienComboBox" prefHeight="18.0" prefWidth="200.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> </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> </VBox>
</children> <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" />
</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> </children>
</AnchorPane> </AnchorPane>

View File

@ -27,7 +27,7 @@
<Font size="16.0" /> <Font size="16.0" />
</font> </font>
</Label> </Label>
<TextField fx:id="lastname" prefHeight="25.0" prefWidth="194.0" /> <TextField id="lastname" prefHeight="25.0" prefWidth="194.0" />
</children> </children>
</HBox> </HBox>
<HBox prefHeight="60.0" prefWidth="331.0"> <HBox prefHeight="60.0" prefWidth="331.0">
@ -40,7 +40,7 @@
<Font size="16.0" /> <Font size="16.0" />
</font> </font>
</Label> </Label>
<TextField fx:id="firstname" prefHeight="25.0" prefWidth="193.0"> <TextField id="firstname" prefHeight="25.0" prefWidth="193.0">
<HBox.margin> <HBox.margin>
<Insets top="10.0" /> <Insets top="10.0" />
</HBox.margin> </HBox.margin>
@ -57,7 +57,7 @@
<Insets top="10.0" /> <Insets top="10.0" />
</padding> </padding>
</Label> </Label>
<TextField fx:id="street" prefHeight="25.0" prefWidth="195.0"> <TextField id="street" prefHeight="25.0" prefWidth="195.0">
<HBox.margin> <HBox.margin>
<Insets top="10.0" /> <Insets top="10.0" />
</HBox.margin> </HBox.margin>
@ -74,7 +74,7 @@
<Insets top="10.0" /> <Insets top="10.0" />
</padding> </padding>
</Label> </Label>
<TextField fx:id="number" prefHeight="25.0" prefWidth="87.0"> <TextField id="number" prefHeight="25.0" prefWidth="87.0">
<HBox.margin> <HBox.margin>
<Insets top="10.0" /> <Insets top="10.0" />
</HBox.margin> </HBox.margin>
@ -88,7 +88,7 @@
<Font size="16.0" /> <Font size="16.0" />
</font> </font>
</Label> </Label>
<TextField fx:id="plz" prefHeight="25.0" prefWidth="87.0"> <TextField id="plz" prefHeight="25.0" prefWidth="87.0">
<HBox.margin> <HBox.margin>
<Insets /> <Insets />
</HBox.margin> </HBox.margin>
@ -105,7 +105,7 @@
<Font size="16.0" /> <Font size="16.0" />
</font> </font>
</Label> </Label>
<TextField fx:id="city" prefHeight="13.0" prefWidth="194.0"> <TextField id="city" prefHeight="13.0" prefWidth="194.0">
<HBox.margin> <HBox.margin>
<Insets top="5.0" /> <Insets top="5.0" />
</HBox.margin> </HBox.margin>
@ -125,7 +125,7 @@
<Insets top="10.0" /> <Insets top="10.0" />
</padding> </padding>
</Label> </Label>
<TextField fx:id="email" prefHeight="25.0" prefWidth="196.0"> <TextField id="email" prefHeight="25.0" prefWidth="196.0">
<HBox.margin> <HBox.margin>
<Insets top="10.0" /> <Insets top="10.0" />
</HBox.margin> </HBox.margin>
@ -142,7 +142,7 @@
<Insets top="10.0" /> <Insets top="10.0" />
</padding> </padding>
</Label> </Label>
<PasswordField fx:id="password" accessibleRole="PASSWORD_FIELD" prefHeight="25.0" prefWidth="194.0"> <PasswordField id="password" accessibleRole="PASSWORD_FIELD" prefHeight="25.0" prefWidth="194.0">
<HBox.margin> <HBox.margin>
<Insets top="10.0" /> <Insets top="10.0" />
</HBox.margin> </HBox.margin>

View File

@ -4,21 +4,20 @@
<?import javafx.scene.control.*?> <?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?> <?import javafx.scene.layout.*?>
<?import javafx.scene.text.*?> <?import javafx.scene.text.*?>
<?import org.controlsfx.control.*?>
<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"> <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> <children>
<Label alignment="CENTER" layoutX="247.0" layoutY="29.0" prefHeight="44.0" prefWidth="237.0" text="Gericht hinzufügen"> <Label alignment="CENTER" layoutX="247.0" layoutY="29.0" prefHeight="44.0" prefWidth="237.0" text="Gericht hinzufügen">
<font> <font>
<Font size="18.0" /> <Font size="18.0" />
</font> </font>
</Label> </Label>
<VBox layoutX="136.0" layoutY="73.0" prefHeight="388.0" prefWidth="459.0"> <VBox layoutX="136.0" layoutY="73.0" prefHeight="389.0" prefWidth="459.0">
<children> <children>
<HBox prefHeight="75.0" prefWidth="459.0"> <HBox prefHeight="75.0" prefWidth="459.0">
<children> <children>
<Label prefHeight="33.0" prefWidth="121.0" text="Name des Gerichts" /> <Label prefHeight="33.0" prefWidth="121.0" text="Name des Gerichts" />
<TextField fx:id="name" prefHeight="25.0" prefWidth="290.0"> <TextField prefHeight="25.0" prefWidth="290.0">
<HBox.margin> <HBox.margin>
<Insets top="5.0" /> <Insets top="5.0" />
</HBox.margin> </HBox.margin>
@ -28,7 +27,7 @@
<HBox prefHeight="75.0" prefWidth="459.0"> <HBox prefHeight="75.0" prefWidth="459.0">
<children> <children>
<Label prefHeight="33.0" prefWidth="121.0" text="Beschreibung" /> <Label prefHeight="33.0" prefWidth="121.0" text="Beschreibung" />
<TextArea fx:id="description" prefHeight="75.0" prefWidth="290.0" /> <TextArea prefHeight="75.0" prefWidth="290.0" />
</children> </children>
<padding> <padding>
<Insets top="5.0" /> <Insets top="5.0" />
@ -41,15 +40,12 @@
<Insets top="20.0" /> <Insets top="20.0" />
</HBox.margin> </HBox.margin>
</Label> </Label>
<RadioButton fx:id="isHauptgerichtRadio" mnemonicParsing="false" text="Hauptgericht"> <RadioButton mnemonicParsing="false" text="Hauptgericht">
<HBox.margin> <HBox.margin>
<Insets left="35.0" top="20.0" /> <Insets left="35.0" top="20.0" />
</HBox.margin> </HBox.margin>
<toggleGroup>
<ToggleGroup fx:id="art" />
</toggleGroup>
</RadioButton> </RadioButton>
<RadioButton fx:id="isDessertRadio" mnemonicParsing="false" text="Dessert" toggleGroup="$art"> <RadioButton mnemonicParsing="false" text="Dessert">
<HBox.margin> <HBox.margin>
<Insets left="50.0" top="20.0" /> <Insets left="50.0" top="20.0" />
</HBox.margin> </HBox.margin>
@ -69,20 +65,17 @@
<Insets top="20.0" /> <Insets top="20.0" />
</HBox.margin> </HBox.margin>
</Label> </Label>
<RadioButton fx:id="isVegetarischRadio" mnemonicParsing="false" prefHeight="17.0" prefWidth="91.0" text="Vegetarisch"> <RadioButton mnemonicParsing="false" prefHeight="17.0" prefWidth="91.0" text="Vegetarisch">
<HBox.margin> <HBox.margin>
<Insets left="100.0" top="20.0" /> <Insets left="100.0" top="20.0" />
</HBox.margin> </HBox.margin>
<toggleGroup>
<ToggleGroup fx:id="typ" />
</toggleGroup>
</RadioButton> </RadioButton>
<RadioButton fx:id="isVeganRadio" mnemonicParsing="false" text="Vegan" toggleGroup="$typ"> <RadioButton mnemonicParsing="false" text="Vegan">
<HBox.margin> <HBox.margin>
<Insets left="20.0" top="20.0" /> <Insets left="20.0" top="20.0" />
</HBox.margin> </HBox.margin>
</RadioButton> </RadioButton>
<RadioButton fx:id="isFleischRadio" mnemonicParsing="false" text="Fleisch" toggleGroup="$typ"> <RadioButton mnemonicParsing="false" text="Fleisch">
<HBox.margin> <HBox.margin>
<Insets left="40.0" top="20.0" /> <Insets left="40.0" top="20.0" />
</HBox.margin> </HBox.margin>
@ -91,18 +84,13 @@
</HBox> </HBox>
<HBox prefHeight="76.0" prefWidth="459.0"> <HBox prefHeight="76.0" prefWidth="459.0">
<children> <children>
<Label prefHeight="25.0" prefWidth="171.0" text="Allergien" /> <Label prefHeight="41.0" prefWidth="171.0" text="Allergien mit Komma getrennt" />
<CheckComboBox fx:id="allergienComboBox" prefHeight="25.0" prefWidth="200.0" /> <TextArea prefHeight="76.0" prefWidth="246.0" />
</children> </children>
</HBox> </HBox>
<Text fx:id="responseText" fill="RED" strokeType="OUTSIDE" strokeWidth="0.0" textAlignment="CENTER" wrappingWidth="459.13673400878906">
<VBox.margin>
<Insets top="20.0" />
</VBox.margin>
</Text>
</children> </children>
</VBox> </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="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="473.0" mnemonicParsing="false" onAction="#onAbbrechen" prefHeight="50.0" prefWidth="162.0" text="Abbrechen" /> <Button id="btCancelFood" layoutX="102.0" layoutY="456.0" mnemonicParsing="false" prefHeight="50.0" prefWidth="162.0" text="Abbrechen" />
</children> </children>
</AnchorPane> </AnchorPane>

View File

@ -1,20 +1,22 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<?import javafx.geometry.*?> <?import javafx.geometry.Insets?>
<?import javafx.scene.control.*?> <?import javafx.scene.control.Button?>
<?import javafx.scene.layout.*?> <?import javafx.scene.control.Label?>
<?import javafx.scene.text.*?> <?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?>
<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"> <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> <children>
<VBox alignment="CENTER" prefHeight="599.0" prefWidth="357.0" spacing="20.0"> <Label layoutX="359.0" layoutY="36.0" text="Essensplan erstellen">
<children>
<Label text="Essensplan erstellen">
<font> <font>
<Font size="18.0" /> <Font size="18.0" />
</font> </font>
</Label> </Label>
<VBox prefHeight="285.0" prefWidth="358.0"> <VBox layoutX="134.0" layoutY="124.0" prefHeight="327.0" prefWidth="632.0">
<children> <children>
<HBox prefHeight="50.0" prefWidth="632.0"> <HBox prefHeight="50.0" prefWidth="632.0">
<children> <children>
@ -23,7 +25,7 @@
<Insets top="5.0" /> <Insets top="5.0" />
</HBox.margin> </HBox.margin>
</Label> </Label>
<DatePicker fx:id="date" onAction="#onDateChange" /> <TextField />
</children> </children>
</HBox> </HBox>
<HBox prefHeight="50.0" prefWidth="632.0"> <HBox prefHeight="50.0" prefWidth="632.0">
@ -33,7 +35,11 @@
<Insets top="5.0" /> <Insets top="5.0" />
</HBox.margin> </HBox.margin>
</Label> </Label>
<ChoiceBox fx:id="firstMeal" prefWidth="150.0" /> <TextField>
<HBox.margin>
<Insets />
</HBox.margin>
</TextField>
</children> </children>
</HBox> </HBox>
<HBox prefHeight="50.0" prefWidth="632.0"> <HBox prefHeight="50.0" prefWidth="632.0">
@ -43,7 +49,11 @@
<Insets top="5.0" /> <Insets top="5.0" />
</HBox.margin> </HBox.margin>
</Label> </Label>
<ChoiceBox fx:id="secondMeal" prefWidth="150.0" /> <TextField>
<HBox.margin>
<Insets />
</HBox.margin>
</TextField>
</children> </children>
</HBox> </HBox>
<HBox prefHeight="50.0" prefWidth="632.0"> <HBox prefHeight="50.0" prefWidth="632.0">
@ -56,7 +66,7 @@
<Insets top="5.0" /> <Insets top="5.0" />
</padding> </padding>
</Label> </Label>
<ChoiceBox fx:id="firstDessert" prefWidth="150.0" /> <TextField />
</children> </children>
</HBox> </HBox>
<HBox prefHeight="50.0" prefWidth="632.0"> <HBox prefHeight="50.0" prefWidth="632.0">
@ -66,18 +76,12 @@
<Insets top="5.0" /> <Insets top="5.0" />
</padding> </padding>
</Label> </Label>
<ChoiceBox fx:id="secondDessert" prefWidth="150.0" /> <TextField />
</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> </children>
</HBox> </HBox>
</children> </children>
</VBox> </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> </children>
</VBox> </AnchorPane>
</children>
</HBox>

View File

@ -1,23 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<?import java.lang.*?>
<?import java.util.*?>
<?import javafx.scene.*?>
<?import javafx.scene.control.*?> <?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?> <?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.DailyOrderController"> <AnchorPane xmlns="http://javafx.com/javafx"
<children> xmlns:fx="http://javafx.com/fxml"
<HBox alignment="CENTER" layoutX="58.0" layoutY="221.0" prefHeight="349.0" prefWidth="683.0"> fx:controller="com.bib.essensbestellungsverwaltung.AdminController"
<children> prefHeight="400.0" prefWidth="600.0">
<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> </AnchorPane>

View File

@ -23,4 +23,5 @@
<Button id="btDeletConfim" layoutX="390.0" layoutY="315.0" mnemonicParsing="false" prefHeight="53.0" prefWidth="141.0" text="Bestätigen" /> <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" /> <Button id="btDeleteDeny" layoutX="71.0" layoutY="315.0" mnemonicParsing="false" prefHeight="53.0" prefWidth="141.0" text="zurück" />
</children> </children>
</AnchorPane> </AnchorPane>

View File

@ -1,70 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<?import java.lang.*?> <?import java.lang.*?>
<?import javafx.collections.*?> <?import java.util.*?>
<?import javafx.geometry.*?> <?import javafx.scene.*?>
<?import javafx.scene.control.*?> <?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?> <?import javafx.scene.layout.*?>
<?import javafx.scene.text.*?>
<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"> <AnchorPane xmlns="http://javafx.com/javafx"
<children> xmlns:fx="http://javafx.com/fxml"
<VBox alignment="CENTER" prefHeight="860.0" prefWidth="500.0"> fx:controller="com.bib.essensbestellungsverwaltung.AdminController"
<children> prefHeight="400.0" prefWidth="600.0">
<Text strokeType="OUTSIDE" strokeWidth="0.0" text="Abrechnung erstellen">
<font> </AnchorPane>
<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>

View File

@ -0,0 +1,147 @@
<?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>

View File

@ -8,16 +8,17 @@
<?import javafx.scene.layout.AnchorPane?> <?import javafx.scene.layout.AnchorPane?>
<?import javafx.scene.layout.HBox?> <?import javafx.scene.layout.HBox?>
<?import javafx.scene.layout.VBox?> <?import javafx.scene.layout.VBox?>
<?import javafx.scene.shape.Circle?>
<?import javafx.scene.text.Font?> <?import javafx.scene.text.Font?>
<?import javafx.scene.text.Text?> <?import javafx.scene.text.Text?>
<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"> <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> <children>
<VBox alignment="CENTER" prefHeight="750.0" prefWidth="400.0" style="-fx-background-color: lightblue;"> <VBox alignment="CENTER" prefHeight="400.0" prefWidth="265.0" style="-fx-background-color: lightblue;">
<children> <children>
<Text fill="WHITE" strokeType="OUTSIDE" strokeWidth="0.0" text="Essensbestellung"> <Text fill="WHITE" strokeType="OUTSIDE" strokeWidth="0.0" text="Essensbestellung">
<font> <font>
<Font name="Yu Gothic Light" size="35.0" /> <Font name="Yu Gothic Light" size="26.0" />
</font> </font>
</Text> </Text>
</children> </children>
@ -25,9 +26,12 @@
<Insets bottom="150.0" /> <Insets bottom="150.0" />
</padding> </padding>
</VBox> </VBox>
<VBox alignment="CENTER" layoutX="400.0" prefHeight="750.0" prefWidth="900.0" style="-fx-background-color: white;"> <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> <children>
<TextField fx:id="tfEmail" promptText="Email" style="-fx-background-color: transparent; -fx-border-color: lightgray; -fx-border-width: 0 0 1 0;"> <TextField promptText="Email" style="-fx-background-color: transparent; -fx-border-color: lightgray; -fx-border-width: 0 0 1 0;" fx:id="tfEmail">
<VBox.margin> <VBox.margin>
<Insets bottom="15.0" left="25.0" right="25.0" top="25.0" /> <Insets bottom="15.0" left="25.0" right="25.0" top="25.0" />
</VBox.margin> </VBox.margin>
@ -35,33 +39,24 @@
<Blend /> <Blend />
</effect> </effect>
<font> <font>
<Font name="Microsoft Tai Le Bold" size="20.0" /> <Font name="Microsoft Tai Le" size="12.0" />
</font> </font>
</TextField> </TextField>
<PasswordField fx:id="pfPassword" promptText="Passwort" style="-fx-background-color: transparent; -fx-border-color: lightgray; -fx-border-width: 0 0 1 0;"> <PasswordField promptText="Passwort" style="-fx-background-color: transparent; -fx-border-color: lightgray; -fx-border-width: 0 0 1 0;" fx:id="pfPassword">
<VBox.margin> <VBox.margin>
<Insets bottom="25.0" left="25.0" right="25.0" top="15.0" /> <Insets bottom="25.0" left="25.0" right="25.0" top="15.0" />
</VBox.margin> </VBox.margin>
<font> <font>
<Font name="Microsoft Tai Le Bold" size="20.0" /> <Font name="Microsoft Tai Le Bold" size="12.0" />
</font> </font>
</PasswordField> </PasswordField>
<HBox alignment="CENTER" prefHeight="30.0" prefWidth="238.0"> <HBox alignment="CENTER" prefHeight="30.0" prefWidth="238.0">
<children> <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"> <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>
<Font name="Microsoft Tai Le Bold" size="18.0" /> <Font name="Microsoft Tai Le Bold" size="12.0" />
</font> </font></Button>
<HBox.margin> <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" />
<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> </children>
</HBox> </HBox>
</children> </children>
@ -69,5 +64,7 @@
<Insets bottom="65.0" left="45.0" right="45.0" top="45.0" /> <Insets bottom="65.0" left="45.0" right="45.0" top="45.0" />
</padding> </padding>
</VBox> </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> </children>
</AnchorPane> </AnchorPane>

View File

@ -17,9 +17,10 @@
<Font size="28.0" /> <Font size="28.0" />
</font> </font>
</Label> </Label>
<HBox layoutX="220.0" layoutY="87.0" prefHeight="414.0" prefWidth="688.0" stylesheets="@menue.css"> <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">
<children> <children>
<VBox prefHeight="350.0" prefWidth="180.0" style="-fx-background-color: transparent; -fx-padding: 5;" styleClass="container"> <VBox prefHeight="350.0" prefWidth="180.0" style="-fx-background-color: transparent; -fx-padding: 5;">
<children> <children>
<Label alignment="CENTER" contentDisplay="TOP" prefHeight="23.0" prefWidth="196.0" style="-fx-background-color: lightdarkblue;" text="Montag" textAlignment="CENTER"> <Label alignment="CENTER" contentDisplay="TOP" prefHeight="23.0" prefWidth="196.0" style="-fx-background-color: lightdarkblue;" text="Montag" textAlignment="CENTER">
<VBox.margin> <VBox.margin>
@ -31,12 +32,9 @@
</Label> </Label>
<VBox prefHeight="200.0" prefWidth="100.0"> <VBox prefHeight="200.0" prefWidth="100.0">
<children> <children>
<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"> <Button id="btFoodChoice" fx:id="btFirstMealMon" alignment="CENTER" mnemonicParsing="false" onAction="#setButtonActive" prefHeight="78.0" prefWidth="218.0" styleClass="btFood" text="Mahlzeit 1" />
<VBox.margin> <Button id="btFoodChoice" fx:id="btSecondMealMon" alignment="CENTER" mnemonicParsing="false" onAction="#setButtonActive" prefHeight="78.0" prefWidth="218.0" styleClass="btFood" text="Mahlzeit 2" />
<Insets /> <Button id="btFoodChoice" fx:id="btNoMealMon" alignment="CENTER" mnemonicParsing="false" onAction="#setButtonActive" prefHeight="20.0" prefWidth="170.0" styleClass="btFood" text="Keine Mahlzeit">
</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> <VBox.margin>
<Insets bottom="20.0" /> <Insets bottom="20.0" />
</VBox.margin> </VBox.margin>
@ -45,14 +43,14 @@
</VBox> </VBox>
<VBox prefHeight="200.0" prefWidth="100.0"> <VBox prefHeight="200.0" prefWidth="100.0">
<children> <children>
<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="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" styleClass="btFood" text="Dessert 2" /> <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" styleClass="btFood" text="kein Dessert" /> <Button id="btFoodChoice" fx:id="btNoDessertMon" alignment="CENTER" mnemonicParsing="false" onAction="#setButtonActive" prefHeight="20.0" prefWidth="170.0" text="kein Dessert" />
</children> </children>
</VBox> </VBox>
</children> </children>
</VBox> </VBox>
<VBox prefHeight="350.0" prefWidth="180.0" style="-fx-background-color: transparent; -fx-padding: 5;" styleClass="container"> <VBox prefHeight="350.0" prefWidth="180.0" style="-fx-background-color: transparent; -fx-padding: 5;">
<children> <children>
<Label alignment="CENTER" contentDisplay="TOP" prefHeight="23.0" prefWidth="196.0" style="-fx-background-color: lightdarkblue;" text="Dienstag" textAlignment="CENTER"> <Label alignment="CENTER" contentDisplay="TOP" prefHeight="23.0" prefWidth="196.0" style="-fx-background-color: lightdarkblue;" text="Dienstag" textAlignment="CENTER">
<VBox.margin> <VBox.margin>
@ -64,9 +62,9 @@
</Label> </Label>
<VBox prefHeight="200.0" prefWidth="100.0"> <VBox prefHeight="200.0" prefWidth="100.0">
<children> <children>
<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="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" styleClass="btFood" text="Mahlzeit 2" /> <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" styleClass="btFood" text="Keine Mahlzeit"> <Button id="btFoodChoice" fx:id="btNoMealTue" alignment="CENTER" mnemonicParsing="false" onAction="#setButtonActive" prefHeight="20.0" prefWidth="170.0" text="Keine Mahlzeit">
<VBox.margin> <VBox.margin>
<Insets bottom="20.0" /> <Insets bottom="20.0" />
</VBox.margin> </VBox.margin>
@ -75,14 +73,14 @@
</VBox> </VBox>
<VBox prefHeight="200.0" prefWidth="100.0"> <VBox prefHeight="200.0" prefWidth="100.0">
<children> <children>
<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="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" styleClass="btFood" text="Dessert 2" /> <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" styleClass="btFood" text="kein Dessert" /> <Button id="btFoodChoice" fx:id="btNoDessertTue" alignment="CENTER" mnemonicParsing="false" onAction="#setButtonActive" prefHeight="20.0" prefWidth="170.0" text="kein Dessert" />
</children> </children>
</VBox> </VBox>
</children> </children>
</VBox> </VBox>
<VBox prefHeight="350.0" prefWidth="180.0" style="-fx-background-color: transparent; -fx-padding: 5;" styleClass="container"> <VBox prefHeight="350.0" prefWidth="180.0" style="-fx-background-color: transparent; -fx-padding: 5;">
<children> <children>
<Label alignment="CENTER" contentDisplay="TOP" prefHeight="23.0" prefWidth="196.0" style="-fx-background-color: lightdarkblue;" text="Mittwoch" textAlignment="CENTER"> <Label alignment="CENTER" contentDisplay="TOP" prefHeight="23.0" prefWidth="196.0" style="-fx-background-color: lightdarkblue;" text="Mittwoch" textAlignment="CENTER">
<VBox.margin> <VBox.margin>
@ -94,9 +92,9 @@
</Label> </Label>
<VBox prefHeight="200.0" prefWidth="100.0"> <VBox prefHeight="200.0" prefWidth="100.0">
<children> <children>
<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="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" styleClass="btFood" text="Mahlzeit 2" /> <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" styleClass="btFood" text="Keine Mahlzeit"> <Button id="btFoodChoice" fx:id="btNoMealWed" alignment="CENTER" mnemonicParsing="false" onAction="#setButtonActive" prefHeight="20.0" prefWidth="170.0" text="Keine Mahlzeit">
<VBox.margin> <VBox.margin>
<Insets bottom="20.0" /> <Insets bottom="20.0" />
</VBox.margin> </VBox.margin>
@ -105,14 +103,14 @@
</VBox> </VBox>
<VBox prefHeight="200.0" prefWidth="100.0"> <VBox prefHeight="200.0" prefWidth="100.0">
<children> <children>
<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="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" styleClass="btFood" text="Dessert 2" /> <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" styleClass="btFood" text="kein Dessert" /> <Button id="btFoodChoice" fx:id="btNoDessertWed" alignment="CENTER" mnemonicParsing="false" onAction="#setButtonActive" prefHeight="20.0" prefWidth="170.0" text="kein Dessert" />
</children> </children>
</VBox> </VBox>
</children> </children>
</VBox> </VBox>
<VBox prefHeight="350.0" prefWidth="180.0" style="-fx-background-color: transparent; -fx-padding: 5;" styleClass="container"> <VBox prefHeight="350.0" prefWidth="180.0" style="-fx-background-color: transparent; -fx-padding: 5;">
<children> <children>
<Label alignment="CENTER" contentDisplay="TOP" prefHeight="23.0" prefWidth="196.0" style="-fx-background-color: lightdarkblue;" text="Donnerstag" textAlignment="CENTER"> <Label alignment="CENTER" contentDisplay="TOP" prefHeight="23.0" prefWidth="196.0" style="-fx-background-color: lightdarkblue;" text="Donnerstag" textAlignment="CENTER">
<VBox.margin> <VBox.margin>
@ -124,9 +122,9 @@
</Label> </Label>
<VBox prefHeight="200.0" prefWidth="100.0"> <VBox prefHeight="200.0" prefWidth="100.0">
<children> <children>
<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="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" styleClass="btFood" text="Mahlzeit 2" /> <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" styleClass="btFood" text="Keine Mahlzeit"> <Button id="btFoodChoice" fx:id="btNoMealThu" alignment="CENTER" mnemonicParsing="false" onAction="#setButtonActive" prefHeight="20.0" prefWidth="170.0" text="Keine Mahlzeit">
<VBox.margin> <VBox.margin>
<Insets bottom="20.0" /> <Insets bottom="20.0" />
</VBox.margin> </VBox.margin>
@ -135,14 +133,14 @@
</VBox> </VBox>
<VBox prefHeight="200.0" prefWidth="100.0"> <VBox prefHeight="200.0" prefWidth="100.0">
<children> <children>
<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="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" styleClass="btFood" text="Dessert 2" /> <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" styleClass="btFood" text="kein Dessert" /> <Button id="btFoodChoice" fx:id="btNoDessertThu" alignment="CENTER" mnemonicParsing="false" onAction="#setButtonActive" prefHeight="20.0" prefWidth="170.0" text="kein Dessert" />
</children> </children>
</VBox> </VBox>
</children> </children>
</VBox> </VBox>
<VBox prefHeight="350.0" prefWidth="180.0" style="-fx-background-color: transparent; -fx-padding: 5;" styleClass="container"> <VBox prefHeight="350.0" prefWidth="180.0" style="-fx-background-color: transparent; -fx-padding: 5;">
<children> <children>
<Label alignment="CENTER" contentDisplay="TOP" prefHeight="23.0" prefWidth="196.0" style="-fx-background-color: lightdarkblue;" text="Freitag" textAlignment="CENTER"> <Label alignment="CENTER" contentDisplay="TOP" prefHeight="23.0" prefWidth="196.0" style="-fx-background-color: lightdarkblue;" text="Freitag" textAlignment="CENTER">
<VBox.margin> <VBox.margin>
@ -154,9 +152,9 @@
</Label> </Label>
<VBox prefHeight="200.0" prefWidth="100.0"> <VBox prefHeight="200.0" prefWidth="100.0">
<children> <children>
<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="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" styleClass="btFood" text="Mahlzeit 2" /> <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" styleClass="btFood" text="Keine Mahlzeit"> <Button id="btFoodChoice" fx:id="btNoMealFri" alignment="CENTER" mnemonicParsing="false" onAction="#setButtonActive" prefHeight="20.0" prefWidth="170.0" text="Keine Mahlzeit">
<VBox.margin> <VBox.margin>
<Insets bottom="20.0" /> <Insets bottom="20.0" />
</VBox.margin> </VBox.margin>
@ -165,9 +163,9 @@
</VBox> </VBox>
<VBox prefHeight="200.0" prefWidth="100.0"> <VBox prefHeight="200.0" prefWidth="100.0">
<children> <children>
<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="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" styleClass="btFood" text="Dessert 2" /> <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" styleClass="btFood" text="kein Dessert" /> <Button id="btFoodChoice" fx:id="btNoDessertFri" alignment="CENTER" mnemonicParsing="false" onAction="#setButtonActive" prefHeight="20.0" prefWidth="170.0" text="kein Dessert" />
</children> </children>
</VBox> </VBox>
</children> </children>

View File

@ -13,6 +13,7 @@
-fx-background-radius: 25; -fx-background-radius: 25;
} }
#btPlaceOrder:hover{ #btPlaceOrder:hover{
-fx-border-width: 0; -fx-border-width: 0;
-fx-text-fill: black; -fx-text-fill: black;
@ -22,16 +23,11 @@
#cbChooseChild{ #cbChooseChild{
-fx-background-color: lightgray; -fx-background-color: lightgray;
} }
.btFood{
.container{ -fx-background-color: transparent;
-fx-padding: 10%;
} }
.sidebar-nav_button{ .btFood.active{
-fx-border-width: 0px; -fx-background-color: rgba(97, 97, 232, 0.3);
} -fx-background-radius: 25;
.sidebar-nav_button.active {
-fx-background-color: #4e92b4;
-fx-border-width: 0px;
} }

View File

@ -1,17 +0,0 @@
<?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>

View File

@ -5,17 +5,22 @@
<?import javafx.scene.image.Image?> <?import javafx.scene.image.Image?>
<?import javafx.scene.image.ImageView?> <?import javafx.scene.image.ImageView?>
<?import javafx.scene.layout.AnchorPane?> <?import javafx.scene.layout.AnchorPane?>
<?import javafx.scene.layout.BorderPane?>
<?import javafx.scene.layout.HBox?> <?import javafx.scene.layout.HBox?>
<?import javafx.scene.layout.Region?>
<?import javafx.scene.layout.VBox?> <?import javafx.scene.layout.VBox?>
<?import javafx.scene.text.Font?> <?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.ParentMenuController"> <?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">
<left> <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"> <VBox alignment="TOP_CENTER" prefHeight="750.0" prefWidth="350.0" spacing="10.0"
style="-fx-background-color: #69b6ff; -fx-padding: 20;" BorderPane.alignment="CENTER">
<children> <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>
<Font size="20.0"/> <Font size="20.0"/>
</font> </font>
@ -27,7 +32,9 @@
</ImageView> </ImageView>
</graphic> </graphic>
</Button> </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>
<Font size="20.0"/> <Font size="20.0"/>
</font> </font>
@ -39,7 +46,9 @@
</ImageView> </ImageView>
</graphic> </graphic>
</Button> </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>
<Font size="20.0"/> <Font size="20.0"/>
</font> </font>
@ -52,7 +61,9 @@
</graphic> </graphic>
</Button> </Button>
<Region VBox.vgrow="ALWAYS"/> <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"> <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>
<Font size="20.0"/> <Font size="20.0"/>
</font> </font>
@ -68,9 +79,11 @@
</VBox> </VBox>
</left> </left>
<top> <top>
<HBox alignment="CENTER_RIGHT" prefHeight="50.0" prefWidth="1200.0" style="-fx-background-color: #ADD8E6FF;" BorderPane.alignment="CENTER"> <HBox alignment="CENTER_RIGHT" prefHeight="50.0" prefWidth="1200.0" style="-fx-background-color: #69b6ff;"
BorderPane.alignment="CENTER">
<children> <children>
<Button mnemonicParsing="false" onMouseClicked="#onAusloggenClick" styleClass="sidebar-nav_button" text="Ausloggen"> <Button mnemonicParsing="false" onMouseClicked="#onAusloggenClick" styleClass="sidebar-nav_button"
text="Ausloggen">
<opaqueInsets> <opaqueInsets>
<Insets/> <Insets/>
</opaqueInsets> </opaqueInsets>
@ -85,3 +98,4 @@
<AnchorPane prefHeight="200.0" prefWidth="200.0" BorderPane.alignment="CENTER"/> <AnchorPane prefHeight="200.0" prefWidth="200.0" BorderPane.alignment="CENTER"/>
</center> </center>
</BorderPane> </BorderPane>

View File

@ -8,19 +8,35 @@
<?import javafx.scene.layout.AnchorPane?> <?import javafx.scene.layout.AnchorPane?>
<?import javafx.scene.layout.HBox?> <?import javafx.scene.layout.HBox?>
<?import javafx.scene.layout.VBox?> <?import javafx.scene.layout.VBox?>
<?import javafx.scene.shape.Circle?>
<?import javafx.scene.text.Font?> <?import javafx.scene.text.Font?>
<?import javafx.scene.text.Text?> <?import javafx.scene.text.Text?>
<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"> <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">
<children> <children>
<VBox layoutX="400.0" prefHeight="750.0" prefWidth="900.0" style="-fx-background-color: white;"> <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;">
<children> <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;"> <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> <effect>
<Blend /> <Blend />
</effect> </effect>
<font> <font>
<Font name="Microsoft Tai Le Bold" size="20.0" /> <Font name="Microsoft Tai Le Bold" size="12.0" />
</font> </font>
<VBox.margin> <VBox.margin>
<Insets bottom="10.0" left="10.0" right="10.0" top="10.0" /> <Insets bottom="10.0" left="10.0" right="10.0" top="10.0" />
@ -31,7 +47,7 @@
<Blend /> <Blend />
</effect> </effect>
<font> <font>
<Font name="Microsoft Tai Le Bold" size="20.0" /> <Font name="Microsoft Tai Le Bold" size="12.0" />
</font> </font>
<VBox.margin> <VBox.margin>
<Insets bottom="10.0" left="10.0" right="10.0" top="10.0" /> <Insets bottom="10.0" left="10.0" right="10.0" top="10.0" />
@ -42,7 +58,7 @@
<Blend /> <Blend />
</effect> </effect>
<font> <font>
<Font name="Microsoft Tai Le Bold" size="20.0" /> <Font name="Microsoft Tai Le Bold" size="12.0" />
</font> </font>
<VBox.margin> <VBox.margin>
<Insets bottom="10.0" left="10.0" right="10.0" top="10.0" /> <Insets bottom="10.0" left="10.0" right="10.0" top="10.0" />
@ -50,7 +66,7 @@
</TextField> </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;"> <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>
<Font name="Microsoft Tai Le Bold" size="20.0" /> <Font name="Microsoft Tai Le Bold" size="12.0" />
</font> </font>
<opaqueInsets> <opaqueInsets>
<Insets /> <Insets />
@ -69,7 +85,7 @@
<Insets bottom="10.0" left="10.0" right="10.0" top="10.0" /> <Insets bottom="10.0" left="10.0" right="10.0" top="10.0" />
</HBox.margin> </HBox.margin>
<font> <font>
<Font name="Microsoft Tai Le Bold" size="20.0" /> <Font name="Microsoft Tai Le Bold" size="12.0" />
</font> </font>
</TextField> </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;"> <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;">
@ -77,7 +93,7 @@
<Insets bottom="10.0" left="10.0" right="10.0" top="10.0" /> <Insets bottom="10.0" left="10.0" right="10.0" top="10.0" />
</HBox.margin> </HBox.margin>
<font> <font>
<Font name="Microsoft Tai Le Bold" size="20.0" /> <Font name="Microsoft Tai Le Bold" size="12.0" />
</font> </font>
</TextField> </TextField>
</children> </children>
@ -89,35 +105,26 @@
<Insets bottom="10.0" left="10.0" right="10.0" top="10.0" /> <Insets bottom="10.0" left="10.0" right="10.0" top="10.0" />
</HBox.margin> </HBox.margin>
<font> <font>
<Font name="Microsoft Tai Le Bold" size="20.0" /> <Font name="Microsoft Tai Le Bold" size="12.0" />
</font> </font>
</TextField> </TextField>
<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;"> <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;">
<HBox.margin> <HBox.margin>
<Insets bottom="10.0" left="10.0" right="10.0" top="10.0" /> <Insets bottom="10.0" left="10.0" right="10.0" top="10.0" />
</HBox.margin> </HBox.margin>
<font> <font>
<Font name="Microsoft Tai Le Bold" size="20.0" /> <Font name="Microsoft Tai Le Bold" size="12.0" />
</font> </font>
</TextField> </TextField>
</children> </children>
</HBox> </HBox>
<HBox alignment="CENTER" prefHeight="30.0" prefWidth="238.0"> <HBox alignment="CENTER" prefHeight="30.0" prefWidth="238.0">
<children> <children>
<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"> <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">
<font> <font>
<Font name="Microsoft Tai Le Bold" size="15.0" /> <Font name="Microsoft Tai Le Bold" size="12.0" />
</font> </font></Button>
<HBox.margin> <Button id="btSignUp" mnemonicParsing="false" onAction="#onAnmeldenBtClick" prefHeight="25.0" prefWidth="101.0" style="-fx-background-color: tranparent;" text="Anmelden" textFill="#7c7b7b" underline="true" />
<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> </children>
<opaqueInsets> <opaqueInsets>
<Insets top="15.0" /> <Insets top="15.0" />
@ -128,20 +135,10 @@
</HBox> </HBox>
</children> </children>
<padding> <padding>
<Insets bottom="65.0" left="45.0" right="45.0" top="150.0" /> <Insets bottom="65.0" left="45.0" right="45.0" top="45.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> </padding>
</VBox> </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> </children>
</AnchorPane> </AnchorPane>

View File

@ -1,118 +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.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>