diff --git a/app/Filament/Exports/MachineExporter.php b/app/Filament/Exports/MachineExporter.php index 7541ba1..b6f7591 100644 --- a/app/Filament/Exports/MachineExporter.php +++ b/app/Filament/Exports/MachineExporter.php @@ -27,11 +27,11 @@ class MachineExporter extends Exporter ExportColumn::make('line.name') ->label('LINE NAME'), ExportColumn::make('name') - ->label('MACHINE NAME'), + ->label('DESCRIPTION'), ExportColumn::make('work_center') ->label('WORK CENTER'), ExportColumn::make('workGroupMaster.name') - ->label('WORK GROUP CENTER'), + ->label('GROUP WORK CENTER'), ExportColumn::make('created_at') ->label('CREATED AT'), ExportColumn::make('updated_at') diff --git a/app/Filament/Imports/MachineImporter.php b/app/Filament/Imports/MachineImporter.php index ae809ac..ac284b3 100644 --- a/app/Filament/Imports/MachineImporter.php +++ b/app/Filament/Imports/MachineImporter.php @@ -21,36 +21,36 @@ class MachineImporter extends Importer return [ ImportColumn::make('name') ->requiredMapping() - ->exampleHeader('Machine Name') + ->exampleHeader('DESCRIPTION') ->example(['1600251']) - ->label('Machine Name') + ->label('DESCRIPTION') ->rules(['required']), ImportColumn::make('work_center') ->requiredMapping() - ->exampleHeader('Work Center') + ->exampleHeader('WORK CENTER') ->example('RMGCE001') - ->label('Work Center') + ->label('WORK CENTER') ->rules(['required']), ImportColumn::make('workGroupMaster') ->requiredMapping() ->relationship(resolveUsing: 'name') - ->exampleHeader('Work Group Center') + ->exampleHeader('GROUP WORK CENTER') ->example(['RMGCGABC']) - ->label('Work Group Center') + ->label('GROUP WORK CENTER') ->rules(['required']), ImportColumn::make('line') ->requiredMapping() ->relationship(resolveUsing: 'name') - ->exampleHeader('Line Name') + ->exampleHeader('LINE NAME') ->example(['4 inch pump line']) - ->label('Line Name') + ->label('LINE NAME') ->rules(['required']), ImportColumn::make('plant') ->requiredMapping() ->relationship(resolveUsing: 'code') - ->exampleHeader('Plant Code') + ->exampleHeader('PLANT CODE') ->example(['1000']) - ->label('Plant Code') + ->label('PLANT CODE') ->rules(['required']), ]; } @@ -61,18 +61,27 @@ class MachineImporter extends Importer $plantCod = $this->data['plant']; $plant = null; $line = null; + $lineNam = $this->data['line']; $machine = $this->data['name']; $workCenter = $this->data['work_center']; - $groupWorkCenter = WorkGroupMaster::where('name', $this->data['workGroupMaster'])->first(); + $workGroupCenter = $this->data['workGroupMaster']; if (Str::length($plantCod) < 4 || ! is_numeric($plantCod) || ! preg_match('/^[1-9]\d{3,}$/', $plantCod)) { $warnMsg[] = 'Invalid plant code found'; + } elseif (Str::length($lineNam) <= 0) { + $warnMsg[] = "Line name can't be empty!"; + } elseif (Str::length($machine) <= 0) { + $warnMsg[] = "Description can't be empty!"; + } elseif (Str::length($workCenter) <= 0) { + $warnMsg[] = "Work center can't be empty!"; + } elseif (Str::length($workGroupCenter) <= 0) { + $warnMsg[] = "Group work center can't be empty!"; } else { $plant = Plant::where('code', $plantCod)->first(); if (! $plant) { $warnMsg[] = 'Plant not found!'; } else { - $groupWorkCenter = WorkGroupMaster::where('name', $this->data['workGroupMaster'])->where('plant_id', $plant->id)->first(); - $line = Line::where('name', $this->data['line'])->where('plant_id', $plant->id)->first(); + $groupWorkCenter = WorkGroupMaster::where('name', $workGroupCenter)->where('plant_id', $plant->id)->first(); + $line = Line::where('name', $lineNam)->where('plant_id', $plant->id)->first(); if ($line) { $grpWrkCnr = $line->no_of_operation; if (! $grpWrkCnr || $grpWrkCnr < 1) {// Str::length($grpWrkCnr) < 1) @@ -106,10 +115,6 @@ class MachineImporter extends Importer } } - if (Str::length($machine) <= 0) { - $warnMsg[] = 'Machine name not found!'; - } - if (! empty($warnMsg)) { throw new RowImportFailedException(implode(', ', $warnMsg)); } diff --git a/app/Filament/Resources/MachineResource.php b/app/Filament/Resources/MachineResource.php index b947937..dd2cbab 100644 --- a/app/Filament/Resources/MachineResource.php +++ b/app/Filament/Resources/MachineResource.php @@ -11,6 +11,7 @@ use App\Models\Plant; use App\Models\WorkGroupMaster; use Filament\Facades\Filament; use Filament\Forms; +use Filament\Forms\Components\Section; use Filament\Forms\Form; use Filament\Forms\Get; use Filament\Resources\Resource; @@ -37,147 +38,156 @@ class MachineResource extends Resource { return $form ->schema([ - Forms\Components\Select::make('plant_id') - ->label('Plant') - ->relationship('plant', 'name') - ->required() - ->reactive() - ->options(function (callable $get) { - $userHas = Filament::auth()->user()->plant_id; + Section::make('') + ->schema([ + Forms\Components\Select::make('plant_id') + ->label('Plant Name') + ->relationship('plant', 'name') + ->required() + ->columnSpan(1) + ->reactive() + ->options(function (callable $get) { + $userHas = Filament::auth()->user()->plant_id; - return ($userHas && strlen($userHas) > 0) ? Plant::where('id', $userHas)->pluck('name', 'id')->toArray() : Plant::orderBy('code')->pluck('name', 'id')->toArray(); - }) - ->default(function () { - return optional(Machine::latest()->first())->plant_id; - }) - ->disabled(fn (Get $get) => ! empty($get('id'))) - ->afterStateUpdated(function ($state, callable $set, callable $get) { - $plantId = $get('plant_id'); - if (! $plantId) { - $set('mPlantError', 'Please select a plant first.'); - $set('line_id', null); - $set('work_group_master_id', null); + return ($userHas && strlen($userHas) > 0) ? Plant::where('id', $userHas)->pluck('name', 'id')->toArray() : Plant::orderBy('code')->pluck('name', 'id')->toArray(); + }) + ->default(function () { + return optional(Machine::latest()->first())->plant_id; + }) + ->disabled(fn (Get $get) => ! empty($get('id'))) + ->afterStateUpdated(function ($state, callable $set, callable $get) { + $plantId = $get('plant_id'); + if (! $plantId) { + $set('mPlantError', 'Please select a plant first.'); + $set('line_id', null); + $set('work_group_master_id', null); - return; - } else { - $set('mPlantError', null); - } - }) - ->extraAttributes(fn ($get) => [ - 'class' => $get('mPlantError') ? 'border-red-500' : '', + return; + } else { + $set('mPlantError', null); + } + }) + ->extraAttributes(fn ($get) => [ + 'class' => $get('mPlantError') ? 'border-red-500' : '', + ]) + ->hint(fn ($get) => $get('mPlantError') ? $get('mPlantError') : null) + ->hintColor('danger'), + Forms\Components\Select::make('line_id') + ->label('Line Name') + ->relationship('line', 'name') + ->required() + ->columnSpan(1) + ->reactive() + ->options(function (callable $get) { + if (! $get('plant_id')) { + return []; + } + + return Line::where('plant_id', $get('plant_id'))->where('no_of_operation', '>', 0)->pluck('name', 'id')->toArray(); + }) + ->default(function () { + return optional(Machine::latest()->first())->line_id; + }) + ->disabled(fn (Get $get) => ! empty($get('id'))) + ->afterStateUpdated(function ($state, callable $set, callable $get) { + $lineId = $get('line_id'); + if (! $lineId) { + $set('mLineError', 'Please select a line first.'); + $set('work_group_master_id', null); + + return; + } else { + // $grpWrkCnr = Line::find($lineId)->group_work_center; + // if (!$grpWrkCnr || Str::length($grpWrkCnr) < 1) + // { + // $set('mLineError', 'Please select a group work center line.'); + // $set('line_id', null); + // return; + // } + $set('mLineError', null); + } + }) + ->extraAttributes(fn ($get) => [ + 'class' => $get('mLineError') ? 'border-red-500' : '', + ]) + ->hint(fn ($get) => $get('mLineError') ? $get('mLineError') : null) + ->hintColor('danger'), + Forms\Components\Select::make('work_group_master_id') + ->label('Group Work Center') + ->relationship('workGroupMaster', 'name') + ->required() + ->columnSpan(1) + ->reactive() + ->options(function (callable $get) { + if (! $get('plant_id') || ! $get('line_id')) { + return []; + } + + $line = Line::find($get('line_id')); + $workGroupIds = []; + for ($i = 1; $i <= $line->no_of_operation; $i++) { + $column = "work_group{$i}_id"; + if (! empty($line->$column)) { + $workGroupIds[] = $line->$column; + } + } + + return WorkGroupMaster::where('plant_id', $get('plant_id'))->whereIn('id', $workGroupIds)->pluck('name', 'id')->toArray(); + }) + ->default(function () { + return optional(Machine::latest()->first())->work_group_master_id; + }) + ->disabled(fn (Get $get) => ! empty($get('id'))) + ->afterStateUpdated(function ($state, callable $set, callable $get) { + $lineId = $get('line_id'); + if (! $lineId) { + $set('mGroupWorkError', 'Please select a line first.'); + + return; + } else { + // $grpWrkCnr = Line::find($lineId)->group_work_center; + // if (!$grpWrkCnr || Str::length($grpWrkCnr) < 1) + // { + // $set('mGroupWorkError', 'Please select a group work center line.'); + // $set('line_id', null); + // return; + // } + $set('mGroupWorkError', null); + } + }) + ->extraAttributes(fn ($get) => [ + 'class' => $get('mGroupWorkError') ? 'border-red-500' : '', + ]) + ->hint(fn ($get) => $get('mGroupWorkError') ? $get('mGroupWorkError') : null) + ->hintColor('danger'), + Forms\Components\TextInput::make('work_center') + ->label('Work Center') + ->minLength(6) + ->placeholder('Scan the valid Work Center') + ->columnSpan(1) + ->required() + ->rule(function (callable $get) { + return Rule::unique('machines', 'work_center') + ->where('plant_id', $get('plant_id')) + ->ignore($get('id')); // Ignore current record during updates + }), + Forms\Components\TextInput::make('name') + ->label('Description') + ->minLength(5) + ->placeholder('Scan the valid Description') + ->columnSpan(['default' => 1, 'sm' => 2]) + ->required() + ->rule(function (callable $get) { + return Rule::unique('machines', 'name') + // ->where('line_id', $get('line_id')) + ->where('plant_id', $get('plant_id')) + ->ignore($get('id')); // Ignore current record during updates + }), + Forms\Components\TextInput::make('id') + ->hidden() + ->readOnly(), ]) - ->hint(fn ($get) => $get('mPlantError') ? $get('mPlantError') : null) - ->hintColor('danger'), - Forms\Components\Select::make('line_id') - ->label('Line') - ->relationship('line', 'name') - ->required() - ->reactive() - ->options(function (callable $get) { - if (! $get('plant_id')) { - return []; - } - - return Line::where('plant_id', $get('plant_id'))->where('no_of_operation', '>', 0)->pluck('name', 'id')->toArray(); - }) - ->default(function () { - return optional(Machine::latest()->first())->line_id; - }) - ->disabled(fn (Get $get) => ! empty($get('id'))) - ->afterStateUpdated(function ($state, callable $set, callable $get) { - $lineId = $get('line_id'); - if (! $lineId) { - $set('mLineError', 'Please select a line first.'); - $set('work_group_master_id', null); - - return; - } else { - // $grpWrkCnr = Line::find($lineId)->group_work_center; - // if (!$grpWrkCnr || Str::length($grpWrkCnr) < 1) - // { - // $set('mLineError', 'Please select a group work center line.'); - // $set('line_id', null); - // return; - // } - $set('mLineError', null); - } - }) - ->extraAttributes(fn ($get) => [ - 'class' => $get('mLineError') ? 'border-red-500' : '', - ]) - ->hint(fn ($get) => $get('mLineError') ? $get('mLineError') : null) - ->hintColor('danger'), - Forms\Components\Select::make('work_group_master_id') - ->label('Group Work Center') - ->relationship('workGroupMaster', 'name') - ->required() - ->reactive() - ->options(function (callable $get) { - if (! $get('plant_id') || ! $get('line_id')) { - return []; - } - - $line = Line::find($get('line_id')); - $workGroupIds = []; - for ($i = 1; $i <= $line->no_of_operation; $i++) { - $column = "work_group{$i}_id"; - if (! empty($line->$column)) { - $workGroupIds[] = $line->$column; - } - } - - return WorkGroupMaster::where('plant_id', $get('plant_id'))->whereIn('id', $workGroupIds)->pluck('name', 'id')->toArray(); - }) - ->default(function () { - return optional(Machine::latest()->first())->work_group_master_id; - }) - ->disabled(fn (Get $get) => ! empty($get('id'))) - ->afterStateUpdated(function ($state, callable $set, callable $get) { - $lineId = $get('line_id'); - if (! $lineId) { - $set('mGroupWorkError', 'Please select a line first.'); - - return; - } else { - // $grpWrkCnr = Line::find($lineId)->group_work_center; - // if (!$grpWrkCnr || Str::length($grpWrkCnr) < 1) - // { - // $set('mGroupWorkError', 'Please select a group work center line.'); - // $set('line_id', null); - // return; - // } - $set('mGroupWorkError', null); - } - }) - ->extraAttributes(fn ($get) => [ - 'class' => $get('mGroupWorkError') ? 'border-red-500' : '', - ]) - ->hint(fn ($get) => $get('mGroupWorkError') ? $get('mGroupWorkError') : null) - ->hintColor('danger'), - Forms\Components\TextInput::make('name') - ->label('Name') - ->minLength(5) - ->placeholder('Scan the valid Machine Name') - ->required() - ->rule(function (callable $get) { - return Rule::unique('machines', 'name') - // ->where('line_id', $get('line_id')) - ->where('plant_id', $get('plant_id')) - ->ignore($get('id')); // Ignore current record during updates - }), - Forms\Components\TextInput::make('work_center') - ->label('Work Center') - ->minLength(6) - ->placeholder('Scan the valid Work Center') - ->required() - ->rule(function (callable $get) { - return Rule::unique('machines', 'work_center') - ->where('plant_id', $get('plant_id')) - ->ignore($get('id')); // Ignore current record during updates - }), - Forms\Components\TextInput::make('id') - ->hidden() - ->readOnly(), + ->columns(['default' => 1, 'sm' => 2]), ]); } @@ -195,15 +205,15 @@ class MachineResource extends Resource return ($currentPage - 1) * $perPage + $rowLoop->iteration; }), Tables\Columns\TextColumn::make('plant.name') - ->label('Plant') + ->label('Plant Name') ->alignCenter() ->searchable(), Tables\Columns\TextColumn::make('line.name') - ->label('Line') + ->label('Line Name') ->alignCenter() ->searchable(), Tables\Columns\TextColumn::make('name') - ->label('Name') + ->label('Description') ->alignCenter() ->searchable(), Tables\Columns\TextColumn::make('work_center') @@ -212,7 +222,7 @@ class MachineResource extends Resource ->searchable() ->sortable(), Tables\Columns\TextColumn::make('workGroupMaster.name') - ->label('Work Group Center') + ->label('Group Work Center') ->alignCenter() ->searchable() ->sortable(), diff --git a/app/Filament/Resources/WorkGroupMasterResource.php b/app/Filament/Resources/WorkGroupMasterResource.php index ebe145a..c95dfeb 100644 --- a/app/Filament/Resources/WorkGroupMasterResource.php +++ b/app/Filament/Resources/WorkGroupMasterResource.php @@ -97,6 +97,9 @@ class WorkGroupMasterResource extends Resource ->columnSpan(['default' => 1, 'sm' => 3]), Forms\Components\Hidden::make('created_by') ->default(Filament::auth()->user()?->name), + Forms\Components\TextInput::make('id') + ->hidden() + ->readOnly(), ]) ->columns(['default' => 1, 'sm' => 3]), ]);