package sklep.logika;

import java.math.BigDecimal;

import sklep.baza.Baza;
import sklep.exn.BladBazyDanych;
import sklep.exn.BrakTowaru;
import sklep.exn.NieznanyTowar;
import sklep.model.Magazyn;
import sklep.model.PotwierdzenieZakupu;
import sklep.model.Towar;

public class Sklep {
	private Katalog katalog;
	private Magazyny magazyny;
	
	Sklep(Katalog kat, Magazyny mag) {
		katalog = kat;
		magazyny = mag;
	}

	public String opisTowaru(String nazwa) {
		try {
			Towar towar = katalog.pobierzTowar(nazwa);
			return towar.getOpis();
		} catch(NieznanyTowar | BladBazyDanych e) {
			return e.getMessage();
		}
	}
	
	public String zakup(String nazwa, int ile) {
		try {
			Towar towar = katalog.pobierzTowar(nazwa);
			PotwierdzenieZakupu potwierdzenie = magazyny.realizacjaZakupu(towar, ile);
			return potwierdzenie.toString();
		} catch (NieznanyTowar | BrakTowaru | BladBazyDanych e) {
			return e.getMessage();
		}
	}

	public static Sklep sklepZBaza(Baza baza) {
		Katalog kat = new Katalog(baza);
		Magazyny magazynier = new Magazyny(baza);
		return new Sklep(kat, magazynier);
	}

	public static Sklep przykladowySklep() {
		try {
			Baza baza = Baza.nowaBaza();
			return Sklep.sklepZBaza(baza);
		} catch (BladBazyDanych e) {
			return null;
		}
	}
}
