package lab03;

import java.util.Random;

public class Simulation {
	Kitchen kitchen;
	Random randGen;
	public int maxSandwichesPerDay;
	
	public Simulation() {
		kitchen = new Kitchen();
		randGen = new Random();
		maxSandwichesPerDay=6;
	}
	
	private void simDay() {
		int numHungry = randGen.nextInt(maxSandwichesPerDay);
		for(int i=0;i<numHungry;i++) kitchen.makeSandwich();
	}
	
	private void simWeek() {
		for(int day=0;day<7;day++) {
			simDay();
		}
		kitchen.orderSupplies();
	}
	
	private void simMonth() {
		for(int wk=0;wk<4;wk++) simWeek();
		if (kitchen.getCustomerSatisfaction()>0.9) 
			maxSandwichesPerDay += randGen.nextInt(8);
		else if (kitchen.getCustomerSatisfaction()>0.8)
			maxSandwichesPerDay += randGen.nextInt(4);
		else if (kitchen.getCustomerSatisfaction()<0.7)
			maxSandwichesPerDay -= randGen.nextInt(4);
		reportStats();
	}
	
	private void simYear() {
		for(int month=0;month<12;month++) simMonth();
	}
	
	private void reportStats() {
		System.out.println("End of Month Statistics...");
		System.out.println("  Average Sandwiches per Day:" + kitchen.getSandwichesServed()/28.0);
		System.out.println("  Current cash: " + kitchen.getBudget());
		System.out.println("  Customer Satisfaction: " + kitchen.getCustomerSatisfaction());
		kitchen.resetSandwichStats();
	}
	
	public static void main(String[] args) {
	  new Simulation().simYear();
	}

}
