Manual Técnico Carpeta Common
Documentación Técnica de QuizAttempt.php
Español
Descripción General
El archivo QuizAttempt.php es una clase de modelo que representa intentos de cuestionarios en el sistema, extendiendo la clase ActiveRecord de Yii2. Maneja el seguimiento de los intentos de los usuarios para completar cuestionarios, incluyendo tiempo, puntuación e información de estado.
Propósito
Esta clase sirve como modelo central para gestionar intentos de cuestionarios en el sistema, proporcionando funcionalidad para rastrear cuándo los usuarios inician y finalizan cuestionarios, sus puntuaciones y si aprobaron el cuestionario.
Estructura de Directorios
- Ubicación:
common/models/QuizAttempt.php - Espacio de nombres:
common\models - Clase Padre:
\yii\db\ActiveRecord
Componentes Principales
Definición de Clase
class QuizAttempt extends \yii\db\ActiveRecordPropiedades
id: Clave primariaquiz_id: Clave foránea al modelo Quizuser_id: Clave foránea al modelo Userstarted_at: Marca de tiempo cuando comenzó el intentofinished_at: Marca de tiempo cuando finalizó el intento (nullable)status: Estado del intentoscore: Puntuación del usuario (nullable)is_passed: Booleano que indica si el intento fue aprobado (nullable)
Métodos Principales
-
tableName()
- Propósito: Define el nombre de la tabla de base de datos
- Retorna: String ‘quiz_attempt’
-
rules()
- Propósito: Define reglas de validación
- Valida:
- Campos requeridos: quiz_id, user_id, started_at
- Campos enteros: quiz_id, user_id, started_at, finished_at, status, score, is_passed
- Validación de existencia para las claves foráneas quiz_id y user_id
-
Relaciones
getQuiz(): Relación belongs to con el modelo QuizgetQuizGrades(): Relación has many con el modelo QuizGradegetUser(): Relación belongs to con el modelo User
Ejemplo de Uso
$attempt = new QuizAttempt();$attempt->quiz_id = 1;$attempt->user_id = 1;$attempt->started_at = time();$attempt->status = 1;$attempt->save();
// Más tarde cuando se completa el cuestionario$attempt->finished_at = time();$attempt->score = 85;$attempt->is_passed = true;$attempt->save();QuizAttempt.php - Technical Documentation
English
Overview
The QuizAttempt.php file is a model class that represents quiz attempts in the system, extending Yii2’s ActiveRecord class. It handles the tracking of user attempts to complete quizzes, including timing, scoring, and status information.
Purpose
This class serves as the core model for managing quiz attempts in the system, providing functionality for tracking when users start and finish quizzes, their scores, and whether they passed the quiz.
Directory Structure
- Location:
common/models/QuizAttempt.php - Namespace:
common\models - Parent Class:
\yii\db\ActiveRecord
Key Components
Class Definition
class QuizAttempt extends \yii\db\ActiveRecordProperties
id: Primary keyquiz_id: Foreign key to Quiz modeluser_id: Foreign key to User modelstarted_at: Timestamp when the attempt startedfinished_at: Timestamp when the attempt finished (nullable)status: Attempt statusscore: User’s score (nullable)is_passed: Boolean indicating if the attempt passed (nullable)
Main Methods
-
tableName()
- Purpose: Defines the database table name
- Returns: String ‘quiz_attempt’
-
rules()
- Purpose: Defines validation rules
- Validates:
- Required fields: quiz_id, user_id, started_at
- Integer fields: quiz_id, user_id, started_at, finished_at, status, score, is_passed
- Existence validation for quiz_id and user_id foreign keys
-
Relationships
getQuiz(): Belongs to relationship with Quiz modelgetQuizGrades(): Has many relationship with QuizGrade modelgetUser(): Belongs to relationship with User model
Usage Example
$attempt = new QuizAttempt();$attempt->quiz_id = 1;$attempt->user_id = 1;$attempt->started_at = time();$attempt->status = 1;$attempt->save();
// Later when quiz is completed$attempt->finished_at = time();$attempt->score = 85;$attempt->is_passed = true;$attempt->save();Additional Notes / Notas Adicionales
Technical Details / Detalles Técnicos
- Implements Yii2’s ActiveRecord pattern
- Manages quiz attempt timing and scoring
- Tracks user progress through quizzes
- Supports multiple attempts per quiz
- Implements comprehensive validation rules
Best Practices / Mejores Prácticas
- Always validate attempt data before saving
- Set appropriate status values for different attempt states
- Maintain proper relationships with quiz and user models
- Consider performance implications for large numbers of attempts
- Use appropriate status values for attempt state management
Related Components / Componentes Relacionados
- Quiz Model
- QuizGrade Model
- User Model
- QuizController
- QuizAttemptQuery