<?php
// ============================================================
// config/constants.php — ثوابت نظام قضيتي (Kadiyati)
// ============================================================

// ── Application ───────────────────────────────────────────────
define('APP_NAME',    'قضيتي');
define('APP_VERSION', '1.1.0');
define('BASE_URL',    'https://kadyati.dz.storismo.com/legal-cms'); // عدّل حسب الاستضافة
define('UPLOAD_PATH', __DIR__ . '/../public/assets/uploads/');
define('MAX_FILE_SIZE', 10 * 1024 * 1024); // 10 MB
define('ALLOWED_EXT',   ['pdf', 'jpg', 'jpeg', 'png', 'doc', 'docx']);

// ── Session ───────────────────────────────────────────────────
define('SESSION_LIFETIME', 7200);
define('SESSION_NAME',     'lcms_session');

// ── Roles ─────────────────────────────────────────────────────
define('ROLE_ADMIN',  'admin');
define('ROLE_CLERK',  'clerk');
define('ROLE_LAWYER', 'lawyer');

// ── مراحل القضية ──────────────────────────────────────────────
define('STAGES', [
    'ibtidai'  => 'أول درجة',
    'istinaf'  => 'الاستئناف',
    'naqd'     => 'الطعن بالنقض',
    'final'    => 'القرار النهائي',
]);

// ── أنواع القضايا ─────────────────────────────────────────────
define('CASE_TYPES', [
    'civil'          => 'مدني',
    'criminal'       => 'جنائي',
    'commercial'     => 'تجاري',
    'administrative' => 'إداري',
    'family'         => 'أسري / شؤون أسرة',
]);

// ── حالات القضية ──────────────────────────────────────────────
define('CASE_STATUS', [
    'open'     => ['label' => 'مفتوحة',     'class' => 'success'],
    'adjourned'=> ['label' => 'مؤجلة',      'class' => 'warning'],
    'closed'   => ['label' => 'مغلقة',      'class' => 'secondary'],
    'appealed' => ['label' => 'مطعون فيها', 'class' => 'info'],
    'archived' => ['label' => 'مؤرشفة',     'class' => 'dark'],
]);

// ── فروع القضاء (عادي / إداري) ────────────────────────────────
define('COURT_BRANCHES', [
    'ordinary'       => 'القضاء العادي',
    'administrative' => 'القضاء الإداري',
]);

// ── درجات المحاكم لكل فرع ─────────────────────────────────────
define('COURT_LEVELS', [
    // القضاء العادي
    'ibtidaiya'        => ['label' => 'محكمة ابتدائية',         'branch' => 'ordinary',       'order' => 1],
    'majlis'           => ['label' => 'مجلس قضائي',             'branch' => 'ordinary',       'order' => 2],
    'mahkama_3oulia'   => ['label' => 'المحكمة العليا',         'branch' => 'ordinary',       'order' => 3],
    // القضاء الإداري
    'idariya'          => ['label' => 'محكمة إدارية',           'branch' => 'administrative', 'order' => 1],
    'idariya_istinaf'  => ['label' => 'محكمة استئناف إدارية',   'branch' => 'administrative', 'order' => 2],
    'majlis_dawla'     => ['label' => 'مجلس الدولة',            'branch' => 'administrative', 'order' => 3],
]);

// ── أنواع الطعون ──────────────────────────────────────────────
// المعارضة: شرطها الحكم الغيابي (judgments.is_default = 1)
// الآجال أدناه قواعد عامة وفقاً لقانون الإجراءات المدنية والإدارية
// (قانون 08-09) والإجراءات الجزائية. قد تتغير حسب طبيعة النزاع.
define('RECOURSE_TYPES', [
    'opposition' => [
        'label' => 'معارضة',
        'class' => 'info',
        'deadline_days_civil' => 30,   // المادة 328 ق.إ.م.إ
        'deadline_days_penal' => 10,   // المادة 412 ق.إ.ج
        'against' => 'الأحكام الغيابية فقط',
        'requires_default_judgment' => true,
    ],
    'istinaf' => [
        'label' => 'استئناف',
        'class' => 'warning',
        'deadline_days_civil' => 30,
        'deadline_days_penal' => 10,
        'against' => 'الأحكام الابتدائية الحضورية',
        'requires_default_judgment' => false,
    ],
    'naqd' => [
        'label' => 'طعن بالنقض',
        'class' => 'danger',
        'deadline_days_civil' => 60,
        'deadline_days_penal' => 8,
        'against' => 'القرارات الاستئنافية والأحكام النهائية',
        'requires_default_judgment' => false,
    ],
    'tamas' => [
        'label' => 'التماس إعادة النظر',
        'class' => 'secondary',
        'deadline_days_civil' => 60,
        'deadline_days_penal' => 0,
        'against' => 'الأحكام الفاصلة في الموضوع الحائزة قوة الشيء المقضي به',
        'requires_default_judgment' => false,
    ],
    'i3tirad' => [
        'label' => 'اعتراض الغير الخارج عن الخصومة',
        'class' => 'dark',
        'deadline_days_civil' => 0,
        'deadline_days_penal' => 0,
        'against' => 'كل حكم أضرّ بحقوق من لم يكن طرفاً ولا ممثلاً',
        'requires_default_judgment' => false,
    ],
]);

