feat: subscriptions
This commit is contained in:
@@ -55,7 +55,7 @@ class CreditProductResource extends Resource
|
||||
return Action::make('syncStripe')
|
||||
->label(__('admin.credit_products.actions.sync_stripe'))
|
||||
->icon(Heroicon::OutlinedArrowPath)
|
||||
->visible(fn (CreditProduct $record): bool => blank($record->stripe_price_id))
|
||||
->visible(fn (CreditProduct $record): bool => blank($record->stripe_price_id) && $record->purpose !== null)
|
||||
->requiresConfirmation()
|
||||
->action(function (CreditProduct $record): void {
|
||||
app(StripeCreditProductSyncer::class)->sync($record);
|
||||
|
||||
@@ -2,7 +2,9 @@
|
||||
|
||||
namespace App\Filament\Resources\CreditProducts\Schemas;
|
||||
|
||||
use App\Enums\BillingProductPurpose;
|
||||
use App\Enums\CreditProductType;
|
||||
use Filament\Forms\Components\Hidden;
|
||||
use Filament\Forms\Components\Select;
|
||||
use Filament\Forms\Components\Textarea;
|
||||
use Filament\Forms\Components\TextInput;
|
||||
@@ -23,16 +25,15 @@ class CreditProductForm
|
||||
->label(__('admin.credit_products.fields.name'))
|
||||
->required()
|
||||
->maxLength(255),
|
||||
Select::make('type')
|
||||
->label(__('admin.credit_products.fields.type'))
|
||||
->options(CreditProductType::class)
|
||||
->default(CreditProductType::ONE_TIME->value)
|
||||
->required(),
|
||||
TextInput::make('credits')
|
||||
->label(__('admin.credit_products.fields.credits'))
|
||||
->integer()
|
||||
->minValue(1)
|
||||
Select::make('purpose')
|
||||
->label(__('admin.credit_products.fields.purpose'))
|
||||
->options(BillingProductPurpose::class)
|
||||
->unique(ignoreRecord: true)
|
||||
->required(),
|
||||
Hidden::make('type')
|
||||
->default(CreditProductType::ONE_TIME->value),
|
||||
Hidden::make('credits')
|
||||
->default(0),
|
||||
TextInput::make('amount')
|
||||
->label(__('admin.credit_products.fields.amount'))
|
||||
->helperText(__('admin.credit_products.helpers.amount'))
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
namespace App\Filament\Resources\CreditProducts\Tables;
|
||||
|
||||
use App\Enums\CreditProductType;
|
||||
use App\Enums\BillingProductPurpose;
|
||||
use App\Filament\Resources\CreditProducts\CreditProductResource;
|
||||
use Filament\Actions\BulkActionGroup;
|
||||
use Filament\Actions\DeleteBulkAction;
|
||||
@@ -24,14 +24,10 @@ class CreditProductsTable
|
||||
->label(__('admin.credit_products.fields.name'))
|
||||
->searchable()
|
||||
->sortable(),
|
||||
TextColumn::make('type')
|
||||
->label(__('admin.credit_products.fields.type'))
|
||||
TextColumn::make('purpose')
|
||||
->label(__('admin.credit_products.fields.purpose'))
|
||||
->badge()
|
||||
->sortable(),
|
||||
TextColumn::make('credits')
|
||||
->label(__('admin.credit_products.fields.credits'))
|
||||
->numeric(decimalPlaces: 0)
|
||||
->sortable(),
|
||||
TextColumn::make('amount')
|
||||
->label(__('admin.credit_products.fields.amount'))
|
||||
->money(fn ($record): string => $record->currency, divideBy: 100)
|
||||
@@ -56,9 +52,9 @@ class CreditProductsTable
|
||||
->toggleable(isToggledHiddenByDefault: true),
|
||||
])
|
||||
->filters([
|
||||
SelectFilter::make('type')
|
||||
->label(__('admin.credit_products.fields.type'))
|
||||
->options(CreditProductType::class),
|
||||
SelectFilter::make('purpose')
|
||||
->label(__('admin.credit_products.fields.purpose'))
|
||||
->options(BillingProductPurpose::class),
|
||||
TernaryFilter::make('is_active')
|
||||
->label(__('admin.credit_products.fields.is_active')),
|
||||
])
|
||||
|
||||
Reference in New Issue
Block a user