File size: 4,043 Bytes
2a84d05
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
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
        }