public ActionResult BuscaPorIngrediente(string[] ingredientes)
        {
            SessionInitialize();

            // Buscamos ingrediente a ingrediente
            IList<int> idsIngredientes = new List<int>();
            IngredienteCAD ingredienteCad = new IngredienteCAD(session);
            IngredienteEN ingredienteEn = null;

            foreach(string ing in ingredientes)
            {
                // Solo si existe, añado a la lista. Solo buscamos por ingredientes que existen
                ingredienteEn = ingredienteCad.GetPorNombre(ing.ToLower());
                if (ingredienteEn != null)
                    idsIngredientes.Add(ingredienteEn.Id);
            }

            IList<Receta> list = null;
            if (idsIngredientes.Count() > 0)
            {
                RecetaCAD cad = new RecetaCAD(session);
                RecetaCEN cen = new RecetaCEN(cad);
                IList<RecetaEN> listEn = cen.BuscarPorIngrediente(idsIngredientes);
                list = new AssemblerReceta().ConvertListENToModel(listEn);
            }
            else
            {
                list = new List<Receta>();
            }

            SessionClose();

            ViewData["ingredientes"] = ingredientes;

            return View(list);
        }
        // GET: Receta/Ver/5
        public ActionResult Ver(int id)
        {
            SessionInitialize();

            RecetaEN en = new RecetaCAD(session).ReadOIDDefault(id);
            Receta receta = new AssemblerReceta().ConvertENToModelUI(en);

            // Aunque parezca una tontería, con esto consigo la persistencia de los datos
            //foreach (LineaIngredienteEN lin in receta.LineasIngrediente)
            //{
            //    lin.Ingrediente.Id = lin.Ingrediente.Id;
            //    lin.Ingrediente.Nombre = lin.Ingrediente.Nombre;
            //}

            //foreach(ComentarioEN com in receta.Comentarios)
            //{
            //    com.Usuario.Id = com.Usuario.Id;
            //    com.Usuario.Nick = com.Usuario.Nick;
            //}

            if (User.Identity.IsAuthenticated)
            {
                UsuarioEN usuarioEn = new UsuarioCAD(session).GetByNick(User.Identity.Name);
                if (en.UsuariosFavorito.Contains(usuarioEn))
                    ViewData["esFavorito"] = "si";
                else
                    ViewData["esFavorito"] = "no";

                // Obtengo listas de la compra del usuario actual
                ViewData["ListasCompra"] = usuarioEn.ListasCompra.ToList();
            }

            SessionClose();

            return View(receta);
        }
        // GET: Receta/Ultimas
        public ActionResult Ultimas(string search)
        {
            SessionInitialize();

            RecetaCAD recCAD = new RecetaCAD(session);
            RecetaCEN cen = new RecetaCEN(recCAD);
            IList<RecetaEN> listRecetaEN;
            IEnumerable<Receta> list;

            if (!String.IsNullOrEmpty(search))
            {
                listRecetaEN = cen.Buscar(search);
                list = new AssemblerReceta().ConvertListENToModel(listRecetaEN).ToList();
            }
            else
            {
                listRecetaEN = cen.VerUltimasRecetas();
                list = new AssemblerReceta().ConvertListENToModel(listRecetaEN).ToList();
            }
            SessionClose();
            return View(list);
        }
        // GET: Receta
        public ActionResult Index()
        {
            SessionInitialize();
            IList<RecetaEN> listRecetaEn = new RecetaCAD(session).ReadAllDefault(0, -1);

            IEnumerable<Receta> recetas = new AssemblerReceta().ConvertListENToModel(listRecetaEn);
            SessionClose();

            return View(recetas);
        }