268 lines
11 KiB
Java
268 lines
11 KiB
Java
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<Produkt> warehouse;
|
|
|
|
public OnlineShop() throws FileNotFoundException {
|
|
warehouse = new ArrayList<Produkt>();
|
|
|
|
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;
|
|
}
|
|
}
|
|
}
|
|
}
|