MaltesConsolenEcke #2
@@ -8,9 +8,12 @@ import javax.crypto.spec.PBEKeySpec;
 | 
			
		||||
import java.security.NoSuchAlgorithmException;
 | 
			
		||||
import java.security.spec.InvalidKeySpecException;
 | 
			
		||||
import java.security.spec.KeySpec;
 | 
			
		||||
import java.util.ArrayList;
 | 
			
		||||
import java.util.Base64;
 | 
			
		||||
import java.util.List;
 | 
			
		||||
 | 
			
		||||
public class AccountMgr {
 | 
			
		||||
    protected static double price = 5.0;
 | 
			
		||||
    /**
 | 
			
		||||
     * creates a user with createUser(...) and adds its id to the 'worker' table
 | 
			
		||||
     * @param userData String[] name, firstname, password, email
 | 
			
		||||
@@ -91,7 +94,6 @@ public class AccountMgr {
 | 
			
		||||
        return workerId > 0;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    public static boolean isParent(String id){
 | 
			
		||||
        String[] parentH = {"userid"};
 | 
			
		||||
        String[] parentD = {id};
 | 
			
		||||
@@ -114,4 +116,30 @@ public class AccountMgr {
 | 
			
		||||
        }
 | 
			
		||||
        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(":");
 | 
			
		||||
        food_selectionData[1] = foodPlanParts[0];
 | 
			
		||||
        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[]{"food"},new String[]{foodPlanParts[3]}).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[]{"id"},new String[]{foodPlanParts[3]}).get(0));
 | 
			
		||||
        System.out.print("Id: ");
 | 
			
		||||
        food_selectionData[2] = sc.nextLine();
 | 
			
		||||
        if(FoodMgr.createFood_selection(food_selectionData) < 1){
 | 
			
		||||
            System.out.println("Fehler");
 | 
			
		||||
        }
 | 
			
		||||
        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[]{"food"},new String[]{foodPlanParts[5]}).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[]{"id"},new String[]{foodPlanParts[5]}).get(0));
 | 
			
		||||
        System.out.print("Id: ");
 | 
			
		||||
        food_selectionData[2] = sc.nextLine();
 | 
			
		||||
        if(FoodMgr.createFood_selection(food_selectionData) < 1){
 | 
			
		||||
            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;
 | 
			
		||||
    public static void main(String[] args) {
 | 
			
		||||
        boolean firstRun = Database.init();
 | 
			
		||||
        Database.createDb();
 | 
			
		||||
        Database.fillDb();
 | 
			
		||||
        //Database.printSampleQuery();
 | 
			
		||||
        if(firstRun){
 | 
			
		||||
            Database.createDb();
 | 
			
		||||
            Database.fillDb();
 | 
			
		||||
            ConsoleLib.createWorkerPrompt();
 | 
			
		||||
        }
 | 
			
		||||
        while (true){
 | 
			
		||||
@@ -63,6 +62,9 @@ public class ConsoleMain {
 | 
			
		||||
        System.out.println("8: Essensplan anzeigen");
 | 
			
		||||
        System.out.println("9: Löschen");
 | 
			
		||||
        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: ");
 | 
			
		||||
@@ -84,8 +86,9 @@ public class ConsoleMain {
 | 
			
		||||
            case "8" -> ConsoleLib.showFood_planPrompt();
 | 
			
		||||
            case "9" -> ConsoleLib.deletePrompt();
 | 
			
		||||
            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,
 | 
			
		||||
                dessert1 integer,
 | 
			
		||||
                dessert2 integer,
 | 
			
		||||
                issent integer DEFAULT '0',
 | 
			
		||||
                FOREIGN KEY(food1) REFERENCES food(id),
 | 
			
		||||
                FOREIGN KEY(food2) REFERENCES food(id),
 | 
			
		||||
                FOREIGN KEY(dessert1) REFERENCES food(id),
 | 
			
		||||
@@ -396,6 +397,38 @@ public class Database {
 | 
			
		||||
                }
 | 
			
		||||
                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();
 | 
			
		||||
        return sql;
 | 
			
		||||
@@ -475,4 +508,25 @@ public class Database {
 | 
			
		||||
        }
 | 
			
		||||
        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
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
import java.util.ArrayList;
 | 
			
		||||
import java.util.List;
 | 
			
		||||
 | 
			
		||||
public class FoodMgr {
 | 
			
		||||
@@ -48,7 +49,34 @@ public class FoodMgr {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public static long createFood_selection(String[] food_selectionData){
 | 
			
		||||
        String[] food_selectionH = {"childid","foodplanid","foodid"};
 | 
			
		||||
        return Database.insert("food_selection",food_selectionH,food_selectionData);
 | 
			
		||||
        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);
 | 
			
		||||
        }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 static void main(String[] args) {
 | 
			
		||||
        ConsoleMain.main(args);
 | 
			
		||||
        if(args.length > 0){
 | 
			
		||||
            ConsoleMain.main(args);
 | 
			
		||||
        }else {
 | 
			
		||||
            HelloApplication.main(args);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user