// ── أنواع وثائق القضية ────────────────────────────────────────
define('CASE_DOC_TYPES', [
    'foundation'        => 'عريضة افتتاح الدعوى',
    'power_of_attorney' => 'وكالة',
    'evidence'          => 'دليل / إثبات',
    'expert_report'     => 'تقرير خبرة',
    'memorial'          => 'مذكرة',
    'witness_statement' => 'شهادة شاهد',
    'official_doc'      => 'وثيقة رسمية',
    'correspondence'    => 'مراسلة',
    'other'             => 'وثيقة أخرى',
]);

// ── الولايات الجزائرية ────────────────────────────────────────
define('WILAYAS', [
    '01' => 'أدرار',          '02' => 'الشلف',          '03' => 'الأغواط',
    '04' => 'أم البواقي',     '05' => 'باتنة',          '06' => 'بجاية',
    '07' => 'بسكرة',          '08' => 'بشار',           '09' => 'البليدة',
    '10' => 'البويرة',        '11' => 'تمنراست',        '12' => 'تبسة',
    '13' => 'تلمسان',         '14' => 'تيارت',          '15' => 'تيزي وزو',
    '16' => 'الجزائر',        '17' => 'الجلفة',         '18' => 'جيجل',
    '19' => 'سطيف',           '20' => 'سعيدة',          '21' => 'سكيكدة',
    '22' => 'سيدي بلعباس',    '23' => 'عنابة',          '24' => 'قالمة',
    '25' => 'قسنطينة',        '26' => 'المدية',         '27' => 'مستغانم',
    '28' => 'المسيلة',        '29' => 'معسكر',          '30' => 'ورقلة',
    '31' => 'وهران',          '32' => 'البيض',          '33' => 'إليزي',
    '34' => 'برج بوعريريج',   '35' => 'بومرداس',        '36' => 'الطارف',
    '37' => 'تندوف',          '38' => 'تيسمسيلت',       '39' => 'الوادي',
    '40' => 'خنشلة',          '41' => 'سوق أهراس',      '42' => 'تيبازة',
    '43' => 'ميلة',           '44' => 'عين الدفلى',     '45' => 'النعامة',
    '46' => 'عين تموشنت',     '47' => 'غرداية',         '48' => 'غليزان',
    '49' => 'تيميمون',        '50' => 'برج باجي مختار', '51' => 'أولاد جلال',
    '52' => 'بني عباس',       '53' => 'عين صالح',       '54' => 'عين قزام',
    '55' => 'تقرت',           '56' => 'جانت',           '57' => 'المغير',
    '58' => 'المنيعة',
]);

// ── ربط مرحلة القضية بدرجة المحكمة ────────────────────────────
define('STAGE_TO_LEVELS', [
    'ibtidai' => ['ibtidaiya', 'idariya'],
    'istinaf' => ['majlis',    'idariya_istinaf'],
    'naqd'    => ['mahkama_3oulia', 'majlis_dawla'],
    'final'   => ['ibtidaiya','majlis','mahkama_3oulia','idariya','idariya_istinaf','majlis_dawla'],
]);

// ── ربط نوع القضية بفرع القضاء ─────────────────────────────────
define('CASE_TYPE_BRANCH', [
    'civil'          => 'ordinary',
    'criminal'       => 'ordinary',
    'commercial'     => 'ordinary',
    'family'         => 'ordinary',
    'administrative' => 'administrative',
]);

// ── نظام الشكاوي ──────────────────────────────────────────────
define('COMPLAINT_CATEGORIES', [
    'technical'      => 'مشكلة تقنية في المنصة',
    'case_dispute'   => 'نزاع متعلق بقضية',
    'lawyer_conduct' => 'سلوك محامٍ',
    'clerk_conduct'  => 'سلوك أمين ضبط',
    'delay'          => 'تأخير في الإجراءات',
    'documents'      => 'مشكلة في الوثائق',
    'account'        => 'مشكلة في الحساب',
    'other'          => 'أخرى',
]);

define('COMPLAINT_STATUS', [
    'new'       => ['label' => 'جديدة',        'class' => 'info'],
    'in_review' => ['label' => 'قيد المعالجة', 'class' => 'warning'],
    'resolved'  => ['label' => 'تمت المعالجة', 'class' => 'success'],
    'rejected'  => ['label' => 'مرفوضة',       'class' => 'danger'],
    'closed'    => ['label' => 'مغلقة',        'class' => 'secondary'],
]);

define('COMPLAINT_PRIORITY', [
    'low'    => ['label' => 'منخفضة', 'class' => 'secondary'],
    'normal' => ['label' => 'عادية',  'class' => 'info'],
    'high'   => ['label' => 'مرتفعة', 'class' => 'warning'],
    'urgent' => ['label' => 'عاجلة',  'class' => 'danger'],
]);

// ── أنواع الإشعارات ───────────────────────────────────────────
define('NOTIF_TYPES', [
    'session_scheduled' => 'جلسة مجدولة',
    'session_adjourned' => 'جلسة مؤجلة',
    'judgment_issued'   => 'صدور حكم',
    'appeal_filed'      => 'طعن مقدم',
    'opposition_filed'  => 'معارضة مقدمة',
    'doc_approved'      => 'وثائق مقبولة',
    'doc_rejected'      => 'وثائق مرفوضة',
    'complaint_new'     => 'شكوى جديدة',
    'complaint_reply'   => 'رد على شكوى',
    'complaint_status'  => 'تحديث حالة شكوى',
    'profile_change_request'  => 'طلب تعديل ملف',
    'profile_change_reviewed' => 'مراجعة طلب التعديل',
]);
