from datetime import datetime
from . import db

class AuditoriaLog(db.Model):
    __tablename__ = 'auditoria'

    id = db.Column(db.Integer, primary_key=True)
    usuario_id = db.Column(db.Integer, db.ForeignKey('usuarios.id'), nullable=True)
    usuario_nome = db.Column(db.String(150), nullable=True)
    acao = db.Column(db.String(100), nullable=False)
    entidade = db.Column(db.String(100), nullable=False)
    entidade_id = db.Column(db.Integer, nullable=True)
    detalhes = db.Column(db.Text, nullable=True)
    ip = db.Column(db.String(45), nullable=True)
    data_hora = db.Column(db.DateTime, default=datetime.utcnow)

    usuario = db.relationship('Usuario', backref='logs_auditoria')

    @classmethod
    def registrar(cls, usuario_id, acao, entidade, entidade_id=None, detalhes=None, ip=None, usuario_nome=None):
        log = cls(
            usuario_id=usuario_id,
            usuario_nome=usuario_nome,
            acao=acao,
            entidade=entidade,
            entidade_id=entidade_id,
            detalhes=detalhes,
            ip=ip
        )
        db.session.add(log)
        db.session.commit()
        return log
