package pckg.Backend; import java.io.FileNotFoundException; import java.util.ArrayList; import java.util.Scanner; import java.io.File; public class OnlineShop { private static Warenkorb warenkorb = new Warenkorb(); private static Scanner sc = new Scanner(System.in); public ArrayList warehouse; public OnlineShop() throws FileNotFoundException { warehouse = new ArrayList(); Scanner sc = new Scanner(new File("resources/produkte.csv")); sc.nextLine(); while(sc.hasNextLine() ) { String zeile = sc.nextLine(); String[] teile = zeile.split(","); int id = Integer.parseInt(teile[0]); String name = teile[1]; double gewicht = Double.parseDouble(teile[2]); double preis = Double.parseDouble(teile[3]); int mwst = Integer.parseInt(teile[4]); int bestand = Integer.parseInt(teile[5]); Produkt p = new Produkt(id, name, gewicht, preis, mwst, bestand); warehouse.add(p); } sc.close(); } public void angebot() throws FileNotFoundException { System.out.println("\n\n\nUnser Angebot: \n"); for (int i = 0; i < warehouse.size(); i++) { Produkt p = warehouse.get(i); System.out.printf(" %-2d | %-23s | %.2f€ | + %2d%%\n", p.getId(), p.getName(), p.getPreis(), p.getMwst()); } System.out.println("\nWählen Sie ein Produkt anhand der Artikelnummer für Ihren Warenkorb aus \noder geben Sie 'Hauptmenü' an, wenn Sie zurück wollen: "); String eingabe = sc.nextLine().toLowerCase(); if (eingabe.equals("mainMenu") || eingabe.equals("hauptmenü")) { return; // Einfach zurückkehren, TUI zeigt Menü wieder an } int nummer = Integer.parseInt(eingabe); int index = nummer - 1; if (index >= 0 && index < warehouse.size()) { Produkt p = warehouse.get(index); System.out.println("\n\n\nSie haben folgendes ausgewählt: \n" + p.getId() + " | " + p.getName()); System.out.println("\nGeben Sie bitte die gewünschte Menge an: \n"); int menge = Integer.parseInt(sc.nextLine()); if (menge <= p.getBestand()) { warenkorb.produktHinzufügen(p, menge); decrease(p, menge); System.out.println("Das Produkt wurde in der gewünschten Menge zum Warenkorb hinzugefügt ."); } else { System.out.println("Die menge im bestand ist leider nicht ausreichend für ihre Bestellung"); } } else { System.out.println("Ungültige Artikelnummer."); } System.out.println("Sie werden zum Hauptmenü zurück geführt\n\n\n"); } public void suche() throws FileNotFoundException { System.out.println("\n Bitte geben sie den Artikel den Sie suchen ein?: "); String suchbegriff = sc.nextLine().toLowerCase(); if (suchbegriff.length() == 0) { return; } if (suchbegriff.equals("mainMenu")) { return; } boolean gefunden = false; for (int artnr = 0; artnr < warehouse.size(); artnr++) { Produkt p = warehouse.get(artnr); if (p.compareSearchName(suchbegriff)) { if(!gefunden) { System.out.println("\nFolgender Treffer ist vorhanden: "); } System.out.println(p); gefunden = true; System.out.println("\nMöchten Sie das Produkt zu Ihrem Warenkorb hinzufügen?"); String antwort = sc.nextLine().toLowerCase(); if (antwort.equals("ja")) { System.out.println("Geben Sie bitte die gewünschte Menge an: "); try { int menge = Integer.parseInt(sc.nextLine()); if (menge <= p.getBestand()) { warenkorb.produktHinzufügen(p, menge); decrease(p, menge); System.out.println("Das Produkt wurde in der gewünschten Menge zum Warenkorb hinzugefügt, Sie werden zum Hauptmenü zurückgeleitet"); return; // Zurück zur TUI } else { System.out.println("Die menge im bestand ist leider nicht ausreichend für ihre Bestellung,Sie werden zum Hauptmenü zurückgeleitet"); return; // Zurück zur TUI } } catch (NumberFormatException e) { System.out.println("Ungültige Menge."); } } else { System.out.println("Sie werden zum Hauptmenü zurückgeleitet"); return; // Zurück zur TUI } } } if (!gefunden) { System.out.println("Leider keine Treffer,Sie werden zum Hauptmenü zurückgeleitet"); } } public void showCart() throws FileNotFoundException { if (warenkorb.getPositionen().size() == 0) { System.out.println("\n\nIhr Warenkorb ist leer, viel spaß beim shoppen , um Ihnen dieses zu erleichtern werden sie zum Hauptmenü zurück geleitet"); return; // Zurück zur TUI } else { System.out.println("\n--------------Warenkorbübersicht-----------------------"); System.out.println(" "); int pos = 1; for (WarenkorbPosition wp : warenkorb.getPositionen()) { System.out.printf("Pos.: %2d | %2dx | %-23s | %6.2f€ | %2d%% ݁\n", pos++, wp.getMenge(), wp.getProdukt().getName(), wp.getProdukt().getPreis(), wp.getProdukt().getMwst()); } System.out.println("--------------------------------------------------------"); System.out.printf("%-29s %19.2f€ ", "Nettosumme:", warenkorb.produkteNetto()); System.out.printf("%-29s %19.2f€", "MwSt:", warenkorb.produkteMwst()); System.out.println("--------------------------------------------------------"); System.out.printf("%-29s %19.2f€", "Versandkosten:", warenkorb.versandNetto()); System.out.printf("%-29s %19.2f€n", "MwSt Versand:", warenkorb.versandMwst()); System.out.println("--------------------------------------------------------"); System.out.printf("%-29s %19.2f€", "Gesamt Brutto:", warenkorb.gesamtpreis()); System.out.println("--------------------------------------------------------"); System.out.println("\n\n\nMöchten Sie bestellen, die Menge ändern oder zurück zum Hauptmenü?: "); String eingabe = sc.nextLine().toLowerCase(); switch (eingabe) { case "hauptmenü": return; case "menge": menge(); break; case "bestellen": bestellen(); break; default: System.out.println("\n\nUngültige Eingabe überprüfen Sie und Versuchen Sie es bitte erneut: \n\n"); showCart(); } } } public void bestellen() throws FileNotFoundException { System.out.print("Bitte geben Sie Ihren vollständigen Namen ein: "); String name = sc.nextLine(); System.out.print("\nBitte geben Sie Ihre Lieferadresse ein: "); String adresse = sc.nextLine(); Bestellung bestellung = new Bestellung(name, adresse, warenkorb); System.out.println("\n\n\n\n\n(\\ (\\"); System.out.println("Danke schön für Ihre Bestellung!"); System.out.println("----------------------------------------------------"); System.out.println("Name: \n" + bestellung.getName()); System.out.println("\nAdresse: \n" + bestellung.getAdresse()); System.out.println("\nArtikel:" ); int artpos = 1; for (WarenkorbPosition wp : bestellung.getWarenkorb().getPositionen()) { System.out.printf("Pos.: %2d. | %2d | %-23s | %.2f€\n", artpos++, wp.getMenge(), wp.getProdukt().getName(), wp.getProdukt().getPreis()); } System.out.printf("\nGesamtpreis: \n%.2f€\n", bestellung.getGesamtpreis()); System.out.println("----------------------------------------------------"); bestellung.warenkorbLeeren(); System.out.println("\n\nIhr Warenkorb wurde geleert! Sie können nun eine neue Bestellung beginnen " + "oder die Seite verlassen, dafür werden Sie zum hauptmenü zurück geführt."); } public void menge() throws FileNotFoundException { System.out.print("Welche Position möchten Sie bearbeiten?: "); int posNr = Integer.parseInt(sc.nextLine()) - 1; if (posNr < 0 || posNr >= warenkorb.getPositionen().size()) { System.out.println("Ungültige Eingabe, bitte überprüfen und Versuchen Sie es bitte erneut:"); showCart(); return; } WarenkorbPosition wp = warenkorb.getPositionen().get(posNr); Produkt p = wp.getProdukt(); int alt = wp.getMenge(); System.out.print("\nGeben Sie bitte die neue Menge an: "); int neu = Integer.parseInt(sc.nextLine()); int x = neu - alt; if (neu == 0) { increase(p, alt); warenkorb.clear(p); System.out.println("Dsa Produkt an dieser Position wurde aus Dem Warenkorb gelöscht gelöscht! "); } else if (x > 0 && p.getBestand() < x) { System.out.println("Das gewünschte produkt ist leider nicht in dieser Masse vorhanden"); } else { if (x > 0) decrease(p, x); else if (x < 0) increase(p, -x); warenkorb.mengeAendern(p, neu); System.out.println("Die Menge wurde geändert wurde zu: " + neu + "geändert. "); } showCart(); } public boolean decrease(Produkt p, int menge) { for (Produkt lagerProdukt : warehouse) { if (lagerProdukt.getId() == p.getId()) { if (lagerProdukt.bestand >= menge) { lagerProdukt.bestand -= menge; return true; } return false; } } return false; } public void increase(Produkt p, int menge) { for (Produkt lagerProdukt : warehouse) { if (lagerProdukt.getId() == p.getId()) { lagerProdukt.bestand += menge; return; } } } }