Deploy: 2026-05-23 00:20:07

This commit is contained in:
Hamza-Ayed
2026-05-23 00:20:07 +03:00
parent d8b5ddd6ff
commit 408b4b0048
5 changed files with 257 additions and 16 deletions

View File

@@ -3,6 +3,7 @@
namespace App\Models;
use App\Core\Database;
use App\Core\Cache;
/**
* CompanySubscription Model
@@ -17,19 +18,23 @@ class CompanySubscription extends BaseModel
*/
public static function findActiveByCompany(int $companyId): ?array
{
$now = date('Y-m-d H:i:s');
return Database::selectOne(
"SELECT cs.*, sp.name as plan_name, sp.max_sessions, sp.max_requests,
sp.max_voice_requests, sp.max_ocr_requests, sp.features
FROM " . static::$table . " cs
JOIN subscription_plans sp ON cs.plan_id = sp.id
WHERE cs.company_id = ?
AND cs.status = 'active'
AND cs.starts_at <= ?
AND cs.ends_at >= ?
LIMIT 1",
[$companyId, $now, $now]
);
$cacheKey = "company_subscription_{$companyId}";
return Cache::remember($cacheKey, 300, function () use ($companyId) {
$now = date('Y-m-d H:i:s');
return Database::selectOne(
"SELECT cs.*, sp.name as plan_name, sp.max_sessions, sp.max_requests,
sp.max_voice_requests, sp.max_ocr_requests, sp.features
FROM " . static::$table . " cs
JOIN subscription_plans sp ON cs.plan_id = sp.id
WHERE cs.company_id = ?
AND cs.status = 'active'
AND cs.starts_at <= ?
AND cs.ends_at >= ?
LIMIT 1",
[$companyId, $now, $now]
) ?: [];
}) ?: null;
}
/**
@@ -47,6 +52,9 @@ class CompanySubscription extends BaseModel
[$companyId]
);
// Clear active subscription cache for the company
Cache::delete("company_subscription_{$companyId}");
return self::create([
'company_id' => $companyId,
'plan_id' => $planId,