"""
Table Schemas — HRM Module.

اسکیماهای جدول (لیست) برای ماژول مدیریت منابع انسانی.
"""

EMPLOYEE_TABLE = {
    "id": "hrm_employee_table",
    "title": "لیست کارکنان",
    "endpoint": "/api/hrm/v1/employees/",
    "columns": [
        {"key": "employee_code", "title": "کد پرسنلی", "sortable": True, "width": 100},
        {"key": "first_name", "title": "نام", "sortable": True},
        {"key": "last_name", "title": "نام خانوادگی", "sortable": True},
        {"key": "national_code", "title": "کد ملی", "width": 110},
        {"key": "employment_status", "title": "وضعیت", "sortable": True, "type": "badge", "badge_map": {
            "ACTIVE": {"label": "فعال", "color": "green"},
            "PROBATION": {"label": "آزمایشی", "color": "blue"},
            "SUSPENDED": {"label": "تعلیق", "color": "orange"},
            "TERMINATED": {"label": "خاتمه‌یافته", "color": "red"},
            "RESIGNED": {"label": "مستعفی", "color": "gray"},
            "RETIRED": {"label": "بازنشسته", "color": "purple"},
        }},
        {"key": "employment_type", "title": "نوع استخدام"},
        {"key": "hire_date", "title": "تاریخ استخدام", "type": "date_jalali", "sortable": True},
    ],
    "filters": [
        {"key": "employment_status", "label": "وضعیت", "type": "select"},
        {"key": "employment_type", "label": "نوع استخدام", "type": "select"},
        {"key": "org_unit_id", "label": "واحد سازمانی", "type": "lookup"},
        {"key": "hire_date__gte", "label": "استخدام از تاریخ", "type": "date"},
        {"key": "hire_date__lte", "label": "استخدام تا تاریخ", "type": "date"},
    ],
    "search_fields": ["employee_code", "first_name", "last_name", "national_code"],
    "default_sort": "-hire_date",
    "actions": {
        "row": [
            {"key": "view", "label": "مشاهده", "icon": "eye"},
            {"key": "edit", "label": "ویرایش", "icon": "edit", "permission": "hrm.employees.update"},
            {"key": "terminate", "label": "خاتمه همکاری", "icon": "user-x", "permission": "hrm.employees.manage", "confirm": True},
        ],
        "bulk": [
            {"key": "export", "label": "خروجی اکسل", "icon": "download"},
        ],
    },
}

POSITION_TABLE = {
    "id": "hrm_position_table",
    "title": "لیست پست‌های سازمانی",
    "endpoint": "/api/hrm/v1/positions/",
    "columns": [
        {"key": "code", "title": "کد پست", "sortable": True, "width": 100},
        {"key": "title", "title": "عنوان پست", "sortable": True},
        {"key": "job_title_name", "title": "عنوان شغلی"},
        {"key": "org_unit_name", "title": "واحد سازمانی"},
        {"key": "incumbent_name", "title": "متصدی"},
        {"key": "status", "title": "وضعیت", "type": "badge", "badge_map": {
            "ACTIVE": {"label": "فعال", "color": "green"},
            "FROZEN": {"label": "منجمد", "color": "blue"},
            "ABOLISHED": {"label": "حذف‌شده", "color": "red"},
        }},
        {"key": "is_vacant", "title": "خالی", "type": "boolean"},
    ],
    "filters": [
        {"key": "status", "label": "وضعیت", "type": "select"},
        {"key": "org_unit_id", "label": "واحد سازمانی", "type": "lookup"},
        {"key": "job_title", "label": "عنوان شغلی", "type": "lookup"},
    ],
    "search_fields": ["code", "title"],
    "default_sort": "code",
}

