Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 15 additions & 0 deletions app/Filament/Admin/Pages/Dashboard.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
<?php

declare(strict_types=1);

namespace App\Filament\Admin\Pages;

use Filament\Pages\Dashboard as Page;

class Dashboard extends Page
{
public function getColumns(): int | string | array
{
return 3;
}
}
47 changes: 47 additions & 0 deletions app/Filament/Admin/Widgets/BeneficiariesGendersTableStats.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
<?php

declare(strict_types=1);

namespace App\Filament\Admin\Widgets;

use App\Models\Beneficiary;
use Filament\Tables\Columns\TextColumn;
use Filament\Tables\Table;
use Filament\Widgets\TableWidget as BaseWidget;
use Illuminate\Support\Str;
use Tpetry\QueryExpressions\Function\Aggregate\Count;
use Tpetry\QueryExpressions\Function\Aggregate\Min;
use Tpetry\QueryExpressions\Language\Alias;

class BeneficiariesGendersTableStats extends BaseWidget
{
protected static ?int $sort = 20;

public function table(Table $table): Table
{
return $table
->heading(__('app.stats.beneficiaries.genders'))
->query(
fn () => Beneficiary::query()
->select([
'gender',
new Alias(new Count('*'), 'count'),
new Alias(new Min('id'), 'id'),
])
->groupBy('gender')
)
->columns([
TextColumn::make('gender')
->label(__('app.field.gender'))
->sortable(),

TextColumn::make('count')
->label(Str::ucfirst(__('app.beneficiary.label.plural')))
->alignRight()
->sortable()
->numeric()
->shrink(),
])
->defaultSort('count', 'desc');
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
<?php

declare(strict_types=1);

namespace App\Filament\Admin\Widgets;

use App\Models\Beneficiary;
use Filament\Tables\Columns\TextColumn;
use Filament\Tables\Table;
use Filament\Widgets\TableWidget as BaseWidget;
use Illuminate\Support\Str;
use Tpetry\QueryExpressions\Function\Aggregate\Count;
use Tpetry\QueryExpressions\Function\Aggregate\Min;
use Tpetry\QueryExpressions\Language\Alias;

class BeneficiariesNationalitiesTableStats extends BaseWidget
{
protected static ?int $sort = 21;

public function table(Table $table): Table
{
return $table
->heading(__('app.stats.beneficiaries.nationalities'))
->query(
fn () => Beneficiary::query()
->join('countries', 'beneficiaries.nationality_id', 'countries.id')
->select([
new Alias('countries.name', 'country_name'),
new Alias(new Count('*'), 'count'),
new Alias(new Min('beneficiaries.id'), 'id'),
])
->groupBy('country_name')
)
->columns([
TextColumn::make('country_name')
->label(__('app.field.country'))
->wrap(),

TextColumn::make('count')
->label(Str::ucfirst(__('app.beneficiary.label.plural')))
->alignRight()
->sortable()
->numeric()
->shrink(),
])
->defaultSort('count', 'desc')
->defaultPaginationPageOption(5);
}
}
47 changes: 47 additions & 0 deletions app/Filament/Admin/Widgets/RequestsStatusTableStats.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
<?php

declare(strict_types=1);

namespace App\Filament\Admin\Widgets;

use App\Models\Request;
use Filament\Tables\Columns\TextColumn;
use Filament\Tables\Table;
use Filament\Widgets\TableWidget as BaseWidget;
use Illuminate\Support\Str;
use Tpetry\QueryExpressions\Function\Aggregate\Count;
use Tpetry\QueryExpressions\Function\Aggregate\Min;
use Tpetry\QueryExpressions\Language\Alias;

class RequestsStatusTableStats extends BaseWidget
{
protected static ?int $sort = 22;

public function table(Table $table): Table
{
return $table
->heading(__('app.stats.requests.status'))
->query(
fn () => Request::query()
->select([
'status',
new Alias(new Count('*'), 'count'),
new Alias(new Min('id'), 'id'),
])
->groupBy('status')
)
->columns([
TextColumn::make('status')
->label(__('app.field.status'))
->sortable(),

TextColumn::make('count')
->label(Str::ucfirst(__('app.request.label.plural')))
->alignRight()
->sortable()
->numeric()
->shrink(),
])
->defaultSort('count', 'desc');
}
}
2 changes: 1 addition & 1 deletion app/Providers/Filament/AdminPanelProvider.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,13 @@
namespace App\Providers\Filament;

use App\Filament\Admin\Pages\Auth\Login;
use App\Filament\Admin\Pages\Dashboard;
use App\Http\Middleware\EnsureUserIsActive;
use App\Http\Middleware\SetLocale;
use Filament\Http\Middleware\Authenticate;
use Filament\Http\Middleware\AuthenticateSession;
use Filament\Http\Middleware\DisableBladeIconComponents;
use Filament\Http\Middleware\DispatchServingFilamentEvent;
use Filament\Pages\Dashboard;
use Filament\Panel;
use Filament\PanelProvider;
use Filament\SpatieLaravelTranslatablePlugin;
Expand Down
3 changes: 3 additions & 0 deletions lang/en/app.php
Original file line number Diff line number Diff line change
Expand Up @@ -388,6 +388,9 @@
'residencies' => 'Total beneficiaries per country of residence',
'genders' => 'Total beneficiaries per gender',
],
'requests' => [
'status' => 'Total requests per status',
],
],
'request' => [
'label' => [
Expand Down
Loading