"""
Modèle Pronote - GMAO Collège
Intégration avec Pronote
"""
from datetime import datetime, timezone
from app_new.extensions import db


class PronoteSession(db.Model):
    """Session de connexion Pronote."""
    __tablename__ = "pronote_session"
    __table_args__ = {'extend_existing': True}
    
    id = db.Column(db.Integer, primary_key=True)
    session_token = db.Column(db.Text, nullable=True)
    device_uuid = db.Column(db.String(100), nullable=True)
    account_pin = db.Column(db.String(10), nullable=True)  # PIN du compte
    session_url = db.Column(db.Text, nullable=True)
    username = db.Column(db.String(100), nullable=True)
    last_connection = db.Column(db.DateTime, nullable=True)
    created_at = db.Column(db.DateTime, default=lambda: datetime.now(timezone.utc))
    updated_at = db.Column(db.DateTime, default=lambda: datetime.now(timezone.utc), onupdate=lambda: datetime.now(timezone.utc))
    
    @property
    def is_active(self):
        """Une session est active si elle a un token."""
        return self.session_token is not None
    
    @staticmethod
    def get():
        """Récupère la session active (la plus récente)."""
        return PronoteSession.query.order_by(PronoteSession.id.desc()).first()
    
    @staticmethod
    def clear():
        """Supprime toutes les sessions."""
        PronoteSession.query.delete()
        db.session.commit()
    
    def __repr__(self):
        return f"<PronoteSession {self.id}>"


# Note: Le client Pronote (pronote_client.py) reste un service externe
# Pas besoin de modèle supplémentaire pour l'instant