<?php
/**
 * CSM Session REST API - مبسط
 * نقاط النهاية مبسطة لإدارة الجلسات المؤقتة
 */

if (!defined('ABSPATH')) {
    exit;
}

class CSM_Session_Endpoints {
    
    private $session_manager;
    private $auth_manager;
    
    public function __construct() {
        $this->session_manager = new CSM_Session_Manager();
        $this->auth_manager = new CSM_Auth_Manager();
        
        add_action('rest_api_init', array($this, 'register_routes'));
    }
    
    /**
     * تسجيل نقاط النهاية
     */
    public function register_routes() {
        $namespace = 'csm/v1';
        
        // إنشاء جلسة مؤقتة
        register_rest_route($namespace, '/sessions/create', [
            'methods' => 'POST',
            'callback' => array($this, 'create_session'),
            // 'permission_callback' => array($this, 'check_auth'),
            'permission_callback' => '__return_true',
            'args' => [
                'user_id' => [
                    'required' => false,
                    'type' => 'integer',
                    'default' => 0,
                    'description' => 'معرف المستخدم (0 للمدير الافتراضي)'
                ],
                'expire_minutes' => [
                    'required' => false,
                    'type' => 'integer',
                    'default' => 2,
                    'description' => 'مدة انتهاء الجلسة بالدقائق (1-30)',
                    'validate_callback' => function($param) {
                        return is_numeric($param) && $param >= 1 && $param <= 30;
                    }
                ]
            ]
        ]);

        // تنظيف الجلسات
        register_rest_route($namespace, '/sessions/cleanup', [
            'methods' => 'POST',
            'callback' => array($this, 'cleanup_sessions'),
            'permission_callback' => '__return_true',
            // 'permission_callback' => array($this, 'check_auth')
        ]);
    }
    
    /**
     * إنشاء جلسة مؤقتة
     */
    public function create_session($request) {
        $user_id        = $request->get_param('user_id') ?: 0;
        $expire_minutes = $request->get_param('expire_minutes') ?: 2;

        if (is_wp_error($check =  $this->check_auth_inline($request) )) {
            return $check;
        }
        
        $result = $this->session_manager->create_temp_session($user_id, $expire_minutes);
        
        if (is_wp_error($result)) {
            return rest_ensure_response([
                'success' => false,
                'error' => $result->get_error_message()
            ]);
        }
        
        return rest_ensure_response($result);
    }

    
    /**
     * تنظيف الجلسات المنتهية
     */
    public function cleanup_sessions($request) {

        if (is_wp_error($check =  $this->check_auth_inline($request) )) {
            return $check;
        }

        $deleted_count = $this->session_manager->cleanup_all_sessions();
        
        return rest_ensure_response([
            'success' => true,
            'message' => "تم حذف {$deleted_count} جلسة منتهية الصلاحية",
            'deleted_count' => $deleted_count
        ]);
    }
    
    public function check_auth_inline($request) {
        $result = $this->auth_manager->validate_request($request);

        if (is_wp_error($result)) {
            
            return $result;
        }
    }
}

// تهيئة نقاط النهاية
new CSM_Session_Endpoints();