"""
Form Schemas — HRM Module.

اسکیماهای فرم برای ماژول مدیریت منابع انسانی.
"""

EMPLOYEE_FORM = {
    "id": "hrm_employee_form",
    "title": "فرم اطلاعات کارمند",
    "sections": [
        {
            "id": "personal",
            "title": "اطلاعات شخصی",
            "fields": [
                {"name": "employee_code", "label": "کد پرسنلی", "type": "text", "required": True, "max_length": 20},
                {"name": "first_name", "label": "نام", "type": "text", "required": True, "max_length": 100},
                {"name": "last_name", "label": "نام خانوادگی", "type": "text", "required": True, "max_length": 100},
                {"name": "first_name_en", "label": "نام (انگلیسی)", "type": "text", "max_length": 100},
                {"name": "last_name_en", "label": "نام خانوادگی (انگلیسی)", "type": "text", "max_length": 100},
                {"name": "national_code", "label": "کد ملی", "type": "text", "required": True, "max_length": 10, "pattern": r"^\d{10}$"},
                {"name": "birth_date", "label": "تاریخ تولد", "type": "date_jalali"},
                {"name": "gender", "label": "جنسیت", "type": "select", "options": [
                    {"value": "MALE", "label": "مرد"},
                    {"value": "FEMALE", "label": "زن"},
                    {"value": "OTHER", "label": "سایر"},
                ]},
                {"name": "marital_status", "label": "وضعیت تأهل", "type": "select", "options": [
                    {"value": "SINGLE", "label": "مجرد"},
                    {"value": "MARRIED", "label": "متأهل"},
                    {"value": "DIVORCED", "label": "مطلقه"},
                    {"value": "WIDOWED", "label": "فوت همسر"},
                ]},
                {"name": "military_status", "label": "وضعیت نظام وظیفه", "type": "select", "options": [
                    {"value": "COMPLETED", "label": "پایان خدمت"},
                    {"value": "EXEMPT", "label": "معاف"},
                    {"value": "SERVING", "label": "در حال خدمت"},
                    {"value": "NOT_APPLICABLE", "label": "شامل نمی‌شود"},
                ]},
            ],
        },
        {
            "id": "employment",
            "title": "اطلاعات شغلی",
            "fields": [
                {"name": "hire_date", "label": "تاریخ استخدام", "type": "date_jalali", "required": True},
                {"name": "employment_type", "label": "نوع استخدام", "type": "select", "options": [
                    {"value": "PERMANENT", "label": "رسمی"},
                    {"value": "CONTRACT", "label": "قراردادی"},
                    {"value": "TEMPORARY", "label": "موقت"},
                    {"value": "INTERN", "label": "کارآموز"},
                    {"value": "PART_TIME", "label": "پاره‌وقت"},
                    {"value": "FREELANCE", "label": "پیمانکاری"},
                ]},
                {"name": "org_unit_id", "label": "واحد سازمانی", "type": "lookup", "lookup_endpoint": "/api/platform/org-units/"},
                {"name": "primary_position_id", "label": "پست سازمانی", "type": "lookup", "lookup_endpoint": "/api/hrm/v1/positions/"},
                {"name": "manager_id", "label": "مدیر مستقیم", "type": "lookup", "lookup_endpoint": "/api/hrm/v1/employees/"},
            ],
        },
        {
            "id": "contact",
            "title": "اطلاعات تماس",
            "fields": [
                {"name": "email", "label": "ایمیل", "type": "email"},
                {"name": "mobile", "label": "تلفن همراه", "type": "tel", "pattern": r"^09\d{9}$"},
                {"name": "phone", "label": "تلفن ثابت", "type": "tel"},
                {"name": "address", "label": "آدرس", "type": "textarea"},
            ],
        },
    ],
}

