using System.Collections.ObjectModel;
using Entidades;
using Modelo;

namespace Controladora
{
    public class ControladoraCategorias : Singleton<ControladoraCategorias>
    {
        // Método para verificar si una categoría con un ID ya existe
        private bool CategoriaExiste(int id)
        {
            var categorias = RepositorioCategoria.Instance.Listar();
            return categorias.Any(c => c.Id == id);
        }

        public string Añadir(Categoria t)
        {
            if (t == null) return "La categoría es nula, fallo la carga";

            if (CategoriaExiste(t.Id))
            {
                return $"Ya existe una categoría con el ID {t.Id}";
            }

            return (RepositorioCategoria.Instance.Add(t)) ?
                $"La categoría {t.Descripcion} se cargó correctamente" :
                $"Falló la carga de la categoría {t.Descripcion}";
        }

        public string Eliminar(Categoria t)
        {
            if (t == null) return "La categoría es nula, fallo la carga";

            return (RepositorioCategoria.Instance.Del(t)) ?
                $"La categoría {t.Descripcion} se eliminó correctamente" :
                $"Falló la eliminación de la categoría {t.Descripcion}";
        }

        public string Modificar(Categoria t)
        {
            if (t == null) return "La categoría es nula, fallo la carga";

            if (!CategoriaExiste(t.Id))
            {
                return $"No se encontró una categoría con el ID {t.Id}";
            }

            return (RepositorioCategoria.Instance.Mod(t)) ?
                $"La categoría {t.Descripcion} se modificó correctamente" :
                $"Falló la modificación de la categoría {t.Descripcion}";
        }

        public ReadOnlyCollection<Categoria> Listar()
        {
            return RepositorioCategoria.Instance.Listar();
        }
    }
}
