# app/employer/forms.py

from flask_wtf import FlaskForm
from wtforms import StringField, EmailField, TelField, TextAreaField, SubmitField
from wtforms.validators import DataRequired, Email, Length, Optional, Regexp
from wtforms import StringField, TextAreaField, SelectField, DateField, BooleanField, SubmitField, FieldList, FormField
from wtforms.validators import DataRequired, Length, Optional, Email, Regexp, NumberRange
from datetime import date, datetime


class WorkPlanForm(FlaskForm):
    """فرم ایجاد برنامه کارگاهی"""
    plan_type = SelectField('نوع برنامه', choices=[
        ('daily', 'روزانه'),
        ('weekly', 'هفتگی'),
        ('monthly', 'ماهانه'),
        ('project_based', 'پروژه‌ای')
    ], validators=[DataRequired()])
    
    title = StringField('عنوان برنامه', validators=[
        DataRequired(),
        Length(min=3, max=200, message='عنوان باید بین 3 تا 200 کاراکتر باشد')
    ])
    
    content = TextAreaField('محتوا', validators=[
        DataRequired(),
        Length(min=10, max=5000, message='محتوا باید حداقل 10 کاراکتر باشد')
    ])
    
    start_date = DateField('تاریخ شروع', validators=[
        DataRequired()
    ], default=date.today)
    
    end_date = DateField('تاریخ پایان', validators=[
        Optional()
    ])
    
    send_to_manager = BooleanField('همچنین برای مدیر ارسال شود', default=True)
    
    submit = SubmitField('ذخیره و ارسال')

class ProfileForm(FlaskForm):
    """فرم ویرایش پروفایل کارفرما"""
    fullname = StringField('نام کامل', validators=[
        DataRequired(message='نام کامل الزامی است'),
        Length(min=3, max=100, message='نام کامل باید بین 3 تا 100 کاراکتر باشد')
    ])
    phone = TelField('شماره موبایل', validators=[
        DataRequired(message='شماره موبایل الزامی است'),
        Regexp(r'^09\d{9}$', message='شماره موبایل نامعتبر است')
    ])
    email = EmailField('ایمیل', validators=[
        Optional(),
        Email(message='ایمیل نامعتبر است')
    ])
    address = TextAreaField('آدرس', validators=[
        Optional(),
        Length(max=500, message='آدرس حداکثر 500 کاراکتر')
    ])
    submit = SubmitField('ذخیره تغییرات')