from flask_wtf import FlaskForm
from wtforms import StringField, IntegerField, DateField
from wtforms.validators import Length, Optional


class AddProgramForm(FlaskForm):
    name = StringField(
        "Name",
        validators=[
            Length(
                min=1,
                max=30,
                message="Program must be between 1 and 30 characters long.",
            )
        ],
    )
    version = IntegerField("Version")
    start_date = DateField("Start Date", format="%Y-%m-%d")
    end_date = DateField(
        "End Date (Optional)", format="%Y-%m-%d", validators=[Optional()]
    )
    status = StringField(
        "Status",
        validators=[
            Length(
                min=1,
                max=30,
                message="Program status be between 1 and 30 characters long.",
            )
        ],
    )
    program_type = StringField(
        "Type",
        validators=[
            Length(
                min=1,
                max=30,
                message="Program type be between 1 and 30 characters long.",
            )
        ],
    )
    hindi_name = StringField(
        "Hindi Name (Optional)",
        validators=[
            Length(
                min=1,
                max=100,
                message="Hindi Name be between 1 and 100 characters long.",
            ),
            Optional(),
        ],
    )
    description = StringField(
        "Description (Optional)",
        validators=[
            Length(
                min=1,
                max=400,
                message="Hindi Name be between 1 and 100 characters long.",
            ),
            Optional(),
        ],
    )
