package OnlineShop.UI;
import java.io.FileNotFoundException;
import java.util.Scanner;
import OnlineShop.domain.*;
import OnlineShop.domain.ExceptionsKlassen.*;


public class TUI {

	private Kaufhalle kaufhalle;
	private Scanner eingabe = new Scanner(System.in);

	private String optionAuswahl;

	public TUI() throws FileNotFoundException, ProduktNichtGefundenException {
		this.kaufhalle = new Kaufhalle();
		startProgramm();
	}

	private void startProgramm() throws FileNotFoundException, ProduktNichtGefundenException {
		System.out.println("<< Willkommen in meinem Online Shop >>");
		System.out.println();
		if (kaufhalle.produkteLaden()) {
			System.out.println("Meine aktuelle Produkte: ");

			for (String p : kaufhalle.zeigeProdukte())
				System.out.println(p);
		}
		System.out.println();
		shwoOptions();
	}

	private void shwoOptions() throws ProduktNichtGefundenException {
		boolean programmAktive = true;
		while (programmAktive) {
			System.out.println("Wählen Sie bitte ein Option aus: ");
			System.out.println("1. Produkte auswählen");
			System.out.println("2. Alle Produkte im Warenkorb anzeigen");
			System.out.println("3. Einkauf Beenden!");
			System.out.print("> ");
			optionAuswahl = eingabe.nextLine();

			switch (optionAuswahl) {
			case "1":
				ProdukteAuwählenUI();
				break;

			case "2":
				System.out.println("Anzahl Produkte: " + kaufhalle.getAnzahlDerAusgewählteProdukte());
				try {
					for (String p : kaufhalle.zeigeAlleProdukteImWarenkorb())
						System.out.println(p);

					System.out.println("Möchten Sie die ausgewählte Produkte bestellen Ja/Nein");
					System.out.print(">");
					String bestellung = eingabe.nextLine();
					if (bestellung.equalsIgnoreCase("ja")) {
						System.out.println("Geben Sie bitte Ihren Name ein:");
						System.out.print(">");
						String name = eingabe.nextLine();
						System.out.println("Geben Sie bitte Ihren Anschrift ein:");
						System.out.print(">");
						String anschrift = eingabe.nextLine();
						try {
							kaufhalle.getKundenDaten(name, anschrift);
							System.out.println(kaufhalle.sendBestellung());
							System.out.println("Betrag bitte eingeben: ");
							System.out.print(">");
							double betrag = eingabe.nextDouble();
							if (kaufhalle.getBetrag(betrag))
								kaufhalle.speichereBestellung();
							

						} catch (LeereEingabeException e) {
							System.out.println(e.getMessage());
						}
					} else
						shwoOptions();

				} catch (KeineProdukteImWarenkorb e) {
					System.out.println(e.getMessage());
				}
				break;

			}
		}

	}

	private void ProdukteAuwählenUI() throws ProduktNichtGefundenException {
		boolean einkaufAktive = true;
		String weiterEinkaufen;
		while (einkaufAktive) {
			System.out.println("Wählen Sie bitte ein Option aus: ");
			System.out.println("1. Prpdukte auswählen und zu Ihrem Warenkorb senden");
			System.out.println("2. Prpdukte aus dem Warenkorb löschen");
			System.out.println("3. Zurück zum Hauptmenu");
			System.out.print("> ");
			optionAuswahl = eingabe.nextLine();
			switch (optionAuswahl) {
			case "1":
				while (true) {
					System.out.print("Name der Produkt: > ");
					String produktName = eingabe.nextLine();
					try {
						kaufhalle.addProduktZuWarenkorb(produktName);
					} catch (ProduktNichtGefundenException e) {
						System.out.println(e.getMessage());
					}
					System.out.println(
							"Anzahl Ihre ausgewählte Produkte: " + kaufhalle.getAnzahlDerAusgewählteProdukte());
					System.out.println("Weitere Produkte auswählen Ja/Nein");
					System.out.print(">");
					weiterEinkaufen = eingabe.nextLine();
					if (weiterEinkaufen.equalsIgnoreCase("ja"))
						continue;
					else
						break;
				}
				break;

			case "2":
				while (true) {
					System.out.print("Name der Produkt: > ");
					String produktName = eingabe.nextLine();
					if (kaufhalle.loescheProduktausWarenkorb(produktName) == true) {
						System.out.println("Produkt erfolgreich gelöscht");
						System.out.println(
								"Anzahl Ihre ausgewählte Produkte: " + kaufhalle.getAnzahlDerAusgewählteProdukte());
					} else
						System.out.println("Produkt ist nicht in Ihrem Warenkorb");

					System.out.println("Weiter Produkte aus dem Wrenkorb löschen Ja/Nein");
					System.out.print(">");
					String weitereProdukteLoeschen = eingabe.nextLine();
					if (weitereProdukteLoeschen.equalsIgnoreCase("ja"))
						continue;
					else
						break;
				}
				break;

			case "3":
				System.out.println("Anzahl Ihre ausgewählte Produkte: " + kaufhalle.getAnzahlDerAusgewählteProdukte());
				shwoOptions();
				break;

			}
		}
		System.out.println("Anzahl Ihre ausgewählte Produkte: " + kaufhalle.getAnzahlDerAusgewählteProdukte());
	}
}
