﻿using System;
using System.Collections;

namespace DinerMergerCafe
{
    public class Waitress
    {
        private readonly IMenu _pancakeHouseMenu;
        private readonly IMenu _dinerMenu;
	    private readonly IMenu _cafeMenu;

		// Меню кафе передается вместе с другими меню в конструкторе. Там оно сохраняется в переменной экземпляра
		public Waitress(IMenu pancakeHouseMenu, IMenu dinerMenu, IMenu cafeMenu)
        {
            _pancakeHouseMenu = pancakeHouseMenu;
            _dinerMenu = dinerMenu;
			_cafeMenu = cafeMenu;
        }

		public void PrintMenu()
        {
			// Чтобы вывести меню достаточно создать итератор и передать его PrintMenu()
			IEnumerator pancakeIterator = _pancakeHouseMenu.CreatEnumerator();
			IEnumerator dinerIterator = _dinerMenu.CreatEnumerator();
			IEnumerator cafeIterator = _cafeMenu.CreatEnumerator();
            Console.WriteLine("MENU\n----\nBREAKFAST");
            PrintMenu(pancakeIterator);
            Console.WriteLine("\nLUNCH");
            PrintMenu(dinerIterator);
			Console.WriteLine("\nDINNER");
			PrintMenu(cafeIterator);
        }
		
        private void PrintMenu(IEnumerator iterator)
        {
            while (iterator.MoveNext())
            {
                MenuItem menuItem = (MenuItem) iterator.Current;
                Console.Write(menuItem.Name + ", ");
                Console.Write(menuItem.Price + " -- ");
                Console.WriteLine(menuItem.Description);
            }
        }
    }
}
