package Hashmap.Autovermietung;

import java.util.ArrayList;
import java.util.HashMap;

public class Autovermietung {
//	private ArrayList<Pkw> autos = new ArrayList<>();
	HashMap<String, Pkw> autos = new HashMap<>();

	public int getAnzahlPkws() {
		return autos.size();
	}

	public void pkwAnlegen(String kennzeichen, String typ, int kmStand) {
		Pkw p = new Pkw(kennzeichen, typ, kmStand);
		autos.put(kennzeichen, p);
	}

	public String[] getPkwListe() {
		String[] liste = new String[autos.size()];

		for (int i = 0; i < autos.size(); i++)
			liste[i] = autos.get(i).toString();

		return liste;
	}
	
	public void verleiheFahrzeug(String kennzeichen) {
		Pkw zuVerleihen = suchePkwNachKennzeichen(kennzeichen);
		zuVerleihen.verleihen(new Kunde("Müller"));
		
		// Hier könnten noch weitere Dinge erledigt werden, bspw. einen Counter für Vermietungen hochzählen o.ä.
	}

	// Hier wird zu Demonstrationszwecken das Geheimnisprinzip verletzt
	public ArrayList<Pkw> suchePkwsNachTyp(String typ) {
		ArrayList<Pkw> treffer = new ArrayList<>();
		
		for (Pkw p : autos.values())
			if (typ.equals(p.getType()))
				treffer.add(p);
			
		return treffer;
	}
	
	private Pkw suchePkwNachKennzeichen(String kennzeichen) {
		return autos.get(kennzeichen);
		
		//		for (Pkw p : autos.values())
//			if (kennzeichen.equals(p.getKennzeichen()))
//				return p;
//		
//		return null;
	}

	public boolean pkwZurücknehmen(String kennzeichen, int gefahreneKm) {
		Pkw zurück = suchePkwNachKennzeichen(kennzeichen);
		
		if (zurück == null)
			return false;
		
		zurück.rückgabe(gefahreneKm);
		// IRL würde man vermutlich den Km-Stand abfragen, aber so haben wir eine Kleinigkeit zu rechnen.
		
		return true;
	}
}
