- Add database migrations for plans, subscriptions, notification preferences, and notification log tables - Implement DispatchUserNotificationJob to handle channel resolution, daily limits, and logging (sent/tier_restricted/daily_limit) - Add SendScheduledWhatsAppJob for scheduled notification delivery - Create PlanFeatures service to resolve tier capabilities, check daily limits, and validate fuel
41 lines
1.2 KiB
PHP
41 lines
1.2 KiB
PHP
<?php
|
|
|
|
namespace App\Filament\Resources\Plans\Tables;
|
|
|
|
use Filament\Actions\EditAction;
|
|
use Filament\Tables\Columns\IconColumn;
|
|
use Filament\Tables\Columns\TextColumn;
|
|
use Filament\Tables\Table;
|
|
|
|
class PlansTable
|
|
{
|
|
public static function configure(Table $table): Table
|
|
{
|
|
return $table
|
|
->columns([
|
|
TextColumn::make('name')
|
|
->label('Tier')
|
|
->badge()
|
|
->sortable(),
|
|
TextColumn::make('features.email.frequency')
|
|
->label('Email')
|
|
->placeholder('—'),
|
|
TextColumn::make('features.sms.daily_limit')
|
|
->label('SMS/day')
|
|
->placeholder('—'),
|
|
TextColumn::make('features.whatsapp.daily_limit')
|
|
->label('WhatsApp/day')
|
|
->placeholder('—'),
|
|
TextColumn::make('features.fuel_types.max')
|
|
->label('Fuel types')
|
|
->placeholder('Unlimited'),
|
|
IconColumn::make('active')
|
|
->boolean(),
|
|
])
|
|
->defaultSort('id', 'asc')
|
|
->recordActions([
|
|
EditAction::make(),
|
|
]);
|
|
}
|
|
}
|