import logging
from .models import TeacherActivity, StudentActivity

logger = logging.getLogger(__name__)


def log_teacher_activity(teacher, action: str, description: str, metadata: dict = None):
    """
    Record a teacher action. Never raises — any failure is silently logged.

    Usage:
        from activities.utils import log_teacher_activity
        log_teacher_activity(
            teacher=teacher,
            action='CREATE_CLASS_GROUP',
            description=f'Created class group "{room.name}"',
            metadata={'room_id': str(room.id), 'class_id': class_id},
        )
    """
    try:
        TeacherActivity.objects.create(
            teacher=teacher,
            action=action,
            description=description,
            metadata=metadata or {},
        )
    except Exception as e:
        logger.error(f'[activities] log_teacher_activity failed: {e}')


def log_student_activity(student, action: str, description: str, metadata: dict = None):
    """
    Record a student action. Never raises — any failure is silently logged.
    """
    try:
        StudentActivity.objects.create(
            student=student,
            action=action,
            description=description,
            metadata=metadata or {},
        )
    except Exception as e:
        logger.error(f'[activities] log_student_activity failed: {e}')
