from flask_wtf import FlaskForm
from wtforms import StringField, TextAreaField, SelectField, FieldList, FormField, SubmitField
from wtforms.validators import DataRequired, Length
import json

class QuestionForm(FlaskForm):
    """Form for individual quiz questions"""
    question_text = TextAreaField('Question', validators=[DataRequired(), Length(min=1, max=1000)])
    question_type = SelectField('Type', choices=[('mcq', 'Multiple Choice'), ('qa', 'Question & Answer')],
                               validators=[DataRequired()])

    # For MCQ
    option1 = StringField('Option 1')
    option2 = StringField('Option 2')
    option3 = StringField('Option 3')
    option4 = StringField('Option 4')
    correct_option = SelectField('Correct Option', choices=[('1', 'Option 1'), ('2', 'Option 2'),
                                                           ('3', 'Option 3'), ('4', 'Option 4')])

    # For QA
    expected_answer = TextAreaField('Expected Answer', validators=[Length(max=2000)])

class QuizForm(FlaskForm):
    """Form for creating/editing quizzes"""
    title = StringField('Quiz Title', validators=[DataRequired(), Length(min=1, max=200)])
    description = TextAreaField('Description', validators=[Length(max=1000)])
    quiz_type = SelectField('Quiz Type', choices=[('mcq', 'Multiple Choice Questions'),
                                                 ('qa', 'Question & Answer')],
                           validators=[DataRequired()])

    # Dynamic questions - will be handled in the view
    submit = SubmitField('Save Quiz')