<?php

namespace App\Models;

use CodeIgniter\Model;

class UserModel extends Model
{
    protected $table = 'users';
    protected $primaryKey = 'id';
    protected $useTimestamps = true;
    protected $allowedFields = ['company_id', 'is_super_admin', 'preferred_locale', 'name', 'email', 'password', 'expires_at'];
    protected $hidden = ['password'];

    public function isExpired(array $user): bool
    {
        if (empty($user['expires_at'])) return false; // بدون تاريخ انتهاء = دائم
        return strtotime($user['expires_at']) < strtotime(date('Y-m-d'));
    }

    public function daysUntilExpiry(array $user): ?int
    {
        if (empty($user['expires_at'])) return null;
        return (int) ceil((strtotime($user['expires_at']) - strtotime(date('Y-m-d'))) / 86400);
    }

    /** تجديد الحساب: يمدد من (الأبعد بين تاريخ الانتهاء الحالي أو اليوم) بعدد الأشهر المطلوبة */
    public function renew(int $userId, int $months): bool
    {
        $user = $this->find($userId);
        if (! $user) return false;

        $base = (! empty($user['expires_at']) && strtotime($user['expires_at']) > time())
            ? $user['expires_at']
            : date('Y-m-d');

        $newExpiry = date('Y-m-d', strtotime($base . " +{$months} months"));

        return (bool) $this->update($userId, ['expires_at' => $newExpiry]);
    }
}
