Refactor plant selection options across multiple resources to display plants based on the authenticated user's plant ID, ensuring users only see relevant options.
This commit is contained in:
@@ -3,6 +3,7 @@
|
||||
namespace App\Filament\Resources;
|
||||
|
||||
use AlperenErsoy\FilamentExport\Actions\FilamentExportBulkAction;
|
||||
use App\Exports\TestingPanelReadingExport;
|
||||
use App\Filament\Exports\TestingPanelReadingExporter;
|
||||
use App\Filament\Imports\TestingPanelReadingImporter;
|
||||
use App\Filament\Resources\TestingPanelReadingResource\Pages;
|
||||
@@ -14,6 +15,7 @@ use App\Models\MotorTestingMaster;
|
||||
use App\Models\Plant;
|
||||
use App\Models\TestingPanelReading;
|
||||
use Barryvdh\DomPDF\Facade\Pdf;
|
||||
// use Barryvdh\Reflection\DocBlock\Type\Collection;
|
||||
use Filament\Facades\Filament;
|
||||
use Filament\Forms;
|
||||
use Filament\Forms\Components\DateTimePicker;
|
||||
@@ -21,6 +23,7 @@ use Filament\Forms\Components\Select;
|
||||
use Filament\Forms\Components\TextInput;
|
||||
use Filament\Forms\Form;
|
||||
use Filament\Forms\Get;
|
||||
use Filament\Notifications\Collection as NotificationsCollection;
|
||||
use Filament\Resources\Resource;
|
||||
use Filament\Tables;
|
||||
use Filament\Tables\Actions\BulkAction;
|
||||
@@ -30,6 +33,9 @@ use Illuminate\Database\Eloquent\SoftDeletingScope;
|
||||
use Filament\Tables\Actions\ImportAction;
|
||||
use Filament\Tables\Actions\ExportAction;
|
||||
use Filament\Tables\Filters\Filter;
|
||||
use Maatwebsite\Excel\Facades\Excel;
|
||||
use Filament\Tables\Actions\Action;
|
||||
use Illuminate\Support\Collection;
|
||||
|
||||
class TestingPanelReadingResource extends Resource
|
||||
{
|
||||
@@ -50,7 +56,10 @@ class TestingPanelReadingResource extends Resource
|
||||
->relationship('plant', 'name')
|
||||
->required()
|
||||
->reactive()
|
||||
// When plant changes, reset the dependent fields
|
||||
->options(function (callable $get) {
|
||||
$userHas = Filament::auth()->user()->plant_id;
|
||||
return ($userHas && strlen($userHas) > 0) ? Plant::where('id', $userHas)->pluck('name', 'id')->toArray() : Plant::pluck('name', 'id')->toArray();
|
||||
})
|
||||
->default(function () {
|
||||
return optional(TestingPanelReading::latest()->first())->plant_id;
|
||||
})
|
||||
@@ -1084,6 +1093,25 @@ class TestingPanelReadingResource extends Resource
|
||||
})
|
||||
->icon('heroicon-o-document-arrow-down'),
|
||||
]),
|
||||
BulkAction::make('export')
|
||||
->label('Export Selected')
|
||||
->action(function (Collection $records) {
|
||||
// $records contains only selected rows
|
||||
$ids = $records->pluck('No.')->toArray();
|
||||
|
||||
return Excel::download(
|
||||
new TestingPanelReadingExport($ids),
|
||||
'selected_testing_panel_readings.csv'
|
||||
);
|
||||
}),
|
||||
// ExportAction::make()
|
||||
// ->label('Export Readings')
|
||||
// ->queued() // ✅ runs in queue
|
||||
// ->exports([
|
||||
// TestingPanelReadingExport::class,
|
||||
// ])
|
||||
// ->fileName('testing_panel_readings.csv')
|
||||
// ->format(Excel::CSV), // ✅ faster than Excel for 45k+ rows
|
||||
|
||||
])
|
||||
->headerActions([
|
||||
@@ -1097,6 +1125,11 @@ class TestingPanelReadingResource extends Resource
|
||||
->visible(function() {
|
||||
return Filament::auth()->user()->can('view export testing panel reading');
|
||||
}),
|
||||
// Action::make('export')
|
||||
// ->label('Export Readings')
|
||||
// ->action(function () {
|
||||
// return Excel::download(new TestingPanelReadingExport, 'testing_panel_readings.csv');
|
||||
// }),
|
||||
]);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user