LEAVE_REQUEST_TABLE = {
    "id": "hrm_leave_request_table",
    "title": "درخواست‌های مرخصی",
    "endpoint": "/api/hrm/v1/leave-requests/",
    "columns": [
        {"key": "employee_name", "title": "کارمند"},
        {"key": "leave_type", "title": "نوع مرخصی"},
        {"key": "start_date", "title": "از تاریخ", "type": "date_jalali", "sortable": True},
        {"key": "end_date", "title": "تا تاریخ", "type": "date_jalali"},
        {"key": "days_count", "title": "تعداد روز", "width": 80},
        {"key": "status", "title": "وضعیت", "type": "badge", "badge_map": {
            "DRAFT": {"label": "پیش‌نویس", "color": "gray"},
            "PENDING": {"label": "در انتظار", "color": "orange"},
            "APPROVED": {"label": "تأیید شده", "color": "green"},
            "REJECTED": {"label": "رد شده", "color": "red"},
            "CANCELLED": {"label": "لغو شده", "color": "gray"},
        }},
    ],
    "filters": [
        {"key": "status", "label": "وضعیت", "type": "select"},
        {"key": "leave_type", "label": "نوع مرخصی", "type": "select"},
        {"key": "employee", "label": "کارمند", "type": "lookup"},
    ],
    "default_sort": "-start_date",
}

TIMESHEET_TABLE = {
    "id": "hrm_timesheet_table",
    "title": "تایم‌شیت‌ها",
    "endpoint": "/api/hrm/v1/timesheets/",
    "columns": [
        {"key": "employee_name", "title": "کارمند"},
        {"key": "period_start", "title": "شروع دوره", "type": "date_jalali", "sortable": True},
        {"key": "period_end", "title": "پایان دوره", "type": "date_jalali"},
        {"key": "total_regular_hours", "title": "ساعت عادی", "width": 90},
        {"key": "total_overtime_hours", "title": "اضافه‌کاری", "width": 90},
        {"key": "status", "title": "وضعیت", "type": "badge", "badge_map": {
            "DRAFT": {"label": "پیش‌نویس", "color": "gray"},
            "SUBMITTED": {"label": "ارسال‌شده", "color": "blue"},
            "APPROVED": {"label": "تأیید شده", "color": "green"},
            "REJECTED": {"label": "رد شده", "color": "red"},
            "LOCKED": {"label": "قفل‌شده", "color": "purple"},
        }},
    ],
    "filters": [
        {"key": "status", "label": "وضعیت", "type": "select"},
        {"key": "employee", "label": "کارمند", "type": "lookup"},
    ],
    "default_sort": "-period_start",
}

LEGAL_ENTITY_TABLE = {
    "id": "hrm_legal_entity_table",
    "title": "شخصیت‌های حقوقی",
    "endpoint": "/api/hrm/v1/legal-entities/",
    "columns": [
        {"key": "name", "title": "نام", "sortable": True},
        {"key": "entity_type", "title": "نوع", "type": "badge", "badge_map": {
            "COMPANY": {"label": "شرکت", "color": "blue"},
            "BRANCH": {"label": "شعبه", "color": "green"},
            "REPRESENTATIVE": {"label": "نمایندگی", "color": "orange"},
        }},
        {"key": "registration_number", "title": "شماره ثبت"},
        {"key": "national_id", "title": "شناسه ملی"},
        {"key": "is_active", "title": "فعال", "type": "boolean"},
    ],
    "search_fields": ["name", "registration_number", "national_id"],
    "default_sort": "name",
}

PAY_GRADE_TABLE = {
    "id": "hrm_pay_grade_table",
    "title": "گریدهای حقوقی",
    "endpoint": "/api/hrm/v1/pay-grades/",
    "columns": [
        {"key": "code", "title": "کد", "sortable": True, "width": 80},
        {"key": "name", "title": "عنوان", "sortable": True},
        {"key": "grade_type", "title": "نوع"},
        {"key": "min_amount", "title": "حداقل", "type": "currency"},
        {"key": "mid_amount", "title": "میانه", "type": "currency"},
        {"key": "max_amount", "title": "حداکثر", "type": "currency"},
        {"key": "is_active", "title": "فعال", "type": "boolean"},
    ],
    "default_sort": "code",
}
