diff --git a/app/Filament/Server/Resources/BackupResource.php b/app/Filament/Server/Resources/BackupResource.php index 3a10c6446..13b84f50e 100644 --- a/app/Filament/Server/Resources/BackupResource.php +++ b/app/Filament/Server/Resources/BackupResource.php @@ -20,6 +20,34 @@ class BackupResource extends Resource protected static bool $canCreateAnother = false; + public const WARNING_THRESHOLD = 0.7; + + public static function getNavigationBadge(): string + { + /** @var Server $server */ + $server = Filament::getTenant(); + + $limit = $server->backup_limit; + + return $server->backups->count() . ($limit === 0 ? '' : ' / ' . $limit); + } + + public static function getNavigationBadgeColor(): ?string + { + /** @var Server $server */ + $server = Filament::getTenant(); + + $limit = $server->backup_limit; + $count = $server->backups->count(); + + if ($limit === 0) { + return null; + } + + return $count >= $limit ? 'danger' + : ($count >= $limit * self::WARNING_THRESHOLD ? 'warning' : 'success'); + } + // TODO: find better way handle server conflict state public static function canAccess(): bool { diff --git a/app/Filament/Server/Resources/DatabaseResource.php b/app/Filament/Server/Resources/DatabaseResource.php index 48ba84245..39f339244 100644 --- a/app/Filament/Server/Resources/DatabaseResource.php +++ b/app/Filament/Server/Resources/DatabaseResource.php @@ -18,6 +18,35 @@ class DatabaseResource extends Resource protected static ?string $navigationIcon = 'tabler-database'; + public const WARNING_THRESHOLD = 0.7; + + public static function getNavigationBadge(): string + { + /** @var Server $server */ + $server = Filament::getTenant(); + + $limit = $server->database_limit; + + return $server->databases->count() . ($limit === 0 ? '' : ' / ' . $limit); + } + + public static function getNavigationBadgeColor(): ?string + { + /** @var Server $server */ + $server = Filament::getTenant(); + + $limit = $server->database_limit; + $count = $server->databases->count(); + + if ($limit === 0) { + return null; + } + + return $count >= $limit + ? 'danger' + : ($count >= $limit * self::WARNING_THRESHOLD ? 'warning' : 'success'); + } + // TODO: find better way handle server conflict state public static function canAccess(): bool { diff --git a/app/Filament/Server/Resources/UserResource.php b/app/Filament/Server/Resources/UserResource.php index cc608a557..08a415f82 100644 --- a/app/Filament/Server/Resources/UserResource.php +++ b/app/Filament/Server/Resources/UserResource.php @@ -38,6 +38,14 @@ class UserResource extends Resource protected static ?string $tenantOwnershipRelationshipName = 'subServers'; + public static function getNavigationBadge(): string + { + /** @var Server $server */ + $server = Filament::getTenant(); + + return (string) $server->subusers->count(); + } + // TODO: find better way handle server conflict state public static function canAccess(): bool {