From 6b9e4b1d23d0d4dc87ab8c04d24410686f7830b9 Mon Sep 17 00:00:00 2001 From: Hosteroid Date: Mon, 20 Oct 2025 12:43:51 +0300 Subject: [PATCH] Add support for filtering domains by 'available' and 'error' status Extended the domain filtering logic and UI to allow filtering by 'available' and 'error' statuses. Updated the Domain model to handle these new filters and adjusted the dashboard to include global stats, including inactive domains. --- app/Controllers/DashboardController.php | 4 ++++ app/Models/Domain.php | 17 +++++++++++++++++ app/Views/domains/index.php | 2 ++ 3 files changed, 23 insertions(+) diff --git a/app/Controllers/DashboardController.php b/app/Controllers/DashboardController.php index 3b69ca9..af38d60 100644 --- a/app/Controllers/DashboardController.php +++ b/app/Controllers/DashboardController.php @@ -43,9 +43,13 @@ class DashboardController extends Controller // Format domains for display $formattedRecentDomains = \App\Helpers\DomainHelper::formatMultiple($recentDomains); $formattedExpiringDomains = \App\Helpers\DomainHelper::formatMultiple($expiringThisMonth); + + // Get global stats for dashboard cards + $globalStats = \App\Helpers\LayoutHelper::getGlobalStats(); $this->view('dashboard/index', [ 'stats' => $stats, + 'globalStats' => $globalStats, 'recentDomains' => $formattedRecentDomains, 'expiringThisMonth' => $formattedExpiringDomains, 'expiringCount' => count($allExpiringDomains), diff --git a/app/Models/Domain.php b/app/Models/Domain.php index 8d90b09..e99edf5 100644 --- a/app/Models/Domain.php +++ b/app/Models/Domain.php @@ -127,6 +127,7 @@ class Domain extends Model 'inactive' => 0, ]; + // Get status counts for active domains only $sql = "SELECT status, COUNT(*) as count FROM domains WHERE is_active = 1 GROUP BY status"; $stmt = $this->db->query($sql); $results = $stmt->fetchAll(); @@ -137,6 +138,14 @@ class Domain extends Model $stats[strtolower($row['status'])] = $row['count']; } + // Get count of inactive domains (is_active = 0) + $inactiveStmt = $this->db->query("SELECT COUNT(*) as count FROM domains WHERE is_active = 0"); + $inactiveResult = $inactiveStmt->fetch(); + $stats['inactive'] = $inactiveResult['count'] ?? 0; + + // Add inactive count to total + $stats['total'] += $stats['inactive']; + return $stats; } @@ -167,6 +176,14 @@ class Domain extends Model } return false; } + // Handle inactive filter (based on is_active field) + if ($filters['status'] === 'inactive') { + return $domain['is_active'] == 0; + } + // Handle available and error status filters + if ($filters['status'] === 'available' || $filters['status'] === 'error') { + return $domain['status'] === $filters['status']; + } return $domain['status'] === $filters['status']; }); } diff --git a/app/Views/domains/index.php b/app/Views/domains/index.php index bc8e4be..a8d6867 100644 --- a/app/Views/domains/index.php +++ b/app/Views/domains/index.php @@ -68,6 +68,8 @@ $currentFilters = $filters ?? ['search' => '', 'status' => '', 'group' => '', 's + +