public void checkCapacity(Booking b) throws MaxCapacityException {
		Calendar bookingDate = b.getDate();
		Category studentCat = b.getStudent().getCategory();
		int dHallMonitors = b.getDiningHall().getMonitors();
		double cntChld = 0;
		double cntPrmy = 0;

		if (studentCat == Category.INFANTIL)
			cntChld++;
		else
			cntPrmy++;

		List<Booking> bookingsThatDay = getBookingsByDate(bookingDate);
		Iterator<Booking> iter;
		iter = bookingsThatDay.iterator();
		while (iter.hasNext()) {
			Booking booking = iter.next();
			if (booking.getStudent().getCategory() == Category.INFANTIL)
				cntChld++;
			else
				cntPrmy++;
		}
		double chldM = Math.ceil(cntChld / MONITOR_CHLD_RATIO);
		double prmyM = Math.ceil(cntPrmy / MONITOR_PRMY_RATIO);

		double result = chldM + prmyM;

		if (result > dHallMonitors)
			throw new MaxCapacityException(b, "Booking");
	}