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

namespace Controladora
{
    public class ControladoraFacturas : Singleton<ControladoraFacturas>
    {
        public string Añadir(Factura t)
        {
            if (t == null) return "La Factura es nula, fallo la carga";

            if (RepositorioFactura.Instance.ExistePorId(t.Id))
            {
                return $"La Factura con el ID {t.Id} ya existe";
            }

            // Verificar si el cliente está seleccionado
            if (t.Cliente == null || t.Cliente.Cuit == 0)
            {
                return "Debe seleccionar un cliente antes de agregar la factura";
            }

            try
            {
                bool resultado = RepositorioFactura.Instance.Add(t);
                return resultado ?
                    $"La Factura con el ID {t.Id} se cargó correctamente" :
                    $"Falló la carga de la Factura con el ID {t.Id}";
            }
            catch (Exception ex)
            {
                // Captura cualquier excepción no prevista
                return $"Ocurrió un error inesperado: {ex.Message}";
            }
        }

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

            return (RepositorioFactura.Instance.Del(t)) ?
                $"La Factura con el ID {t.Id} se eliminó correctamente" :
                $"Falló la eliminación de la Factura con el ID {t.Id}";
        }

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

            return (RepositorioFactura.Instance.Mod(t)) ?
                $"La Factura con el ID {t.Id} se modificó correctamente" :
                $"Falló la modificación de la Factura con el ID {t.Id}";
        }

        public ReadOnlyCollection<Factura> Listar()
        {
            return RepositorioFactura.Instance.Listar();
        }
    }
}
    