OwlCyberSecurity - MANAGER
Edit File: WithdrawfinancialResource.php
<?php namespace App\Filament\Resources; use App\Filament\Resources\WithdrawfinancialResource\Pages; use App\Filament\Resources\WithdrawfinancialResource\RelationManagers; use App\Models\Withdrawfinancial; use Filament\Forms; use Filament\Forms\Form; use Filament\Resources\Resource; use Filament\Tables; use Filament\Tables\Actions\Action; use Filament\Tables\Table; use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\SoftDeletingScope; use App\Models\Withdraw; use Filament\Tables\Columns\TextColumn; use Filament\Tables\Columns\BooleanColumn; use App\Models\Credit; use Filament\Forms\Components\TextInput; class WithdrawfinancialResource extends Resource { protected static ?string $model = Withdraw::class; protected static ?string $navigationIcon = 'heroicon-o-currency-dollar'; protected static ?string $slug = 'withdraw-financial-wallet'; protected static ?string $modelLabel = 'درخواست های عودت وجه'; protected static ?string $pluralModelLabel = 'درخواست های عودت وجه'; protected static ?string $navigationGroup = 'مالی'; protected static ?int $navigationSort = 8; public static function getNavigationBadge(): ?string { return static::getModel()::where(fn($query) => $query->where('is_check', 1)) ->where(fn($query) => $query->where('tax_check', 0)) ->where(fn($query) => $query->where('status', '!=', 'رد شده')) ->count(); } public static function getEloquentQuery(): Builder { return parent::getEloquentQuery() ->where(fn($query) => $query->where('is_check', 1)) ->where(fn($query) => $query->where('tax_check', 0)) ->where(fn($query) => $query->where('status', '!=', 'رد شده')); } public static function table(Table $table): Table { return $table ->columns([ TextColumn::make('user.name')->label('نام کاربر')->sortable()->searchable(), TextColumn::make('user.cell_number')->label('شماره همراه')->sortable()->searchable(), TextColumn::make('amount')->label('مقدار')->sortable(), TextColumn::make('Bank_account_number')->label('شماره شبا')->copyable(), TextColumn::make('description')->label('توضیحات'), TextColumn::make('user.wallet_balance')->label('موجودی کیف پول')->sortable()->money('IRR'), TextColumn::make('status')->label('مرحله')->sortable(), TextColumn::make('updated_at')->label('آخرین بررسی')->dateTime('Y-m-d H:i:s')->sortable()->jalaliDateTime(), ]) ->actions([ Action::make('wallet-log')->label('لاگ کیف پول')->color('primary')->icon('heroicon-o-currency-dollar') ->url(fn(Withdraw $item) => config('app.url') . "/admin/users-wallet-mali/wallet-log/" . "{$item->user->id}") ->openUrlInNewTab() ->icon('heroicon-o-link') ->color('primary'), Action::make('approveTax') ->label('مالیات دارد') ->form([ TextInput::make('tax') ->label('مقدار مالیات') ->numeric() ->minValue(0) ->required(), ]) ->action(function (Withdraw $record, array $data): void { $tax = $data['tax']; $user = $record->user; $user->wallet_balance -= $record->amount; $user->save(); $record->update([ 'is_check' => 1, 'tax' => $tax, 'tax_check' => 1, 'status' => 'موفق', ]); Credit::create([ 'amount' => $record->amount * -1, 'description' => 'درخواست برداشت وجه با مالیات', 'status' => 'discharge', 'user_id' => $user->id, 'admin_user_id' => auth()->id(), 'payment_status' => 'Succeeded' ]); }) ->requiresConfirmation() ->color('danger') ->icon('heroicon-o-x-circle'), Action::make('rejectTax') ->label('مالیات ندارد') ->action(function (Withdraw $record): void { $user = $record->user; $user->wallet_balance -= $record->amount; $user->save(); $record->update([ 'is_check' => 1, 'tax' => 0, 'tax_check' => 1, 'status' => 'موفق', ]); Credit::create([ 'amount' => $record->amount * -1, 'description' => 'درخواست برداشت وجه بدون مالیات', 'status' => 'discharge', 'user_id' => $user->id, 'admin_user_id' => auth()->id(), 'payment_status' => 'Succeeded' ]); }) ->requiresConfirmation() ->color('success') ->icon('heroicon-o-check'), Action::make('deny') ->label('رد') ->action(function (Withdraw $record): void { $record->update([ 'tax_check' => 1, 'status' => 'رد شده', ]); }) ->requiresConfirmation() ->color('danger') ->icon('heroicon-o-x-circle'), ]) ->bulkActions([]); } public static function getRelations(): array { return [ // ]; } public static function canViewAny(): bool { return auth()->user()->can('withdraw-financial-wallet::view'); } public static function getPages(): array { return [ 'index' => Pages\ListWithdrawfinancials::route('/'), ]; } }