Merge pull request 'ranjith-dev' (#78) from ranjith-dev into master
All checks were successful
Scan for leaked secrets using Kingfisher / kingfisher-secrets-scan (push) Successful in 11s

Reviewed-on: #78
This commit was merged in pull request #78.
This commit is contained in:
2025-12-06 07:26:07 +00:00
2 changed files with 104 additions and 68 deletions

View File

@@ -5,21 +5,19 @@ namespace App\Filament\Resources;
use App\Filament\Exports\WorkGroupMasterExporter; use App\Filament\Exports\WorkGroupMasterExporter;
use App\Filament\Imports\WorkGroupMasterImporter; use App\Filament\Imports\WorkGroupMasterImporter;
use App\Filament\Resources\WorkGroupMasterResource\Pages; use App\Filament\Resources\WorkGroupMasterResource\Pages;
use App\Filament\Resources\WorkGroupMasterResource\RelationManagers;
use App\Models\Line;
use App\Models\Plant; use App\Models\Plant;
use App\Models\WorkGroupMaster; use App\Models\WorkGroupMaster;
use Filament\Facades\Filament;
use Filament\Forms; use Filament\Forms;
use Filament\Forms\Components\Section;
use Filament\Forms\Form; use Filament\Forms\Form;
use Filament\Resources\Resource; use Filament\Resources\Resource;
use Filament\Tables; use Filament\Tables;
use Filament\Tables\Actions\ExportAction;
use Filament\Tables\Actions\ImportAction;
use Filament\Tables\Table; use Filament\Tables\Table;
use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\SoftDeletingScope; use Illuminate\Database\Eloquent\SoftDeletingScope;
use Filament\Forms\Components\Section;
use Filament\Facades\Filament;
use Filament\Tables\Actions\ImportAction;
use Filament\Tables\Actions\ExportAction;
use Illuminate\Validation\Rule; use Illuminate\Validation\Rule;
class WorkGroupMasterResource extends Resource class WorkGroupMasterResource extends Resource
@@ -37,68 +35,70 @@ class WorkGroupMasterResource extends Resource
return $form return $form
->schema([ ->schema([
Section::make('') Section::make('')
->schema([ ->schema([
Forms\Components\Select::make('plant_id') Forms\Components\Select::make('plant_id')
->label('Plant') ->label('Plant')
->relationship('plant', 'name') ->relationship('plant', 'name')
->reactive() ->reactive()
->columnSpan(1) ->columnSpan(1)
->required() ->required()
->options(function (callable $get) { ->options(function (callable $get) {
$userHas = Filament::auth()->user()->plant_id; $userHas = Filament::auth()->user()->plant_id;
return ($userHas && strlen($userHas) > 0) ? Plant::where('id', $userHas)->pluck('name', 'id')->toArray() : Plant::pluck('name', 'id')->toArray();
})
->afterStateUpdated(function ($state, $set, callable $get) {
$plantId = $get('plant_id');
if (!$plantId) { return ($userHas && strlen($userHas) > 0) ? Plant::where('id', $userHas)->pluck('name', 'id')->toArray() : Plant::pluck('name', 'id')->toArray();
$set('pqPlantError', 'Please select a plant first.'); })
$set('name', null); ->afterStateUpdated(function ($state, $set, callable $get) {
$set('description', null); $plantId = $get('plant_id');
$set('operation_number', null);
return;
}
$set('validationError', null); if (! $plantId) {
$set('pqPlantError', null); $set('pqPlantError', 'Please select a plant first.');
$set('name', null); $set('name', null);
$set('description', null); $set('description', null);
$set('operation_number', null); $set('operation_number', null);
})
->hint(fn ($get) => $get('pqPlantError') ? $get('pqPlantError') : null) return;
->hintColor('danger'), }
Forms\Components\TextInput::make('name')
->label('Name') $set('validationError', null);
->required() $set('pqPlantError', null);
->minLength(6) $set('name', null);
->columnSpan(1) $set('description', null);
->reactive() $set('operation_number', null);
->rule(function (callable $get) { })
return Rule::unique('work_group_masters', 'name') ->hint(fn ($get) => $get('pqPlantError') ? $get('pqPlantError') : null)
->where('plant_id', $get('plant_id')) ->hintColor('danger'),
->ignore($get('id')); Forms\Components\TextInput::make('name')
}), ->label('Name')
Forms\Components\TextInput::make('operation_number') ->required()
->label('Operation Number') ->minLength(6)
->numeric() ->columnSpan(1)
->columnSpan(1) ->reactive()
->reactive() ->rule(function (callable $get) {
->required() return Rule::unique('work_group_masters', 'name')
->rule(function (callable $get) { ->where('plant_id', $get('plant_id'))
return Rule::unique('work_group_masters', 'operation_number') ->ignore($get('id'));
->where('plant_id', $get('plant_id')) }),
->ignore($get('id')); Forms\Components\TextInput::make('operation_number')
}), ->label('Operation Number')
Forms\Components\TextInput::make('description') ->numeric()
->label('Description') ->columnSpan(1)
->required() ->reactive()
->minLength(5) ->required(),
->reactive() // ->rule(function (callable $get) {
->columnSpan(['default' => 1, 'sm' => 3]), // return Rule::unique('work_group_masters', 'operation_number')
Forms\Components\Hidden::make('created_by') // ->where('plant_id', $get('plant_id'))
->default(Filament::auth()->user()?->name), // ->ignore($get('id'));
]) // }),
->columns(['default' => 1, 'sm' => 3]), Forms\Components\TextInput::make('description')
->label('Description')
->required()
->minLength(5)
->reactive()
->columnSpan(['default' => 1, 'sm' => 3]),
Forms\Components\Hidden::make('created_by')
->default(Filament::auth()->user()?->name),
])
->columns(['default' => 1, 'sm' => 3]),
]); ]);
} }
@@ -112,6 +112,7 @@ class WorkGroupMasterResource extends Resource
$paginator = $livewire->getTableRecords(); $paginator = $livewire->getTableRecords();
$perPage = method_exists($paginator, 'perPage') ? $paginator->perPage() : 10; $perPage = method_exists($paginator, 'perPage') ? $paginator->perPage() : 10;
$currentPage = method_exists($paginator, 'currentPage') ? $paginator->currentPage() : 1; $currentPage = method_exists($paginator, 'currentPage') ? $paginator->currentPage() : 1;
return ($currentPage - 1) * $perPage + $rowLoop->iteration; return ($currentPage - 1) * $perPage + $rowLoop->iteration;
}), }),
Tables\Columns\TextColumn::make('plant.name') Tables\Columns\TextColumn::make('plant.name')
@@ -177,14 +178,14 @@ class WorkGroupMasterResource extends Resource
->label('Import Work Group Masters') ->label('Import Work Group Masters')
->color('warning') ->color('warning')
->importer(WorkGroupMasterImporter::class) ->importer(WorkGroupMasterImporter::class)
->visible(function() { ->visible(function () {
return Filament::auth()->user()->can('view import work group master'); return Filament::auth()->user()->can('view import work group master');
}), }),
ExportAction::make() ExportAction::make()
->label('Export Work Group Masters') ->label('Export Work Group Masters')
->color('warning') ->color('warning')
->exporter(WorkGroupMasterExporter::class) ->exporter(WorkGroupMasterExporter::class)
->visible(function() { ->visible(function () {
return Filament::auth()->user()->can('view export work group master'); return Filament::auth()->user()->can('view export work group master');
}), }),
]); ]);

View File

@@ -0,0 +1,35 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::table('work_group_masters', function (Blueprint $table) {
$table->dropUnique('work_group_masters_plant_id_operation_number_key');
});
// $sql = <<<'SQL'
// ALTER TABLE work_group_masters
// DROP INDEX work_group_masters_plant_id_operation_number_key;
// SQL;
// DB::statement($sql);
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::table('work_group_masters', function (Blueprint $table) {
//
});
}
};