namespace SIGCM2.Domain.Entities;

public sealed class Rol
{
    public int Id { get; }
    public string Codigo { get; }
    public string Nombre { get; }
    public string? Descripcion { get; }
    public bool Activo { get; }
    public DateTime FechaCreacion { get; }
    public DateTime? FechaModificacion { get; }

    public Rol(
        int id,
        string codigo,
        string nombre,
        string? descripcion,
        bool activo,
        DateTime fechaCreacion,
        DateTime? fechaModificacion)
    {
        Id = id;
        Codigo = codigo;
        Nombre = nombre;
        Descripcion = descripcion;
        Activo = activo;
        FechaCreacion = fechaCreacion;
        FechaModificacion = fechaModificacion;
    }

    // Factory for creating a new Rol (Id=0 — DB assigns via IDENTITY; Activo=true; FechaCreacion set by DB default).
    public static Rol ForCreation(string codigo, string nombre, string? descripcion)
    {
        return new Rol(
            id: 0,
            codigo: codigo,
            nombre: nombre,
            descripcion: descripcion,
            activo: true,
            fechaCreacion: default,
            fechaModificacion: null
        );
    }
}
