OwlCyberSecurity - MANAGER
Edit File: SourceResource.php
<?php namespace App\Filament\Resources; use App\Filament\Resources\SourceResource\Pages; use App\Models\Exchanges; use App\Models\Source; use App\Models\SourcePaylog; use Filament\Forms\Components\DatePicker; use Filament\Forms\Components\Grid; use Filament\Forms\Components\Select; use Filament\Forms\Components\Textarea; use Filament\Forms\Components\TextInput; use Filament\Forms\Form; use Filament\Resources\Resource; use Filament\Tables\Table; use Filament\Tables; use Filament\Tables\Columns\TextColumn; use Filament\Tables\Filters\Filter; use Illuminate\Database\Eloquent\Builder; use Filament\Tables\Actions\Action; class SourceResource extends Resource { protected static ?string $model = Source::class; protected static ?string $navigationIcon = 'heroicon-o-credit-card'; protected static ?string $modelLabel = 'مدیریت منابع'; protected static ?string $pluralModelLabel = 'مدیریت منابع'; protected static ?string $slug = 'source'; protected static ?string $navigationGroup = 'مالی'; protected static ?int $navigationSort = 10; public static function getEloquentQuery(): Builder { return parent::getEloquentQuery()->where('id', '!=', '0'); } public static function form(Form $form): Form { return $form->schema([ Grid::make(1)->schema([ TextInput::make('name')->label('نام')->required(), Textarea::make('description')->label('توضیحات')->required(), Select::make('exchange_id')->label('ارز')->required()->options(Exchanges::get(['id', 'name'])->pluck('name', 'id')), ]) ]); } public static function table(Table $table): Table { return $table ->columns([ TextColumn::make('name')->label('نام'), TextColumn::make('description')->label('توضیحات'), TextColumn::make('exchange.name')->label('ارز'), TextColumn::make('source_paylog_sum_amount')->sum('sourcePaylog', 'amount')->label('شارژ'), ]) ->filters([ Filter::make('name')->form([ TextInput::make('name')->label('نام'), ])->query(function (Builder $query, array $data): Builder { return $query->when( $data['name'], fn(Builder $query, $date): Builder => $query->where('name', 'like', $date . '%'), ); }), ]) ->actions([ Tables\Actions\EditAction::make(), Action::make('recharge-card') ->label('شارژ') ->color('danger') ->icon('heroicon-o-currency-dollar') ->form([ TextInput::make('amount')->label('مقدار ارز')->required(), TextInput::make('exchange_value')->label('قیمت ارز')->required(), TextInput::make('rial_value')->label('فی لحظه ای ارز به ریال')->required(), DatePicker::make('log_date')->label('تاریخ')->displayFormat('Y-m-d')->required(), Textarea::make('comment')->label('توضیحات'), ]) ->action(function (Source $record, array $data) { SourcePaylog::create([ 'amount'=> $data['amount'], 'exchange_value'=> $data['exchange_value'], 'rial_value'=> $data['rial_value'], 'log_date'=> $data['log_date'], 'comment' => $data['comment'], 'source_id' => $record->id, ]); return $record; }), Action::make('paylog-list') ->label('لاگ پرداخت ها') ->color('gray') ->icon('heroicon-o-clipboard-document-list') ->url(fn($record): string => self::getUrl('paylog-list', [$record->id])), ]) ->bulkActions([]) ->defaultSort('id', 'desc'); } public static function getPages(): array { return [ 'index' => Pages\ListSources::route('/'), 'paylog-list' => Pages\PaylogList::route('/paylog/{record}'), ]; } public static function canViewAny(): bool { return auth()->user()->can('source::view'); } }