Files
fotospiel-app/app/Filament/Resources/Coupons/Schemas/CouponInfolist.php

82 lines
3.8 KiB
PHP

<?php
namespace App\Filament\Resources\Coupons\Schemas;
use Filament\Infolists\Components\KeyValueEntry;
use Filament\Infolists\Components\Section;
use Filament\Infolists\Components\TextEntry;
use Filament\Schemas\Schema;
use Illuminate\Support\Str;
class CouponInfolist
{
public static function configure(Schema $schema): Schema
{
return $schema
->components([
Section::make(__('Summary'))
->columns(3)
->schema([
TextEntry::make('name')->label(__('Name')),
TextEntry::make('code')->label(__('Code'))->copyable(),
TextEntry::make('status')
->label(__('Status'))
->badge()
->formatStateUsing(fn ($state) => Str::headline($state)),
TextEntry::make('type')
->label(__('Discount type'))
->badge()
->formatStateUsing(fn ($state) => Str::headline($state)),
TextEntry::make('amount')
->label(__('Amount'))
->formatStateUsing(fn ($state, $record) => $record?->type?->value === 'percentage'
? sprintf('%s%%', $record?->amount ?? $state)
: sprintf('%s %s', number_format((float) ($record?->amount ?? $state), 2), strtoupper($record?->currency ?? 'EUR'))),
TextEntry::make('redemptions_count')
->label(__('Total redemptions'))
->badge(),
]),
Section::make(__('Limits & scheduling'))
->columns(2)
->schema([
TextEntry::make('usage_limit')->label(__('Global usage limit'))->placeholder('—'),
TextEntry::make('per_customer_limit')->label(__('Per tenant limit'))->placeholder('—'),
TextEntry::make('starts_at')
->label(__('Starts'))
->dateTime(),
TextEntry::make('ends_at')
->label(__('Ends'))
->dateTime(),
]),
Section::make(__('Packages'))
->schema([
TextEntry::make('packages_list')
->label(__('Limited to packages'))
->state(fn ($record) => $record?->packages?->pluck('name')->all() ?: null)
->listWithLineBreaks()
->placeholder(__('All packages')),
]),
Section::make(__('Metadata'))
->schema([
TextEntry::make('description')->label(__('Description'))->columnSpanFull(),
KeyValueEntry::make('metadata')->label(__('Metadata'))->columnSpanFull(),
]),
Section::make(__('Paddle'))
->columns(3)
->schema([
TextEntry::make('paddle_discount_id')
->label(__('Discount ID'))
->copyable()
->placeholder('—'),
TextEntry::make('paddle_last_synced_at')
->label(__('Last synced'))
->state(fn ($record) => $record?->paddle_last_synced_at?->diffForHumans() ?? '—'),
TextEntry::make('paddle_mode')
->label(__('Mode'))
->badge()
->placeholder('standard'),
]),
]);
}
}