Files
zemailnator/app/Filament/Widgets/StatsOverview.php
2025-05-08 09:56:13 +05:30

48 lines
1.3 KiB
PHP

<?php
namespace App\Filament\Widgets;
use App\Models\Log;
use App\Models\Meta;
use App\Models\User;
use DB;
use Filament\Widgets\StatsOverviewWidget as BaseWidget;
use Filament\Widgets\StatsOverviewWidget\Stat;
class StatsOverview extends BaseWidget
{
protected function getStats(): array
{
return [
Stat::make('Total Users', $this->getUser()),
Stat::make('Paid Users', $this->getUserPaid()),
Stat::make('Logs Count', $this->getLogsCount()),
Stat::make('Total Mailbox', $this->getTotalMailbox()),
Stat::make('Emails Received', $this->getTotalEmailsReceived()),
];
}
private function getUser(): int
{
return User::all()->count();
}
private function getUserPaid(): int
{
return DB::table('subscriptions')
->where(['stripe_status' => 'active'])
->distinct('user_id')
->count('user_id');
}
private function getLogsCount(): int
{
return Log::all()->count();
}
private function getTotalMailbox(): int
{
return Meta::select('value')->where(['key' => 'email_ids_created'])->first()->value;
}
private function getTotalEmailsReceived(): int
{
return Meta::select('value')->where(['key' => 'messages_received'])->first()->value;
}
}