added invoice and order collection

This commit is contained in:
Malte Schulze Hobeling 2023-01-07 23:14:41 +01:00
parent 58fb02875a
commit 573e17161b
6 changed files with 160 additions and 13 deletions

View File

@ -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;
}
} }

View File

@ -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;
}
} }

View File

@ -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();
} }
} }

View File

@ -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;
}
}
} }

View File

@ -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;
} }
} }

View File

@ -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);
}
} }
} }