Online-Shop/OnlineShop.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;
}
}
}
}