| from datetime import datetime | |
| import json | |
| class User: | |
| def __init__(self, user_data): | |
| self.user_id = user_data.get('user_id') | |
| self.username = user_data.get('username') | |
| self.email = user_data.get('email') | |
| self.password = user_data.get('password') | |
| self.role = user_data.get('role', 'student') | |
| self.created_at = user_data.get('created_at', datetime.now().isoformat()) | |
| self.last_login = user_data.get('last_login') | |
| self.profile = user_data.get('profile', {}) | |
| self.progress = user_data.get('progress', {}) | |
| self.is_active = user_data.get('is_active', True) | |
| def to_dict(self): | |
| """تبدیل به دیکشنری""" | |
| return { | |
| 'user_id': self.user_id, | |
| 'username': self.username, | |
| 'email': self.email, | |
| 'role': self.role, | |
| 'created_at': self.created_at, | |
| 'last_login': self.last_login, | |
| 'profile': self.profile, | |
| 'progress': self.progress, | |
| 'is_active': self.is_active | |
| } | |
| def update_progress(self, score=0, completed_lesson=None, current_lesson=None): | |
| """بهروزرسانی پیشرفت کاربر""" | |
| if score > 0: | |
| self.progress['total_score'] = self.progress.get('total_score', 0) + score | |
| if completed_lesson and completed_lesson not in self.progress.get('completed_lessons', []): | |
| if 'completed_lessons' not in self.progress: | |
| self.progress['completed_lessons'] = [] | |
| self.progress['completed_lessons'].append(completed_lesson) | |
| if current_lesson: | |
| self.progress['current_lesson'] = current_lesson | |
| class Lesson: | |
| def __init__(self, lesson_data): | |
| self.lesson_id = lesson_data.get('lesson_id') | |
| self.day = lesson_data.get('day') | |
| self.title = lesson_data.get('title') | |
| self.sections = lesson_data.get('sections', []) | |
| self.is_active = lesson_data.get('is_active', True) | |
| self.created_at = lesson_data.get('created_at', datetime.now().isoformat()) | |
| self.updated_at = lesson_data.get('updated_at', datetime.now().isoformat()) | |
| def to_dict(self): | |
| """تبدیل به دیکشنری""" | |
| return { | |
| 'lesson_id': self.lesson_id, | |
| 'day': self.day, | |
| 'title': self.title, | |
| 'sections': self.sections, | |
| 'is_active': self.is_active, | |
| 'created_at': self.created_at, | |
| 'updated_at': self.updated_at | |
| } | |
| class Quiz: | |
| def __init__(self, quiz_data): | |
| self.quiz_id = quiz_data.get('quiz_id') | |
| self.day = quiz_data.get('day') | |
| self.questions = quiz_data.get('questions', []) | |
| self.is_active = quiz_data.get('is_active', True) | |
| self.created_at = quiz_data.get('created_at', datetime.now().isoformat()) | |
| def to_dict(self): | |
| """تبدیل به دیکشنری""" | |
| return { | |
| 'quiz_id': self.quiz_id, | |
| 'day': self.day, | |
| 'questions': self.questions, | |
| 'is_active': self.is_active, | |
| 'created_at': self.created_at | |
| } | |
| class UserProgress: | |
| def __init__(self, progress_data): | |
| self.user_id = progress_data.get('user_id') | |
| self.lesson_scores = progress_data.get('lesson_scores', {}) | |
| self.quiz_scores = progress_data.get('quiz_scores', {}) | |
| self.exercise_scores = progress_data.get('exercise_scores', {}) | |
| self.total_score = progress_data.get('total_score', 0) | |
| self.last_activity = progress_data.get('last_activity', datetime.now().isoformat()) | |
| def to_dict(self): | |
| """تبدیل به دیکشنری""" | |
| return { | |
| 'user_id': self.user_id, | |
| 'lesson_scores': self.lesson_scores, | |
| 'quiz_scores': self.quiz_scores, | |
| 'exercise_scores': self.exercise_scores, | |
| 'total_score': self.total_score, | |
| 'last_activity': self.last_activity | |
| } |