private void updateStateAskPreference(List<Keyword> keywords, List<String> terms, List<String> approval) {
		if (keywords.isEmpty()) {
			//Didn't get any keyword for preference
			DialogManager.giveDialogManager().setInErrorState(true);
		}
		else {
			LocalDate date = LocalDate.now();
			int dateShift = 0; //0 for today, 1 for tomorrow, etc
			int result = getRequestedWeekDay(keywords, date) - date.getDayOfWeek();
			//Normalize the shift according to the days of the week.
			if (result < 0) { 
				dateShift = 7 + result; //7 days in the week
			} else {
				dateShift = result;
			}
			
			
			//Find a keyword that represents the category
			String category = "no_category";
			for (Keyword kw : keywords) {
				String possibleCategory = this.verifyCategories(kw.getWord());
				if (!possibleCategory.equals("no_category")) {
					category = possibleCategory;
				}
			}
			//If no category found, there is a problem.
			if (category.equals("no_category")) {
				DialogManager.giveDialogManager().setInErrorState(true);
				return;
			}
			//else
			this.setWishmealCategory(category);
			
			//Fetching canteen data, in order to search the category
			ArrayList<Canteen> canteens = new ArrayList<Canteen>();
			canteens.add(new Canteen(new CanteenData(CanteenNames.ADENAUERRING, dateShift)));
//			canteens.add(new Canteen(new CanteenData(CanteenNames.MOLTKE, dateShift)));
//			canteens.add(new Canteen(new CanteenData(CanteenNames.HOLZGARTEN, dateShift)));
//			canteens.add(new Canteen(new CanteenData(CanteenNames.GOTTESAUE, dateShift)));
//			canteens.add(new Canteen(new CanteenData(CanteenNames.TIEFENBRONNER, dateShift)));
//			canteens.add(new Canteen(new CanteenData(CanteenNames.ERZBERGER, dateShift)));
			
			//Find meals based on what the user said he wants, and on the canteen information
			ArrayList<OneMealData> matchedMeals = findMatchedMeals(canteens);
			
			if (matchedMeals.isEmpty()) {
				DialogState nextState = new DialogState();
				nextState.setCurrentState(CanteenRecom.CR_TELL_MEAL_NOT_EXIST);
				getCurrentDialogState().setCurrentState(nextState.getCurrentState());
				return;
			}
			
			//Now randomly choose one Meal (based on User History for later implementation?)
			setWishMeal(chooseMeal(matchedMeals));
			
			
			//Based on chosen wishMeal
			getCurrentDialogState().setCurrentState(selectNextState().getCurrentState());
		}
	}