48 lines
1.3 KiB
PHP
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;
|
|
}
|
|
}
|