feat(setup preprod)
All checks were successful
Deploy Roxane to Preprod / deploy (push) Successful in 26h10m32s
All checks were successful
Deploy Roxane to Preprod / deploy (push) Successful in 26h10m32s
This commit is contained in:
77
app/Filament/Widgets/LatestMembershipsWidget.php
Normal file
77
app/Filament/Widgets/LatestMembershipsWidget.php
Normal file
@@ -0,0 +1,77 @@
|
||||
<?php
|
||||
|
||||
namespace App\Filament\Widgets;
|
||||
|
||||
use App\Filament\Resources\Memberships\MembershipResource;
|
||||
use App\Models\Membership;
|
||||
use Filament\Actions\Action;
|
||||
use Filament\Tables\Columns\TextColumn;
|
||||
use Filament\Tables\Table;
|
||||
use Filament\Widgets\TableWidget;
|
||||
use Illuminate\Database\Eloquent\Builder;
|
||||
|
||||
class LatestMembershipsWidget extends TableWidget
|
||||
{
|
||||
protected static ?int $sort = 3;
|
||||
|
||||
protected static ?string $heading = 'Dernières adhésions';
|
||||
|
||||
protected int|string|array $columnSpan = 'full';
|
||||
|
||||
public function table(Table $table): Table
|
||||
{
|
||||
return $table
|
||||
->query(
|
||||
fn (): Builder => Membership::query()
|
||||
->with(['member', 'package'])
|
||||
->latest()
|
||||
->limit(8)
|
||||
)
|
||||
->columns([
|
||||
TextColumn::make('member.full_name')
|
||||
->label('Adhérent')
|
||||
->searchable(['members.firstname', 'members.lastname']),
|
||||
|
||||
TextColumn::make('package.name')
|
||||
->label('Package'),
|
||||
|
||||
TextColumn::make('status')
|
||||
->label('Statut adhésion')
|
||||
->formatStateUsing(fn (string $state) => Membership::getAttributeLabel($state))
|
||||
->badge()
|
||||
->color(fn (string $state): string => match ($state) {
|
||||
'active' => 'success',
|
||||
'expired' => 'danger',
|
||||
'pending' => 'warning',
|
||||
default => 'gray',
|
||||
}),
|
||||
|
||||
TextColumn::make('payment_status')
|
||||
->label('Paiement')
|
||||
->formatStateUsing(fn (string $state) => Membership::getAttributeLabel($state))
|
||||
->badge()
|
||||
->color(fn (string $state): string => match ($state) {
|
||||
'paid' => 'success',
|
||||
'unpaid' => 'danger',
|
||||
'partial' => 'warning',
|
||||
default => 'gray',
|
||||
}),
|
||||
|
||||
TextColumn::make('amount')
|
||||
->label('Montant')
|
||||
->money('EUR'),
|
||||
|
||||
TextColumn::make('created_at')
|
||||
->label('Créée le')
|
||||
->dateTime('d/m/Y')
|
||||
->sortable(),
|
||||
])
|
||||
->recordActions([
|
||||
Action::make('edit')
|
||||
->label('Voir')
|
||||
->icon('heroicon-o-pencil-square')
|
||||
->url(fn (Membership $record): string => MembershipResource::getUrl('edit', ['record' => $record])),
|
||||
])
|
||||
->paginated(false);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user