LEAVE_REQUEST_FORM = {
    "id": "hrm_leave_request_form",
    "title": "فرم درخواست مرخصی",
    "sections": [
        {
            "id": "main",
            "title": "اطلاعات مرخصی",
            "fields": [
                {"name": "leave_type", "label": "نوع مرخصی", "type": "select", "required": True, "options": [
                    {"value": "ANNUAL", "label": "استحقاقی"},
                    {"value": "SICK", "label": "استعلاجی"},
                    {"value": "MARRIAGE", "label": "ازدواج"},
                    {"value": "BEREAVEMENT", "label": "فوت بستگان"},
                    {"value": "MATERNITY", "label": "زایمان"},
                    {"value": "PATERNITY", "label": "پدری"},
                    {"value": "PILGRIMAGE", "label": "حج"},
                    {"value": "STUDY", "label": "تحصیلی"},
                    {"value": "UNPAID", "label": "بدون حقوق"},
                    {"value": "COMPENSATORY", "label": "جبرانی"},
                    {"value": "HOURLY", "label": "ساعتی"},
                ]},
                {"name": "start_date", "label": "تاریخ شروع", "type": "date_jalali", "required": True},
                {"name": "end_date", "label": "تاریخ پایان", "type": "date_jalali", "required": True},
                {"name": "days_count", "label": "تعداد روز", "type": "number", "required": True, "min": 0.5, "step": 0.5},
                {"name": "reason", "label": "دلیل مرخصی", "type": "textarea"},
                {"name": "substitute_id", "label": "جانشین", "type": "lookup", "lookup_endpoint": "/api/hrm/v1/employees/"},
                {"name": "attachment", "label": "پیوست", "type": "file", "accept": ".pdf,.jpg,.png"},
            ],
        },
    ],
}

POSITION_FORM = {
    "id": "hrm_position_form",
    "title": "فرم پست سازمانی",
    "sections": [
        {
            "id": "main",
            "title": "اطلاعات پست",
            "fields": [
                {"name": "code", "label": "کد پست", "type": "text", "required": True, "max_length": 20},
                {"name": "title", "label": "عنوان پست", "type": "text", "required": True, "max_length": 200},
                {"name": "job_title_id", "label": "عنوان شغلی", "type": "lookup", "lookup_endpoint": "/api/hrm/v1/job-titles/", "required": True},
                {"name": "org_unit_id", "label": "واحد سازمانی", "type": "lookup", "lookup_endpoint": "/api/platform/org-units/", "required": True},
                {"name": "location_id", "label": "مکان", "type": "lookup", "lookup_endpoint": "/api/hrm/v1/locations/"},
                {"name": "reports_to_id", "label": "پست بالادستی", "type": "lookup", "lookup_endpoint": "/api/hrm/v1/positions/"},
                {"name": "grade", "label": "رتبه", "type": "number"},
                {"name": "headcount", "label": "ظرفیت", "type": "number", "default": 1, "min": 1},
                {"name": "is_critical", "label": "پست کلیدی", "type": "checkbox"},
                {"name": "description", "label": "شرح وظایف", "type": "richtext"},
                {"name": "requirements", "label": "شرایط احراز", "type": "richtext"},
            ],
        },
    ],
}

LEGAL_ENTITY_FORM = {
    "id": "hrm_legal_entity_form",
    "title": "فرم شخصیت حقوقی",
    "sections": [
        {
            "id": "main",
            "title": "اطلاعات شخصیت حقوقی",
            "fields": [
                {"name": "name", "label": "نام", "type": "text", "required": True, "max_length": 200},
                {"name": "name_en", "label": "نام (انگلیسی)", "type": "text", "max_length": 200},
                {"name": "entity_type", "label": "نوع", "type": "select", "required": True, "options": [
                    {"value": "COMPANY", "label": "شرکت"},
                    {"value": "BRANCH", "label": "شعبه"},
                    {"value": "REPRESENTATIVE", "label": "نمایندگی"},
                ]},
                {"name": "registration_number", "label": "شماره ثبت", "type": "text", "max_length": 50},
                {"name": "national_id", "label": "شناسه ملی", "type": "text", "max_length": 20},
                {"name": "economic_code", "label": "کد اقتصادی", "type": "text", "max_length": 20},
                {"name": "phone", "label": "تلفن", "type": "tel"},
                {"name": "address", "label": "آدرس", "type": "textarea"},
            ],
        },
    ],
}
