119 lines
4.4 KiB
PHP
Raw Normal View History

2024-10-10 15:15:30 -07:00
<?php
2024-12-10 15:28:14 -08:00
namespace App\Filament\Admin\Resources;
2024-10-10 15:15:30 -07:00
2025-01-16 17:37:32 -05:00
use App\Enums\IconEnum;
2024-12-10 15:28:14 -08:00
use App\Filament\Admin\Resources\CustomerResource\RelationManagers\ContactsRelationManager;
2025-01-24 21:37:05 -05:00
use App\Filament\Admin\Resources\CustomerResource\RelationManagers\InvoicesRelationManager;
use App\Filament\Admin\Resources\CustomerResource\RelationManagers\PaymentsRelationManager;
2024-12-10 15:28:14 -08:00
use App\Filament\Admin\Resources\CustomerResource\RelationManagers\ShippingEntriesRelationManager;
2024-10-10 15:15:30 -07:00
use App\Models\Customer;
use Filament\Forms\Components\Fieldset;
2024-10-10 15:15:30 -07:00
use Filament\Forms\Components\Section;
use Filament\Forms\Components\TextInput;
use Filament\Forms\Form;
use Filament\Resources\Resource;
use Filament\Tables;
use Filament\Tables\Columns\TextColumn;
use Filament\Tables\Table;
class CustomerResource extends Resource
{
protected static ?string $model = Customer::class;
2025-01-16 17:37:32 -05:00
protected static ?string $navigationIcon = IconEnum::CUSTOMER->value;
2024-10-10 15:15:30 -07:00
protected static ?string $navigationGroup = 'Management';
2024-10-30 19:28:03 -04:00
protected static ?int $navigationSort = 1;
2024-10-10 15:15:30 -07:00
public static function form(Form $form): Form
{
return $form
->columns(1)
2024-10-10 15:15:30 -07:00
->schema([
Section::make([
Fieldset::make('Primary Information')
->columns(1)
->columnSpan(fn (?Customer $record) => $record ? 1 : 3)
->schema([
TextInput::make('company_name')
->required(),
TextInput::make('phone'),
]),
Fieldset::make('Shipping Address')
->columns(1)
->columnSpan(fn (?Customer $record) => $record ? 1 : 3)
->schema([
TextInput::make('shipping_address_line_1')
->label('Line 1')
->placeholder('618 East Kent Ave S #108'),
TextInput::make('shipping_address_line_2')
->label('Line 2')
->placeholder('Vancouver, BC V5X 0B2, Canada'),
]),
Fieldset::make('Billing Address')
->columns(1)
->columnSpan(fn (?Customer $record) => $record ? 1 : 3)
->schema([
TextInput::make('billing_address_line_1')
->label('Line 1')
->placeholder('618 East Kent Ave S #108'),
TextInput::make('billing_address_line_2')
->label('Line 2')
->placeholder('Vancouver, BC V5X 0B2, Canada'),
]),
])
->columns(3)
->columnSpan(fn (?Customer $record) => $record ? 1 : 3),
2024-10-10 15:15:30 -07:00
]);
}
public static function table(Table $table): Table
{
return $table
->columns([
TextColumn::make('company_name')
2025-01-24 21:37:05 -05:00
->extraHeaderAttributes(['class' => 'w-full'])
->searchable()
->sortable(),
2024-10-10 15:15:30 -07:00
TextColumn::make('phone'),
2025-01-24 21:37:05 -05:00
TextColumn::make('balance')
->getStateUsing(fn (Customer $customer) => $customer->calculateBalance())
->money()
2025-03-08 13:03:11 -05:00
->hidden(! auth()->user()->is_admin ?? false),
2024-10-10 15:15:30 -07:00
])
->filters([
//
])
->actions([
Tables\Actions\EditAction::make(),
])
->bulkActions([
Tables\Actions\BulkActionGroup::make([
Tables\Actions\DeleteBulkAction::make(),
]),
]);
}
public static function getRelations(): array
{
return [
2025-01-24 21:37:05 -05:00
InvoicesRelationManager::class,
PaymentsRelationManager::class,
2024-11-18 22:18:41 -05:00
ContactsRelationManager::class,
ShippingEntriesRelationManager::class,
2024-10-10 15:15:30 -07:00
];
}
public static function getPages(): array
{
return [
2025-01-24 21:37:05 -05:00
'index' => \App\Filament\Admin\Resources\CustomerResource\Pages\ListCustomers::route('/'),
'edit' => \App\Filament\Admin\Resources\CustomerResource\Pages\EditCustomer::route('/{record}/edit'),
2024-10-10 15:15:30 -07:00
];
}
}