from mongoengine import Document, ReferenceField, StringField, IntField, DateTimeField
from datetime import datetime

class MCQResult(Document):
    user_id = ReferenceField('User', required=True)
    output_file = StringField(null=True)
    quiz_id = StringField(null=True)  # Stored as string assuming reference to mcq/image
    total_questions = IntField(null=True)
    skipped_answers = IntField(null=True)
    correct_answers = IntField(null=True)
    wrong_answers = IntField(null=True)
    score = IntField(null=True)
    rank = IntField(null=True)
    mcq_data = StringField(null=True)  # Can store JSON as string
    is_shared_quiz = IntField(default=0)  # 0 = Private, 1 = Shared
    shared_by = ReferenceField('User', null=True)
    created_date = DateTimeField(default=datetime.utcnow)

    meta = {'collection': 'mcq_results'}

    def to_json(self):
        return {
            'id': str(self.id),
            'user_id': str(self.user_id.id) if self.user_id else None,
            'output_file': self.output_file,
            'quiz_id': self.quiz_id,
            'total_questions': self.total_questions,
            'skipped_answers': self.skipped_answers,
            'correct_answers': self.correct_answers,
            'wrong_answers': self.wrong_answers,
            'score': self.score,
            'rank': self.rank,
            'mcq_data': self.mcq_data,
            'is_shared_quiz': self.is_shared_quiz,
            'shared_by': str(self.shared_by.id) if self.shared_by else None,
            'created_date': self.created_date.strftime('%Y-%m-%d %H:%M:%S')
        }
