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 }