added invoice and order collection
This commit is contained in:
parent
58fb02875a
commit
573e17161b
@ -8,9 +8,12 @@ import javax.crypto.spec.PBEKeySpec;
|
|||||||
import java.security.NoSuchAlgorithmException;
|
import java.security.NoSuchAlgorithmException;
|
||||||
import java.security.spec.InvalidKeySpecException;
|
import java.security.spec.InvalidKeySpecException;
|
||||||
import java.security.spec.KeySpec;
|
import java.security.spec.KeySpec;
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.Base64;
|
import java.util.Base64;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
public class AccountMgr {
|
public class AccountMgr {
|
||||||
|
protected static double price = 5.0;
|
||||||
/**
|
/**
|
||||||
* 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 userData String[] name, firstname, password, email
|
* @param userData String[] name, firstname, password, email
|
||||||
@ -91,7 +94,6 @@ public class AccountMgr {
|
|||||||
return workerId > 0;
|
return workerId > 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public static boolean isParent(String id){
|
public static boolean isParent(String id){
|
||||||
String[] parentH = {"userid"};
|
String[] parentH = {"userid"};
|
||||||
String[] parentD = {id};
|
String[] parentD = {id};
|
||||||
@ -114,4 +116,30 @@ public class AccountMgr {
|
|||||||
}
|
}
|
||||||
return hashedPw;
|
return hashedPw;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static List<String> getInvoice(String date, String childId){
|
||||||
|
List<String> invoice = new ArrayList<>();
|
||||||
|
invoice.add("Monatsabrechnung " + date);
|
||||||
|
List<String> child = Database.getEntryById("child", Long.parseLong(childId));
|
||||||
|
String[] childParts = child.get(0).split(":");
|
||||||
|
invoice.add(childParts[1] + ", " + childParts[2]);
|
||||||
|
String[] food_planH = {"date"};
|
||||||
|
String[] food_planD = {date+"%"};
|
||||||
|
List<String> food_plan = Database.select("food_plan",food_planH,food_planD);
|
||||||
|
for (String day : food_plan) {
|
||||||
|
String[] food_planParts = day.split(":");
|
||||||
|
String[] food_selectionH = {"childid","food_planid"};
|
||||||
|
String[] food_selectionD = {childId,food_planParts[0]};
|
||||||
|
List<String> food_selection = Database.select("food_selection",food_selectionH,food_selectionD);
|
||||||
|
for (String food_select : food_selection) {
|
||||||
|
String[] food_selectParts = food_select.split(":");
|
||||||
|
List<String> food = Database.getEntryById("food",Long.parseLong(food_selectParts[3]));
|
||||||
|
String[] foodParts = food.get(0).split(":");
|
||||||
|
String line = food_planParts[1] + ": " + foodParts[1];
|
||||||
|
invoice.add(line);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
invoice.add("Total: " + (invoice.size()-2) + " X " + price + "€ = " + ((invoice.size()-2)*price) + "€");
|
||||||
|
return invoice;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -246,20 +246,50 @@ public class ConsoleLib {
|
|||||||
String[] foodPlanParts = Database.select("food_plan", new String[]{"date"}, new String[]{date}).get(0).split(":");
|
String[] foodPlanParts = Database.select("food_plan", new String[]{"date"}, new String[]{date}).get(0).split(":");
|
||||||
food_selectionData[1] = foodPlanParts[0];
|
food_selectionData[1] = foodPlanParts[0];
|
||||||
System.out.println("Hauptspeisen: ");
|
System.out.println("Hauptspeisen: ");
|
||||||
System.out.println(Database.select("food",new String[]{"food"},new String[]{foodPlanParts[2]}).get(0));
|
System.out.println(Database.select("food",new String[]{"id"},new String[]{foodPlanParts[2]}).get(0));
|
||||||
System.out.println(Database.select("food",new String[]{"food"},new String[]{foodPlanParts[3]}).get(0));
|
System.out.println(Database.select("food",new String[]{"id"},new String[]{foodPlanParts[3]}).get(0));
|
||||||
System.out.print("Id: ");
|
System.out.print("Id: ");
|
||||||
food_selectionData[2] = sc.nextLine();
|
food_selectionData[2] = sc.nextLine();
|
||||||
if(FoodMgr.createFood_selection(food_selectionData) < 1){
|
if(FoodMgr.createFood_selection(food_selectionData) < 1){
|
||||||
System.out.println("Fehler");
|
System.out.println("Fehler");
|
||||||
}
|
}
|
||||||
System.out.println("Nachspeisen: ");
|
System.out.println("Nachspeisen: ");
|
||||||
System.out.println(Database.select("food",new String[]{"food"},new String[]{foodPlanParts[4]}).get(0));
|
System.out.println(Database.select("food",new String[]{"id"},new String[]{foodPlanParts[4]}).get(0));
|
||||||
System.out.println(Database.select("food",new String[]{"food"},new String[]{foodPlanParts[5]}).get(0));
|
System.out.println(Database.select("food",new String[]{"id"},new String[]{foodPlanParts[5]}).get(0));
|
||||||
System.out.print("Id: ");
|
System.out.print("Id: ");
|
||||||
food_selectionData[2] = sc.nextLine();
|
food_selectionData[2] = sc.nextLine();
|
||||||
if(FoodMgr.createFood_selection(food_selectionData) < 1){
|
if(FoodMgr.createFood_selection(food_selectionData) < 1){
|
||||||
System.out.println("Fehler");
|
System.out.println("Fehler");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void dayOrderPrompt(){
|
||||||
|
System.out.println("Zusammenfassung des Tages");
|
||||||
|
System.out.print("Datum eingeben: ");
|
||||||
|
Scanner sc = new Scanner(System.in);
|
||||||
|
String date = sc.nextLine();
|
||||||
|
List<String> dayOrder = FoodMgr.getDayOrder(date);
|
||||||
|
for (String food : dayOrder) {
|
||||||
|
System.out.println(food);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void invoicePrompt(){
|
||||||
|
System.out.println("Monatsabrechnung");
|
||||||
|
System.out.print("Monat(YYYY-MM): ");
|
||||||
|
Scanner sc = new Scanner(System.in);
|
||||||
|
String date = sc.nextLine();
|
||||||
|
System.out.print("ID des Kindes: ");
|
||||||
|
String id = sc.nextLine();
|
||||||
|
List<String> invoice = AccountMgr.getInvoice(date,id);
|
||||||
|
printConsole(invoice);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void changePricePrompt(){
|
||||||
|
System.out.print("Neuer Preis: ");
|
||||||
|
Scanner sc = new Scanner(System.in);
|
||||||
|
double price = sc.nextDouble();
|
||||||
|
sc.nextLine();
|
||||||
|
AccountMgr.price = price;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -11,10 +11,9 @@ public class ConsoleMain {
|
|||||||
static boolean isParent = false;
|
static boolean isParent = false;
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
boolean firstRun = Database.init();
|
boolean firstRun = Database.init();
|
||||||
|
if(firstRun){
|
||||||
Database.createDb();
|
Database.createDb();
|
||||||
Database.fillDb();
|
Database.fillDb();
|
||||||
//Database.printSampleQuery();
|
|
||||||
if(firstRun){
|
|
||||||
ConsoleLib.createWorkerPrompt();
|
ConsoleLib.createWorkerPrompt();
|
||||||
}
|
}
|
||||||
while (true){
|
while (true){
|
||||||
@ -63,6 +62,9 @@ public class ConsoleMain {
|
|||||||
System.out.println("8: Essensplan anzeigen");
|
System.out.println("8: Essensplan anzeigen");
|
||||||
System.out.println("9: Löschen");
|
System.out.println("9: Löschen");
|
||||||
System.out.println("10: Essen auswählen");
|
System.out.println("10: Essen auswählen");
|
||||||
|
System.out.println("11: Bestellungen des Tages sammeln");
|
||||||
|
System.out.println("12: Monatsabrechnung");
|
||||||
|
System.out.println("13: Preis ändern");
|
||||||
|
|
||||||
|
|
||||||
System.out.print("Auswahl: ");
|
System.out.print("Auswahl: ");
|
||||||
@ -84,8 +86,9 @@ public class ConsoleMain {
|
|||||||
case "8" -> ConsoleLib.showFood_planPrompt();
|
case "8" -> ConsoleLib.showFood_planPrompt();
|
||||||
case "9" -> ConsoleLib.deletePrompt();
|
case "9" -> ConsoleLib.deletePrompt();
|
||||||
case "10" -> ConsoleLib.createFood_selectionPrompt();
|
case "10" -> ConsoleLib.createFood_selectionPrompt();
|
||||||
default -> {
|
case "11" -> ConsoleLib.dayOrderPrompt();
|
||||||
}
|
case "12" -> ConsoleLib.invoicePrompt();
|
||||||
|
case "13" -> ConsoleLib.changePricePrompt();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -119,6 +119,7 @@ public class Database {
|
|||||||
food2 integer,
|
food2 integer,
|
||||||
dessert1 integer,
|
dessert1 integer,
|
||||||
dessert2 integer,
|
dessert2 integer,
|
||||||
|
issent integer DEFAULT '0',
|
||||||
FOREIGN KEY(food1) REFERENCES food(id),
|
FOREIGN KEY(food1) REFERENCES food(id),
|
||||||
FOREIGN KEY(food2) REFERENCES food(id),
|
FOREIGN KEY(food2) REFERENCES food(id),
|
||||||
FOREIGN KEY(dessert1) REFERENCES food(id),
|
FOREIGN KEY(dessert1) REFERENCES food(id),
|
||||||
@ -396,6 +397,38 @@ public class Database {
|
|||||||
}
|
}
|
||||||
sb.append(");");
|
sb.append(");");
|
||||||
}
|
}
|
||||||
|
case "count" -> {
|
||||||
|
sb = new StringBuilder("SELECT COUNT(*) FROM ");
|
||||||
|
sb.append(table);
|
||||||
|
sb.append(" WHERE ");
|
||||||
|
sb.append(header[0]);
|
||||||
|
sb.append(" = ");
|
||||||
|
sb.append(values[0]);
|
||||||
|
for(int i = 1; i < header.length; i++){
|
||||||
|
sb.append(" AND ");
|
||||||
|
sb.append(header[i]);
|
||||||
|
sb.append(" = ");
|
||||||
|
sb.append(values[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
case "update" -> {
|
||||||
|
sb = new StringBuilder("UPDATE ");
|
||||||
|
sb.append(table);
|
||||||
|
sb.append(" SET ");
|
||||||
|
sb.append(header[1]);
|
||||||
|
sb.append(" = ");
|
||||||
|
sb.append(values[1]);
|
||||||
|
for(int i = 2; i < header.length; i++){
|
||||||
|
sb.append(", ");
|
||||||
|
sb.append(header[i]);
|
||||||
|
sb.append(" = ");
|
||||||
|
sb.append(values[i]);
|
||||||
|
}
|
||||||
|
sb.append(" WHERE ");
|
||||||
|
sb.append(header[0]);
|
||||||
|
sb.append(" = ");
|
||||||
|
sb.append(values[0]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
sql = sb.toString();
|
sql = sb.toString();
|
||||||
return sql;
|
return sql;
|
||||||
@ -475,4 +508,25 @@ public class Database {
|
|||||||
}
|
}
|
||||||
return data;
|
return data;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected static int count(String table,String[] header,String[] values){
|
||||||
|
String sql = queryBuilder("count",table,header,values);
|
||||||
|
try(Connection conn = connect()) {
|
||||||
|
PreparedStatement ps = conn.prepareStatement(sql);
|
||||||
|
ResultSet rs = ps.executeQuery();
|
||||||
|
return rs.getInt(1);
|
||||||
|
}catch (SQLException e){
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected static int update(String table,String[] header,String[] values){
|
||||||
|
try(Connection conn = connect()) {
|
||||||
|
String sql = queryBuilder("update",table,header,values);
|
||||||
|
PreparedStatement ps = conn.prepareStatement(sql);
|
||||||
|
return ps.executeUpdate();
|
||||||
|
}catch (SQLException e){
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -3,6 +3,7 @@ package com.bib.essensbestellungsverwaltung;
|
|||||||
@author Malte Schulze Hobeling
|
@author Malte Schulze Hobeling
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public class FoodMgr {
|
public class FoodMgr {
|
||||||
@ -48,7 +49,34 @@ public class FoodMgr {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static long createFood_selection(String[] food_selectionData){
|
public static long createFood_selection(String[] food_selectionData){
|
||||||
String[] food_selectionH = {"childid","foodplanid","foodid"};
|
String[] food_selectionH = {"childid","food_planid","foodid"};
|
||||||
|
List<String> food_plan = Database.getEntryById("food_plan",Long.parseLong(food_selectionData[1]));
|
||||||
|
String[] food_planParts = food_plan.get(0).split(":");
|
||||||
|
if(Long.parseLong(food_planParts[6]) == 0){
|
||||||
return Database.insert("food_selection",food_selectionH,food_selectionData);
|
return Database.insert("food_selection",food_selectionH,food_selectionData);
|
||||||
|
}else {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static List<String> getDayOrder(String date){
|
||||||
|
List<String> orders = new ArrayList<>();
|
||||||
|
List<String> food_plan = getFood_plan(date);
|
||||||
|
String[] food_planParts = food_plan.get(0).split(":");
|
||||||
|
for(int i = 2; i < 2+4; i++){
|
||||||
|
List<String> food = getFoodById(Long.parseLong(food_planParts[i]));
|
||||||
|
String[] foodParts = food.get(0).split(":");
|
||||||
|
String foodName = foodParts[1];
|
||||||
|
String[] food_selectionH = {"food_planid","foodid"};
|
||||||
|
String[] food_selectionD = {food_planParts[0],foodParts[0]};
|
||||||
|
int count = Database.count("food_selection",food_selectionH,food_selectionD);
|
||||||
|
orders.add(foodName+":"+count);
|
||||||
|
}
|
||||||
|
String[] updateH = {"id","issent"};
|
||||||
|
String[] updateD = {food_planParts[0],"1"};
|
||||||
|
if(Database.update("food_plan",updateH,updateD) < 0){
|
||||||
|
System.out.println("Fehler");
|
||||||
|
}
|
||||||
|
return orders;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2,6 +2,10 @@ 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){
|
||||||
ConsoleMain.main(args);
|
ConsoleMain.main(args);
|
||||||
|
}else {
|
||||||
|
HelloApplication.main(args);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user