<?php

namespace App\Controllers;

use CodeIgniter\Controller;
use CodeIgniter\HTTP\CLIRequest;
use CodeIgniter\HTTP\IncomingRequest;
use CodeIgniter\HTTP\RequestInterface;
use CodeIgniter\HTTP\ResponseInterface;
use Psr\Log\LoggerInterface;

abstract class BaseController extends Controller
{
    protected $helpers = ['form', 'url', 'text'];

    public function initController(RequestInterface $request, ResponseInterface $response, LoggerInterface $logger)
    {
        parent::initController($request, $response, $logger);
    }

    /**
     * id الشركة "النشطة" حالياً بالجلسة.
     * - مدير شركة عادي: دايماً شركته هو.
     * - سوبر أدمن: الشركة اللي اختارها آخر مرة من "تبديل شركة" (Company Switcher).
     */
    protected function currentCompanyId(): ?int
    {
        $id = session()->get('active_company_id');
        return $id ? (int) $id : null;
    }

    protected function isSuperAdmin(): bool
    {
        return (bool) session()->get('is_super_admin');
    }

    /** قائمة العملات النشطة للشركة الحالية - تُستخدم في كل القوائم المنسدلة */
    protected function activeCurrencies(): array
    {
        return (new \App\Models\CurrencyModel())->activeList($this->currentCompanyId());
    }

    /**
     * تسجيل نشاط بسجل النظام - استدعيها بسطر واحد بعد أي عملية إضافة/تعديل/حذف مهمة:
     * $this->logActivity('create_invoice', 'أنشأ فاتورة رقم INV-2026-0001 للعميل محمد');
     */
    protected function logActivity(string $action, string $description = ''): void
    {
        (new \App\Models\ActivityLogModel())->record(
            $this->currentCompanyId(),
            session()->get('admin_user_id'),
            session()->get('admin_name'),
            $action,
            $description
        );
    }
}
