From 095816881c0710058f29de21aeb25a1a70e3afe0 Mon Sep 17 00:00:00 2001 From: dhanabalan Date: Sun, 23 Aug 2026 18:48:04 +0530 Subject: [PATCH 1/6] Added laser winded serial validation error post api --- routes/api.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/routes/api.php b/routes/api.php index 7daf149..b65e45c 100644 --- a/routes/api.php +++ b/routes/api.php @@ -204,6 +204,10 @@ Route::post('laser/characteristics/data', [CharacteristicsController::class, 'st Route::post('laser/characteristics/status', [CharacteristicsController::class, 'storeLaserStatus']); +// ..Winded serial (auto or manual) + +Route::post('laser/winded-serial/status', [CharacteristicsController::class, 'storeLaserWindStatus']); + // ..Request Characteristics Route::post('laser/characteristics/change', [CharacteristicsController::class, 'storeLaserRequestChar']); -- 2.49.1 From 74b48750e0b423d75407b57a79cb3c1721190d4a Mon Sep 17 00:00:00 2001 From: dhanabalan Date: Sun, 23 Aug 2026 18:48:58 +0530 Subject: [PATCH 2/6] Added laser winded serial validation error migration file --- ..._winded_serial_validation_errors_table.php | 54 +++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 database/migrations/2026_08_20_093257_create_winded_serial_validation_errors_table.php diff --git a/database/migrations/2026_08_20_093257_create_winded_serial_validation_errors_table.php b/database/migrations/2026_08_20_093257_create_winded_serial_validation_errors_table.php new file mode 100644 index 0000000..12251c9 --- /dev/null +++ b/database/migrations/2026_08_20_093257_create_winded_serial_validation_errors_table.php @@ -0,0 +1,54 @@ +id(); + // $table->timestamps(); + // }); + $sql = <<<'SQL' + CREATE TABLE winded_serial_validation_errors ( + id BIGINT GENERATED always AS IDENTITY PRIMARY KEY, + plant_id BIGINT NOT NULL, + item_id BIGINT NOT NULL, + machine_id BIGINT NOT NULL, + machine_name TEXT DEFAULT NULL, + aufnr TEXT DEFAULT NULL, + gernr TEXT DEFAULT NULL, + model_type TEXT DEFAULT NULL, + winded_status TEXT DEFAULT NULL, + winded_qr TEXT DEFAULT NULL, + winded_serial_number TEXT DEFAULT NULL, + winded_code TEXT DEFAULT NULL, + + created_at TIMESTAMP NOT NULL DEFAULT NOW(), + updated_at TIMESTAMP NOT NULL DEFAULT NOW(), + created_by TEXT DEFAULT NULL, + updated_by TEXT DEFAULT NULL, + deleted_at TIMESTAMP, + + FOREIGN KEY (plant_id) REFERENCES plants (id), + FOREIGN KEY (item_id) REFERENCES items (id), + FOREIGN KEY (machine_id) REFERENCES machines (id) + ); + SQL; + + DB::statement($sql); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('winded_serial_validation_errors'); + } +}; -- 2.49.1 From 3ad1727dcdf5e8eb1bfcdb9a2cc350de8792de00 Mon Sep 17 00:00:00 2001 From: dhanabalan Date: Sun, 23 Aug 2026 18:50:07 +0530 Subject: [PATCH 3/6] Added laser winded serial validation error policies and model file --- app/Models/WindedSerialValidationError.php | 45 ++++++++ .../WindedSerialValidationErrorPolicy.php | 105 ++++++++++++++++++ 2 files changed, 150 insertions(+) create mode 100644 app/Models/WindedSerialValidationError.php create mode 100644 app/Policies/WindedSerialValidationErrorPolicy.php diff --git a/app/Models/WindedSerialValidationError.php b/app/Models/WindedSerialValidationError.php new file mode 100644 index 0000000..d72615c --- /dev/null +++ b/app/Models/WindedSerialValidationError.php @@ -0,0 +1,45 @@ +belongsTo(Plant::class); + } + + public function item() + { + return $this->belongsTo(Item::class, 'item_id', 'id'); + } + + public function machine(): BelongsTo + { + return $this->belongsTo(Machine::class); + } +} diff --git a/app/Policies/WindedSerialValidationErrorPolicy.php b/app/Policies/WindedSerialValidationErrorPolicy.php new file mode 100644 index 0000000..8d22790 --- /dev/null +++ b/app/Policies/WindedSerialValidationErrorPolicy.php @@ -0,0 +1,105 @@ +checkPermissionTo('view-any WindedSerialValidationError'); + } + + /** + * Determine whether the user can view the model. + */ + public function view(User $user, WindedSerialValidationError $windedserialvalidationerror): bool + { + return $user->checkPermissionTo('view WindedSerialValidationError'); + } + + /** + * Determine whether the user can create models. + */ + public function create(User $user): bool + { + return $user->checkPermissionTo('create WindedSerialValidationError'); + } + + /** + * Determine whether the user can update the model. + */ + public function update(User $user, WindedSerialValidationError $windedserialvalidationerror): bool + { + return $user->checkPermissionTo('update WindedSerialValidationError'); + } + + /** + * Determine whether the user can delete the model. + */ + public function delete(User $user, WindedSerialValidationError $windedserialvalidationerror): bool + { + return $user->checkPermissionTo('delete WindedSerialValidationError'); + } + + /** + * Determine whether the user can delete any models. + */ + public function deleteAny(User $user): bool + { + return $user->checkPermissionTo('delete-any WindedSerialValidationError'); + } + + /** + * Determine whether the user can restore the model. + */ + public function restore(User $user, WindedSerialValidationError $windedserialvalidationerror): bool + { + return $user->checkPermissionTo('restore WindedSerialValidationError'); + } + + /** + * Determine whether the user can restore any models. + */ + public function restoreAny(User $user): bool + { + return $user->checkPermissionTo('restore-any WindedSerialValidationError'); + } + + /** + * Determine whether the user can replicate the model. + */ + public function replicate(User $user, WindedSerialValidationError $windedserialvalidationerror): bool + { + return $user->checkPermissionTo('replicate WindedSerialValidationError'); + } + + /** + * Determine whether the user can reorder the models. + */ + public function reorder(User $user): bool + { + return $user->checkPermissionTo('reorder WindedSerialValidationError'); + } + + /** + * Determine whether the user can permanently delete the model. + */ + public function forceDelete(User $user, WindedSerialValidationError $windedserialvalidationerror): bool + { + return $user->checkPermissionTo('force-delete WindedSerialValidationError'); + } + + /** + * Determine whether the user can permanently delete any models. + */ + public function forceDeleteAny(User $user): bool + { + return $user->checkPermissionTo('force-delete-any WindedSerialValidationError'); + } +} -- 2.49.1 From 8705eabf362f82d6ad4df0da14c992d7a0ac1ad8 Mon Sep 17 00:00:00 2001 From: dhanabalan Date: Sun, 23 Aug 2026 18:54:25 +0530 Subject: [PATCH 4/6] Added laser winded serial validation error model files for hasMany relations --- app/Models/Item.php | 5 +++++ app/Models/Machine.php | 5 +++++ app/Models/Plant.php | 8 ++++---- 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/app/Models/Item.php b/app/Models/Item.php index bed95e2..5e80092 100644 --- a/app/Models/Item.php +++ b/app/Models/Item.php @@ -74,6 +74,11 @@ class Item extends Model return $this->hasMany(ClassCharacteristic::class, 'item_id', 'id'); } + public function windedSerialValidationErrors() + { + return $this->hasMany(WindedSerialValidationError::class, 'item_id', 'id'); + } + public function requestCharacteristics() { return $this->hasMany(RequestCharacteristic::class, 'item_id', 'id'); diff --git a/app/Models/Machine.php b/app/Models/Machine.php index 7263328..4caf091 100644 --- a/app/Models/Machine.php +++ b/app/Models/Machine.php @@ -48,6 +48,11 @@ class Machine extends Model return $this->hasMany(ClassCharacteristic::class, 'machine_id', 'id'); } + public function windedSerialValidationErrors() + { + return $this->hasMany(WindedSerialValidationError::class, 'machine_id', 'id'); + } + public function requestCharacteristics() { return $this->hasMany(RequestCharacteristic::class, 'machine_id', 'id'); diff --git a/app/Models/Plant.php b/app/Models/Plant.php index cdc6593..dbc57eb 100644 --- a/app/Models/Plant.php +++ b/app/Models/Plant.php @@ -164,10 +164,10 @@ class Plant extends Model // return $this->hasMany(ModelMaster::class, 'plant_id', 'id'); // } - // public function windedSerialValidationErrors() - // { - // return $this->hasMany(WindedSerialValidationError::class, 'plant_id', 'id'); - // } + public function windedSerialValidationErrors() + { + return $this->hasMany(WindedSerialValidationError::class, 'plant_id', 'id'); + } public function requestCharacteristics() { -- 2.49.1 From c627195daa150f32c430b397f2be2e5d54d67607 Mon Sep 17 00:00:00 2001 From: dhanabalan Date: Sun, 23 Aug 2026 18:58:27 +0530 Subject: [PATCH 5/6] Added laser winded serial validation error resource files and exporter file --- .../WindedSerialValidationErrorExporter.php | 80 ++ .../WindedSerialValidationErrorResource.php | 712 ++++++++++++++++++ .../CreateWindedSerialValidationError.php | 12 + .../Pages/EditWindedSerialValidationError.php | 22 + .../ListWindedSerialValidationErrors.php | 19 + .../Pages/ViewWindedSerialValidationError.php | 19 + 6 files changed, 864 insertions(+) create mode 100644 app/Filament/Exports/WindedSerialValidationErrorExporter.php create mode 100644 app/Filament/Resources/WindedSerialValidationErrorResource.php create mode 100644 app/Filament/Resources/WindedSerialValidationErrorResource/Pages/CreateWindedSerialValidationError.php create mode 100644 app/Filament/Resources/WindedSerialValidationErrorResource/Pages/EditWindedSerialValidationError.php create mode 100644 app/Filament/Resources/WindedSerialValidationErrorResource/Pages/ListWindedSerialValidationErrors.php create mode 100644 app/Filament/Resources/WindedSerialValidationErrorResource/Pages/ViewWindedSerialValidationError.php diff --git a/app/Filament/Exports/WindedSerialValidationErrorExporter.php b/app/Filament/Exports/WindedSerialValidationErrorExporter.php new file mode 100644 index 0000000..022a107 --- /dev/null +++ b/app/Filament/Exports/WindedSerialValidationErrorExporter.php @@ -0,0 +1,80 @@ +label('NO') + ->state(function ($record) use (&$rowNumber) { + // Increment and return the row number + return ++$rowNumber; + }), + ExportColumn::make('plant.code') + ->label('PLANT CODE'), + ExportColumn::make('item.code') + ->label('ITEM CODE'), + ExportColumn::make('item.description') + ->label('DESCRIPTION') + ->enabledByDefault(false), + ExportColumn::make('item.category') + ->label('CATEGORY') + ->enabledByDefault(false), + ExportColumn::make('item.uom') + ->label('UNIT OF MEASURE') + ->enabledByDefault(false), + ExportColumn::make('machine.work_center') + ->label('WORK CENTER'), + ExportColumn::make('machine_name') + ->label('MACHINE NAME'), + ExportColumn::make('aufnr') + ->label('AUFNR'), + ExportColumn::make('gernr') + ->label('GERNR'), + ExportColumn::make('model_type') + ->label('MODEL TYPE'), + ExportColumn::make('winded_status') + ->label('WINDED STATUS'), + ExportColumn::make('winded_qr') + ->label('WINDED QR'), + ExportColumn::make('winded_code') + ->label('WINDED CODE'), + ExportColumn::make('winded_serial_number') + ->label('WINDED SERIAL NUMBER'), + ExportColumn::make('created_at') + ->label('CREATED AT'), + ExportColumn::make('created_by') + ->label('CREATED BY'), + ExportColumn::make('updated_at') + ->label('UPDATED AT') + ->enabledByDefault(true), + ExportColumn::make('updated_by') + ->label('UPDATED BY') + ->enabledByDefault(true), + ExportColumn::make('deleted_at') + ->label('DELETED AT') + ->enabledByDefault(false), + ]; + } + + public static function getCompletedNotificationBody(Export $export): string + { + $body = 'Your winded serial validation error export has completed and '.number_format($export->successful_rows).' '.str('row')->plural($export->successful_rows).' exported.'; + + if ($failedRowsCount = $export->getFailedRowsCount()) { + $body .= ' '.number_format($failedRowsCount).' '.str('row')->plural($failedRowsCount).' failed to export.'; + } + + return $body; + } +} diff --git a/app/Filament/Resources/WindedSerialValidationErrorResource.php b/app/Filament/Resources/WindedSerialValidationErrorResource.php new file mode 100644 index 0000000..481cfa4 --- /dev/null +++ b/app/Filament/Resources/WindedSerialValidationErrorResource.php @@ -0,0 +1,712 @@ +schema([ + Section::make('') + ->schema([ + Forms\Components\Select::make('plant_id') + ->label('Plant Name') + ->relationship('plant', 'name') + ->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 () { + $userHas = Filament::auth()->user()->plant_id; + + return ($userHas && strlen($userHas) > 0) ? $userHas : optional(WindedSerialValidationError::latest()->first())->plant_id ?? null; + }) + ->columnSpan(1) // (['default' => 1, 'sm' => 2]) + ->required() + ->reactive() + ->searchable() + ->disabled(fn (Get $get) => ! empty($get('id'))) + ->afterStateUpdated(function ($state, callable $set, callable $get) { + $plantId = $get('plant_id'); + $set('item_id', null); + $set('machine_id', null); + + if (! $plantId) { + $set('pTeError', 'Please select a plant first.'); + + return; + } else { + $set('pTeError', null); + } + + $set('updated_by', Filament::auth()->user()?->name); + }) + ->extraAttributes(fn ($get) => [ + 'class' => $get('pTeError') ? 'border-red-500' : '', + ]) + ->hint(fn ($get) => $get('pTeError') ? $get('pTeError') : null) + ->hintColor('danger'), + Forms\Components\Select::make('item_id') + ->label('Item Code') + // ->relationship('item', 'code') + ->options(function (callable $get) { + $plantId = $get('plant_id'); + if (! $plantId) { + return []; + } + + return Item::where('plant_id', $plantId)->orderBy('code')->pluck('code', 'id')->toArray(); + }) + ->default(function (callable $get) { + $plantId = $get('plant_id'); + // $itemId = $get('item_id'); + if (! $plantId) { + return null; + } + + return WindedSerialValidationError::where('plant_id', $plantId)->latest()->first()->item_id ?? null; + }) + ->columnSpan(1) + ->required() + ->reactive() + ->searchable() + ->disabled(fn (Get $get) => ! empty($get('id'))) + ->afterStateUpdated(function (callable $set, callable $get, ?string $state) { + $set('updated_by', Filament::auth()->user()?->name); + }), + Forms\Components\Select::make('machine_id') + ->label('WORK CENTER') + // ->relationship('machine', 'work_center') + ->options(function (callable $get) { + $plantId = $get('plant_id'); + if (! $plantId) { + return []; + } + + return Machine::where('plant_id', $plantId)->orderBy('work_center')->pluck('work_center', 'id')->toArray(); + }) + ->default(function (callable $get) { + $plantId = $get('plant_id'); + if (! $plantId) { + return null; + } + + return WindedSerialValidationError::where('plant_id', $plantId)->latest()->first()->machine_id ?? null; + }) + ->columnSpan(1) + ->required() + ->reactive() + ->searchable() + ->disabled(fn (Get $get) => ! empty($get('id'))) + ->afterStateUpdated(function (callable $set) { + $set('updated_by', Filament::auth()->user()?->name); + }), + Forms\Components\TextInput::make('machine_name') + ->label('Machine Name') + ->placeholder('Scan the Machine Name') + ->columnSpan(1) + ->required() + ->reactive() + ->afterStateUpdated(function ($state, callable $set) { + $set('updated_by', Filament::auth()->user()?->name); + }), + Forms\Components\TextInput::make('aufnr') + ->label('AUFNR') + ->placeholder('Scan the AUFNR') + ->columnSpan(1) + ->required() + ->reactive() + ->afterStateUpdated(function ($state, callable $set) { + $set('updated_by', Filament::auth()->user()?->name); + }), + Forms\Components\TextInput::make('gernr') + ->label('GERNR') + ->placeholder('Scan the GERNR') + ->columnSpan(1) + ->required() + ->reactive() + ->afterStateUpdated(function ($state, callable $set) { + $set('updated_by', Filament::auth()->user()?->name); + }), + Forms\Components\TextInput::make('model_type') + ->label('Model Type') + ->placeholder('Scan the Model Type') + ->columnSpan(1) + ->required() + ->reactive() + ->afterStateUpdated(function ($state, callable $set) { + $set('updated_by', Filament::auth()->user()?->name); + }), + Forms\Components\TextInput::make('winded_qr') + ->label('Winded QR') + ->placeholder('Scan the Winded QR') + ->columnSpan(1) + ->reactive() + ->afterStateUpdated(function ($state, callable $set) { + $set('updated_by', Filament::auth()->user()?->name); + }), + Forms\Components\TextInput::make('winded_code') + ->label('Winded Code') + ->placeholder('Scan the Winded Code') + ->columnSpan(1) + ->reactive() + ->afterStateUpdated(function ($state, callable $set) { + $set('updated_by', Filament::auth()->user()?->name); + }), + Forms\Components\TextInput::make('winded_serial_number') + ->label('Winded Serial Number') + ->placeholder('Scan the Winded Serial Number') + ->columnSpan(1) + ->reactive() + ->afterStateUpdated(function ($state, callable $set) { + $set('updated_by', Filament::auth()->user()?->name); + }), + Forms\Components\TextInput::make('winded_status') + ->label('Winded Status') + ->placeholder('Scan the Winded Status') + ->columnSpan(1) + ->required() + ->reactive() + ->afterStateUpdated(function ($state, callable $set) { + $set('updated_by', Filament::auth()->user()?->name); + }), + Forms\Components\TextInput::make('created_by') + ->default(fn () => Filament::auth()->user()?->name) + ->readOnly() + ->columnSpan(1) + ->required(), + Forms\Components\Hidden::make('updated_by') + ->default(fn () => Filament::auth()->user()?->name) + ->columnSpan(1) + ->required(), + Forms\Components\TextInput::make('id') + ->hidden() + ->columnSpan(1) + ->readOnly(), + ]) + ->columns(['default' => 1, 'sm' => 2]), + ]); + } + + public static function table(Table $table): Table + { + return $table + ->columns([ + Tables\Columns\TextColumn::make('No.') + ->label('NO') + ->alignCenter() + ->getStateUsing(function ($record, $livewire, $column, $rowLoop) { + $paginator = $livewire->getTableRecords(); + $perPage = method_exists($paginator, 'perPage') ? $paginator->perPage() : 10; + $currentPage = method_exists($paginator, 'currentPage') ? $paginator->currentPage() : 1; + + return ($currentPage - 1) * $perPage + $rowLoop->iteration; + }), + Tables\Columns\TextColumn::make('plant.name') + ->label('Plant Name') + ->alignCenter() + ->searchable() + ->sortable(), + Tables\Columns\TextColumn::make('item.code') + ->label('Item Code') + ->alignCenter() + ->searchable() + ->sortable(), + Tables\Columns\TextColumn::make('item.description') + ->label('Description') + ->searchable() + ->alignCenter() + ->sortable() + ->toggleable(isToggledHiddenByDefault: true), + Tables\Columns\TextColumn::make('item.category') + ->label('Category') + ->default('-') + ->searchable() + ->alignCenter() + ->sortable() + ->toggleable(isToggledHiddenByDefault: true), + Tables\Columns\TextColumn::make('item.uom') + ->label('Unit of Measure') + ->default('-') + ->searchable() + ->alignCenter() + ->sortable() + ->toggleable(isToggledHiddenByDefault: true), + Tables\Columns\TextColumn::make('machine.work_center') + ->label('Work Center') + ->alignCenter() + ->searchable() + ->sortable(), + Tables\Columns\TextColumn::make('machine_name') + ->label('Machine Name') + ->alignCenter() + ->searchable() + ->sortable(), + Tables\Columns\TextColumn::make('aufnr') + ->label('AUFNR') + ->alignCenter() + ->searchable() + ->sortable(), + Tables\Columns\TextColumn::make('gernr') + ->label('GERNR') + ->alignCenter() + ->searchable() + ->sortable(), + Tables\Columns\TextColumn::make('model_type') + ->label('Model Type') + ->alignCenter() + ->searchable() + ->sortable(), + Tables\Columns\TextColumn::make('winded_status') + ->label('Winded Status') + ->alignCenter() + ->searchable() + ->sortable(), + Tables\Columns\TextColumn::make('winded_qr') + ->label('Winded QR') + ->alignCenter() + ->searchable() + ->sortable(), + Tables\Columns\TextColumn::make('winded_code') + ->label('Winded Code') + ->alignCenter() + ->searchable() + ->sortable(), + Tables\Columns\TextColumn::make('winded_serial_number') + ->label('Winded Serial Number') + ->alignCenter() + ->searchable() + ->sortable(), + Tables\Columns\TextColumn::make('created_at') + ->label('Created At') + ->alignCenter() + ->dateTime() + ->sortable(), + Tables\Columns\TextColumn::make('created_by') + ->label('Created By') + ->alignCenter(), + Tables\Columns\TextColumn::make('updated_at') + ->label('Updated At') + ->alignCenter() + ->dateTime() + ->sortable(), + Tables\Columns\TextColumn::make('updated_by') + ->label('Updated By') + ->alignCenter(), + Tables\Columns\TextColumn::make('deleted_at') + ->label('Deleted At') + ->alignCenter() + ->dateTime() + ->sortable() + ->toggleable(isToggledHiddenByDefault: true), + ]) + ->filters([ + Tables\Filters\TrashedFilter::make(), + Filter::make('advanced_filters') + ->label('Advanced Filters') + ->form([ + Select::make('Plant') + ->label('Search by Plant Name') + ->nullable() + ->searchable() + ->reactive() + ->options(function (callable $get) { + $userHas = Filament::auth()->user()->plant_id; + + if ($userHas && strlen($userHas) > 0) { + return Plant::where('id', $userHas)->pluck('name', 'id')->toArray(); + } else { + return Plant::whereHas('windedSerialValidationErrors', function ($query) { + $query->whereNotNull('id'); + })->orderBy('code')->pluck('name', 'id'); + } + + // return ($userHas && strlen($userHas) > 0) ? Plant::where('id', $userHas)->pluck('name', 'id')->toArray() : Plant::orderBy('code')->pluck('name', 'id')->toArray(); + }) + ->afterStateUpdated(function ($state, callable $set, callable $get): void { + $set('machine', null); + $set('item_id', null); + }), + Select::make('machine') + ->label('Search by Work Center') + ->nullable() + ->searchable() + ->reactive() + ->options(function (callable $get) { + $plantId = $get('Plant'); + + if (empty($plantId)) { + return []; + } + + return Machine::whereHas('windedSerialValidationErrors', function ($query) use ($plantId) { + if ($plantId) { + $query->where('plant_id', $plantId); + } + })->pluck('work_center', 'id'); + }) + ->afterStateUpdated(function ($state, callable $set, callable $get): void { + // $set('item_id', null); + // $set('aufnr', null); + }), + TextInput::make('machine_name') + ->label('Machine Name') + ->placeholder('Enter Machine Name'), + Select::make('item_id') + ->label('Search by Item Code') + ->nullable() + ->searchable() + ->reactive() + ->options(function (callable $get) { + $plantId = $get('Plant'); + + if (empty($plantId)) { + return []; + } + + return Item::whereHas('windedSerialValidationErrors', function ($query) use ($plantId) { + if ($plantId) { + $query->where('plant_id', $plantId); + } + })->pluck('code', 'id'); + }), + TextInput::make('aufnr') + ->label('Job Number') + ->placeholder('Enter Job Number') + ->minlength(7) + ->maxlength(10), + TextInput::make('gernr') + ->label('Serial Number') + ->placeholder('Enter Serial Number') + ->minlength(9), + Select::make('model_type') + ->label('Search by Model Type') + ->nullable() + ->searchable() + ->reactive() + ->options(function (callable $get) { + $plantId = $get('Plant'); + if (! $plantId) { + return WindedSerialValidationError::whereNotNull('model_type')->select('model_type')->distinct()->pluck('model_type', 'model_type'); + } else { + return WindedSerialValidationError::where('plant_id', $plantId)->whereNotNull('model_type')->select('model_type')->distinct()->pluck('model_type', 'model_type'); + } + }), + Select::make('winded_status') + ->label('Search by Winded Status') + ->nullable() + ->searchable() + ->reactive() + ->options(function (callable $get) { + $plantId = $get('Plant'); + if (! $plantId) { + return WindedSerialValidationError::whereNotNull('winded_status')->select('winded_status')->distinct()->pluck('winded_status', 'winded_status'); + } else { + return WindedSerialValidationError::where('plant_id', $plantId)->whereNotNull('winded_status')->select('winded_status')->distinct()->pluck('winded_status', 'winded_status'); + } + }), + TextInput::make('winded_qr') + ->label('Winded QR') + ->placeholder('Enter Winded QR'), + Select::make('winded_code') + ->label('Search by Winded Code') + ->nullable() + ->searchable() + ->reactive() + ->options(function (callable $get) { + $plantId = $get('Plant'); + if (! $plantId) { + return WindedSerialValidationError::whereNotNull('winded_code')->select('winded_code')->distinct()->pluck('winded_code', 'winded_code'); + } else { + return WindedSerialValidationError::where('plant_id', $plantId)->whereNotNull('winded_code')->select('winded_code')->distinct()->pluck('winded_code', 'winded_code'); + } + }), + TextInput::make('winded_serial_number') + ->label('Winded Serial Number') + ->placeholder('Enter Winded Serial Number'), + DateTimePicker::make('created_from') + ->label('Created From') + ->placeholder('Select From DateTime') + ->reactive() + ->native(false), + DateTimePicker::make('created_to') + ->label('Created To') + ->placeholder('Select To DateTime') + ->reactive() + ->native(false), + Select::make('created_by') + ->label('Search by Created By') + ->nullable() + ->searchable() + ->reactive() + ->options(function (callable $get) { + $plantId = $get('Plant'); + if (! $plantId) { + return WindedSerialValidationError::whereNotNull('created_by')->select('created_by')->distinct()->pluck('created_by', 'created_by'); + } else { + return WindedSerialValidationError::where('plant_id', $plantId)->whereNotNull('created_by')->select('created_by')->distinct()->pluck('created_by', 'created_by'); + } + }), + DateTimePicker::make('updated_from') + ->label('Updated From') + ->placeholder('Select From DateTime') + ->reactive() + ->native(false), + DateTimePicker::make('updated_to') + ->label('Updated To') + ->placeholder('Select To DateTime') + ->reactive() + ->native(false), + Select::make('updated_by') + ->label('Search by Updated By') + ->nullable() + ->searchable() + ->reactive() + ->options(function (callable $get) { + $plantId = $get('Plant'); + if (! $plantId) { + return WindedSerialValidationError::whereNotNull('updated_by')->select('updated_by')->distinct()->pluck('updated_by', 'updated_by'); + } else { + return WindedSerialValidationError::where('plant_id', $plantId)->whereNotNull('updated_by')->select('updated_by')->distinct()->pluck('updated_by', 'updated_by'); + } + }), + ]) + ->query(function ($query, array $data) { + if (empty($data['Plant']) && empty($data['machine']) && empty($data['machine_name']) && empty($data['item_id']) && empty($data['aufnr']) && empty($data['gernr']) && empty($data['model_type']) && empty($data['winded_status']) && empty($data['winded_qr']) && empty($data['winded_code']) && empty($data['winded_serial_number']) && empty($data['created_from']) && empty($data['created_to']) && empty($data['created_by']) && empty($data['updated_from']) && empty($data['updated_to']) && empty($data['updated_by'])) { + return $query->whereRaw('1 = 0'); + } + + if (! empty($data['Plant'])) { // $plant = $data['Plant'] ?? null + $query->where('plant_id', $data['Plant']); + } else { + $userHas = Filament::auth()->user()->plant_id; + + if ($userHas && strlen($userHas) > 0) { + return $query->whereRaw('1 = 0'); + } + } + + if (! empty($data['machine'])) { + $query->where('machine_id', $data['machine']); + } + + if (! empty($data['machine_name'])) { + $query->where('machine_name', 'like', '%'.$data['machine_name'].'%'); + } + + if (! empty($data['item_id'])) { + $query->where('item_id', $data['item_id']); + } + + if (! empty($data['aufnr'])) { + $query->where('aufnr', 'like', '%'.$data['aufnr'].'%'); + } + + if (! empty($data['gernr'])) { + $query->where('gernr', 'like', '%'.$data['gernr'].'%'); + } + + if (! empty($data['model_type'])) { + $query->where('model_type', $data['model_type']); + } + + if (! empty($data['winded_status'])) { + $query->where('winded_status', $data['winded_status']); + } + + if (! empty($data['winded_qr'])) { + $query->where('winded_qr', 'like', '%'.$data['winded_qr'].'%'); + } + + if (! empty($data['winded_code'])) { + $query->where('winded_code', $data['winded_code']); + } + + if (! empty($data['winded_serial_number'])) { + $query->where('winded_serial_number', 'like', '%'.$data['winded_serial_number'].'%'); + } + + if (! empty($data['created_from'])) { + $query->where('created_at', '>=', $data['created_from']); + } + + if (! empty($data['created_to'])) { + $query->where('created_at', '<=', $data['created_to']); + } + + if (! empty($data['created_by'])) { + $query->where('created_by', $data['created_by']); + } + + if (! empty($data['updated_from'])) { + $query->where('updated_at', '>=', $data['updated_from']); + } + + if (! empty($data['updated_to'])) { + $query->where('updated_at', '<=', $data['updated_to']); + } + + if (! empty($data['updated_by'])) { + $query->where('updated_by', $data['updated_by']); + } + }) + ->indicateUsing(function (array $data) { + $indicators = []; + + if (! empty($data['Plant'])) { + $indicators[] = 'Plant Name: '.Plant::where('id', $data['Plant'])->value('name'); + } else { + $userHas = Filament::auth()->user()->plant_id; + + if ($userHas && strlen($userHas) > 0) { + return 'Plant: Choose plant to filter records.'; + } + } + + if (! empty($data['machine'])) { + $indicators[] = 'Work Center: '.Machine::where('id', $data['machine'])->value('work_center'); + } + + if (! empty($data['machine_name'])) { + $indicators[] = 'Machine Name: '.$data['machine_name']; + } + + if (! empty($data['item_id'])) { + $indicators[] = 'Item Code: '.Item::where('id', $data['item_id'])->value('code'); + } + + if (! empty($data['aufnr'])) { + $indicators[] = 'Job No: '.$data['aufnr']; + } + + if (! empty($data['gernr'])) { + $indicators[] = 'Serial Number: '.$data['gernr']; + } + + if (! empty($data['model_type'])) { + $indicators[] = 'Model Type: '.$data['model_type']; + } + + if (! empty($data['winded_status'])) { + $indicators[] = 'Winded Status: '.$data['winded_status']; + } + + if (! empty($data['winded_qr'])) { + $indicators[] = 'Winded QR: '.$data['winded_qr']; + } + + if (! empty($data['winded_code'])) { + $indicators[] = 'Winded Code: '.$data['winded_code']; + } + + if (! empty($data['winded_serial_number'])) { + $indicators[] = 'Winded Serial Number: '.$data['winded_serial_number']; + } + + if (! empty($data['created_from'])) { + $indicators[] = 'Created From: '.$data['created_from']; + } + + if (! empty($data['created_to'])) { + $indicators[] = 'Created To: '.$data['created_to']; + } + + if (! empty($data['created_by'])) { + $indicators[] = 'Created By: '.$data['created_by']; + } + + if (! empty($data['updated_from'])) { + $indicators[] = 'Updated From: '.$data['updated_from']; + } + + if (! empty($data['updated_to'])) { + $indicators[] = 'Updated To: '.$data['updated_to']; + } + + if (! empty($data['updated_by'])) { + $indicators[] = 'Updated By: '.$data['updated_by']; + } + + return $indicators; + }), + ]) + ->filtersFormMaxHeight('280px') + ->actions([ + Tables\Actions\ViewAction::make(), + Tables\Actions\EditAction::make(), + ]) + ->bulkActions([ + Tables\Actions\BulkActionGroup::make([ + Tables\Actions\DeleteBulkAction::make(), + Tables\Actions\ForceDeleteBulkAction::make(), + Tables\Actions\RestoreBulkAction::make(), + ]), + ]) + ->headerActions([ + ExportAction::make() + ->label('Export Winded Serial Validation Errors') + ->color('warning') + ->exporter(WindedSerialValidationErrorExporter::class) + ->visible(function () { + return Filament::auth()->user()->can('view export winded serial validation errors'); + }), + ]); + } + + public static function getRelations(): array + { + return [ + // + ]; + } + + public static function getPages(): array + { + return [ + 'index' => Pages\ListWindedSerialValidationErrors::route('/'), + 'create' => Pages\CreateWindedSerialValidationError::route('/create'), + 'view' => Pages\ViewWindedSerialValidationError::route('/{record}'), + 'edit' => Pages\EditWindedSerialValidationError::route('/{record}/edit'), + ]; + } + + public static function getEloquentQuery(): Builder + { + return parent::getEloquentQuery() + ->withoutGlobalScopes([ + SoftDeletingScope::class, + ]); + } +} diff --git a/app/Filament/Resources/WindedSerialValidationErrorResource/Pages/CreateWindedSerialValidationError.php b/app/Filament/Resources/WindedSerialValidationErrorResource/Pages/CreateWindedSerialValidationError.php new file mode 100644 index 0000000..6bbea51 --- /dev/null +++ b/app/Filament/Resources/WindedSerialValidationErrorResource/Pages/CreateWindedSerialValidationError.php @@ -0,0 +1,12 @@ + Date: Sun, 23 Aug 2026 19:11:56 +0530 Subject: [PATCH 6/6] Added laser winded serial validation error post api function with validations and Added laser stopped post api function with validations --- .../Controllers/CharacteristicsController.php | 1337 +++++++++++++---- 1 file changed, 1052 insertions(+), 285 deletions(-) diff --git a/app/Http/Controllers/CharacteristicsController.php b/app/Http/Controllers/CharacteristicsController.php index b4db7f7..e1f76d0 100644 --- a/app/Http/Controllers/CharacteristicsController.php +++ b/app/Http/Controllers/CharacteristicsController.php @@ -14,6 +14,7 @@ use App\Models\RequestCharacteristic; use App\Models\StickerMaster; use App\Models\TempClassCharacteristic; use App\Models\User; +use App\Models\WindedSerialValidationError; use App\Models\WorkGroupMaster; use Illuminate\Http\Request; use Illuminate\Support\Facades\Log; @@ -275,6 +276,7 @@ class CharacteristicsController extends Controller $itemCode = $data['item_code'] ?? ''; $modelType = $data['model_type'] ?? ''; $expectedTime = $data['expected_time'] ?? 0; + $markedStatus = (Str::contains($data['marked_status'], 'marked', ignoreCase: true)) ? 'Marked' : 'Stopped'; $characteristics = $data['characteristics']; if ($plantCode == null || $plantCode == '' || ! $plantCode) { @@ -737,6 +739,8 @@ class CharacteristicsController extends Controller } $updatedRows = 0; + $statusTyp = strtolower($markedStatus); // ($markedStatus == 'Stopped') ? 'stopped' : 'marked'; + $modelTyp = strtolower($modelType); $isAuto = false; foreach ($data['characteristics'] as $char) { @@ -750,6 +754,7 @@ class CharacteristicsController extends Controller $curNamePlateMarkBy = $curStat->name_plate_marked_by ?? null; $curManualMarkBy = $curStat->man_marked_by ?? null; $curWindNo = $curStat->winded_serial_number ?? null; + $curRewWind = ($curStat->winded_rework_status == '1') ? '1' : '0'; $curMMach = $curStat->motor_machine_name ?? null; $curPMach = $curStat->pump_machine_name ?? null; $curNpMach = $curStat->name_plate_machine_name ?? null; @@ -757,6 +762,11 @@ class CharacteristicsController extends Controller $curPart2 = $curStat->part_validation_2 ?? null; $slUser = $curStat->samlight_logged_name ?? null; $curWorkFlow = $curStat->has_work_flow_id ?? '0'; + + $curMotMarkTim = empty($curStat->motor_marked_datetime) ? null : $curStat->motor_marked_datetime; + $curPumMarkTim = empty($curStat->pump_marked_datetime) ? null : $curStat->pump_marked_datetime; + $curNapMarkTim = empty($curStat->name_plate_marked_datetime) ? null : $curStat->name_plate_marked_datetime; + if ($jobNo != null && $jobNo != '' && $jobNo) { // $curStat = ClassCharacteristic::where('plant_id', $plantId)->where('machine_id', $machineId)->where('aufnr', $jobNo)->where('gernr', $serialNumber)->where('item_id', $itemId)->first(); if ($modelType == 'MOTOR' && ($curMarkStat == 'Marked' || $curMotorMarkStat == 'Marked')) { @@ -793,301 +803,519 @@ class CharacteristicsController extends Controller $napExpecTim = floatval($curStat->name_plate_expected_time ?? 0.0) ?: 0.0; if ($char['motor_pump_pumpset_status'] == '3') { - if ($modelType == 'MOTOR') { - $curMMach = $char['motor_machine_name'] ?? $curMMach; - $motPhysiCnt = $motPhysiCnt + 1; - $motExpecTim = $motExpecTim + $expectedTime; - if ($motPhysiCnt >= $mvhsCnt) { - $curMotorMarkStat = 'Marked'; + if ($markedStatus == 'Stopped') { + if ($modelType == 'MOTOR') { + $curMotMarkTim = empty($char['motor_marked_datetime']) ? now() : $char['motor_marked_datetime']; + $curMMach = empty($char['motor_machine_name']) ? $curMMach : $char['motor_machine_name']; + $curMotorMarkBy = ($char['motor_marked_by'] == 'jothi') ? 'Admin' : $char['motor_marked_by'] ?? $curMotorMarkBy; + } elseif ($modelType == 'PUMP') { + $curPumMarkTim = empty($char['pump_marked_datetime']) ? now() : $char['pump_marked_datetime']; + $curPMach = empty($char['pump_machine_name']) ? $curPMach : $char['pump_machine_name']; + $curPumpMarkBy = ($char['pump_marked_by'] == 'jothi') ? 'Admin' : $char['pump_marked_by'] ?? $curPumpMarkBy; + } elseif ($modelType == 'NAME_PLATE') { + $curNapMarkTim = empty($char['name_plate_marked_datetime']) ? now() : $char['name_plate_marked_datetime']; + $curNpMach = empty($char['name_plate_machine_name']) ? $curNpMach : $char['name_plate_machine_name']; + $curNamePlateMarkBy = ($char['name_plate_marked_by'] == 'jothi') ? 'Admin' : $char['name_plate_marked_by'] ?? $curNamePlateMarkBy; } - $curMotorMarkBy = ($char['motor_marked_by'] == 'jothi') ? 'Admin' : $char['motor_marked_by'] ?? $curMotorMarkBy; - } elseif ($modelType == 'PUMP') { - $curPMach = $char['pump_machine_name'] ?? $curPMach; - $pumPhysiCnt = $pumPhysiCnt + 1; - $pumExpecTim = $pumExpecTim + $expectedTime; - if ($pumPhysiCnt >= $mvhsCnt) { - $curPumpMarkStat = 'Marked'; + + $values = [ + 'mark_status' => $markedStatus, + 'marked_datetime' => empty($char['marked_datetime']) ? now() : $char['marked_datetime'], + 'marked_by' => ($char['marked_by'] == 'jothi') ? 'Admin' : $char['marked_by'] ?? $curMarkBy, + 'motor_marked_datetime' => $curMotMarkTim, + 'motor_marked_by' => $curMotorMarkBy, + 'pump_marked_datetime' => $curPumMarkTim, + 'pump_marked_by' => $curPumpMarkBy, + 'name_plate_marked_datetime' => $curNapMarkTim, + 'name_plate_marked_by' => $curNamePlateMarkBy, + 'motor_pump_pumpset_status' => '3', + 'motor_machine_name' => $curMMach, + 'pump_machine_name' => $curPMach, + 'name_plate_machine_name' => $curNpMach, + 'stopped_datetime' => now(), + 'is_stopped' => '2', + 'stopped_by' => $userName ?? null, + 'updated_by' => $userName ?? null, + ]; + } else { + if ($modelType == 'MOTOR') { + $curMotMarkTim = empty($char['motor_marked_datetime']) ? now() : $char['motor_marked_datetime']; + $curMMach = empty($char['motor_machine_name']) ? $curMMach : $char['motor_machine_name']; + $motPhysiCnt = $motPhysiCnt + 1; + $motExpecTim = $motExpecTim + $expectedTime; + if ($motPhysiCnt >= $mvhsCnt) { + $curMotorMarkStat = 'Marked'; + } + $curMotorMarkBy = ($char['motor_marked_by'] == 'jothi') ? 'Admin' : $char['motor_marked_by'] ?? $curMotorMarkBy; + } elseif ($modelType == 'PUMP') { + $curPumMarkTim = empty($char['pump_marked_datetime']) ? now() : $char['pump_marked_datetime']; + $curPMach = empty($char['pump_machine_name']) ? $curPMach : $char['pump_machine_name']; + $pumPhysiCnt = $pumPhysiCnt + 1; + $pumExpecTim = $pumExpecTim + $expectedTime; + if ($pumPhysiCnt >= $mvhsCnt) { + $curPumpMarkStat = 'Marked'; + } + $curPumpMarkBy = ($char['pump_marked_by'] == 'jothi') ? 'Admin' : $char['pump_marked_by'] ?? $curPumpMarkBy; + } elseif ($modelType == 'NAME_PLATE') { + $curNapMarkTim = empty($char['name_plate_marked_datetime']) ? now() : $char['name_plate_marked_datetime']; + $curNpMach = empty($char['name_plate_machine_name']) ? $curNpMach : $char['name_plate_machine_name']; + $napExpecTim = $napExpecTim + $expectedTime; + $curNamePlateMarkStat = 'Marked'; + $curNamePlateMarkBy = ($char['name_plate_marked_by'] == 'jothi') ? 'Admin' : $char['name_plate_marked_by'] ?? $curNamePlateMarkBy; + // } elseif ($modelType == 'PUMPSET' && $physiCnt >= $mvhsCnt) { + // $curMarkStat = 'Marked'; } - $curPumpMarkBy = ($char['pump_marked_by'] == 'jothi') ? 'Admin' : $char['pump_marked_by'] ?? $curPumpMarkBy; - } elseif ($modelType == 'NAME_PLATE') { - $curNpMach = $char['name_plate_machine_name'] ?? $curNpMach; - $napExpecTim = $napExpecTim + $expectedTime; - $curNamePlateMarkStat = 'Marked'; - $curNamePlateMarkBy = ($char['name_plate_marked_by'] == 'jothi') ? 'Admin' : $char['name_plate_marked_by'] ?? $curNamePlateMarkBy; - // } elseif ($modelType == 'PUMPSET' && $physiCnt >= $mvhsCnt) { - // $curMarkStat = 'Marked'; - } - if ($hasMvhs == true && $curMotorMarkStat == 'Marked' && $curPumpMarkStat == 'Marked' && $curNamePlateMarkStat == 'Marked') { - $curMarkStat = 'Marked'; - } elseif ($hasMvhs == false && $curMotorMarkStat == 'Marked' && $curPumpMarkStat == 'Marked') { - $curMarkStat = 'Marked'; - } + $curRewWind = ($char['winded_rework_status'] == '1') ? '1' : $curRewWind; - $values = [ - 'mark_status' => $curMarkStat, - 'marked_datetime' => $char['marked_datetime'] ?? now(), - 'marked_physical_count' => (string) $physiCnt, - 'marked_expected_time' => (string) $expecTim, - 'marked_by' => ($char['marked_by'] == 'jothi') ? 'Admin' : $char['marked_by'] ?? $curMarkBy, - 'motor_marked_status' => $curMotorMarkStat, - 'motor_marked_physical_count' => (string) $motPhysiCnt, - 'motor_expected_time' => (string) $motExpecTim, - 'motor_marked_by' => $curMotorMarkBy, - 'pump_marked_status' => $curPumpMarkStat, - 'pump_marked_physical_count' => (string) $pumPhysiCnt, - 'pump_expected_time' => (string) $pumExpecTim, - 'pump_marked_by' => $curPumpMarkBy, - 'name_plate_marked_status' => $curNamePlateMarkStat, - 'name_plate_expected_time' => (string) $napExpecTim, - 'name_plate_marked_by' => $curNamePlateMarkBy, - 'motor_pump_pumpset_status' => '3', - 'winded_serial_number' => $char['winded_serial_number'] ?? $curWindNo, - 'motor_machine_name' => $curMMach, - 'pump_machine_name' => $curPMach, - 'name_plate_machine_name' => $curNpMach, - 'part_validation_1' => $char['part_validation_1'] ?? $curPart1, - 'part_validation_2' => $char['part_validation_2'] ?? $curPart2, - 'samlight_logged_name' => $char['samlight_logged_name'] ?? $slUser, - 'pending_released_status' => $char['pending_released_status'] ?? 0, - 'has_work_flow_id' => $char['has_work_flow_id'] ?? $curWorkFlow, - 'updated_by' => $userName ?? null, - ]; - // $values = array_merge($values1 ?? [], $values2 ?? [], $values3 ?? [], $values4 ?? [], $values5 ?? []); + if ($hasMvhs == true && $curMotorMarkStat == 'Marked' && $curPumpMarkStat == 'Marked' && $curNamePlateMarkStat == 'Marked') { + $curMarkStat = 'Marked'; + } elseif ($hasMvhs == false && $curMotorMarkStat == 'Marked' && $curPumpMarkStat == 'Marked') { + $curMarkStat = 'Marked'; + } + + $values = [ + 'mark_status' => $curMarkStat, + 'marked_datetime' => empty($char['marked_datetime']) ? now() : $char['marked_datetime'], + 'marked_physical_count' => (string) $physiCnt, + 'marked_expected_time' => (string) $expecTim, + 'marked_by' => ($char['marked_by'] == 'jothi') ? 'Admin' : $char['marked_by'] ?? $curMarkBy, + 'motor_marked_status' => $curMotorMarkStat, + 'motor_marked_physical_count' => (string) $motPhysiCnt, + 'motor_expected_time' => (string) $motExpecTim, + 'motor_marked_datetime' => $curMotMarkTim, + 'motor_marked_by' => $curMotorMarkBy, + 'pump_marked_status' => $curPumpMarkStat, + 'pump_marked_physical_count' => (string) $pumPhysiCnt, + 'pump_expected_time' => (string) $pumExpecTim, + 'pump_marked_datetime' => $curPumMarkTim, + 'pump_marked_by' => $curPumpMarkBy, + 'name_plate_marked_status' => $curNamePlateMarkStat, + 'name_plate_expected_time' => (string) $napExpecTim, + 'name_plate_marked_datetime' => $curNapMarkTim, + 'name_plate_marked_by' => $curNamePlateMarkBy, + 'motor_pump_pumpset_status' => '3', + 'winded_serial_number' => empty($char['winded_serial_number']) ? $curWindNo : $char['winded_serial_number'], + 'winded_rework_status' => (string) $curRewWind, + 'motor_machine_name' => $curMMach, + 'pump_machine_name' => $curPMach, + 'name_plate_machine_name' => $curNpMach, + 'part_validation_1' => empty($char['part_validation_1']) ? $curPart1 : $char['part_validation_1'], + 'part_validation_2' => empty($char['part_validation_2']) ? $curPart2 : $char['part_validation_2'], + 'samlight_logged_name' => empty($char['samlight_logged_name']) ? $slUser : $char['samlight_logged_name'], + 'pending_released_status' => $char['pending_released_status'] ?? 0, + 'has_work_flow_id' => $char['has_work_flow_id'] ?? $curWorkFlow, + 'updated_by' => $userName ?? null, + ]; + // $values = array_merge($values1 ?? [], $values2 ?? [], $values3 ?? [], $values4 ?? [], $values5 ?? []); + } } elseif ($hasMvhs == true && $char['motor_pump_pumpset_status'] == '4') { - if ($modelType == 'NAME_PLATE') { - $napExpecTim = $napExpecTim + $expectedTime; - $curNamePlateMarkStat = 'Marked'; - $curNamePlateMarkBy = ($char['name_plate_marked_by'] == 'jothi') ? 'Admin' : $char['name_plate_marked_by'] ?? $curNamePlateMarkBy; - // } elseif ($modelType == 'PUMPSET' && $physiCnt >= $mvhsCnt) { - // $curMarkStat = 'Marked'; - } + if ($markedStatus == 'Stopped') { + if ($modelType == 'NAME_PLATE') { + $curNapMarkTim = empty($char['name_plate_marked_datetime']) ? now() : $char['name_plate_marked_datetime']; + $curNpMach = empty($char['name_plate_machine_name']) ? $curNpMach : $char['name_plate_machine_name']; + $curNamePlateMarkBy = ($char['name_plate_marked_by'] == 'jothi') ? 'Admin' : $char['name_plate_marked_by'] ?? $curNamePlateMarkBy; + } - if ($curMotorMarkStat == 'Marked' && $curPumpMarkStat == 'Marked' && $curNamePlateMarkStat == 'Marked') { - $curMarkStat = 'Marked'; - } + $values = [ + 'mark_status' => $markedStatus, + 'marked_datetime' => empty($char['marked_datetime']) ? now() : $char['marked_datetime'], + 'marked_by' => ($char['marked_by'] == 'jothi') ? 'Admin' : $char['marked_by'] ?? $curMarkBy, + 'name_plate_marked_datetime' => $curNapMarkTim, + 'name_plate_marked_by' => $curNamePlateMarkBy, + 'motor_pump_pumpset_status' => '3', + 'name_plate_machine_name' => $curNpMach, + 'stopped_datetime' => now(), + 'is_stopped' => '2', + 'stopped_by' => $userName ?? null, + 'updated_by' => $userName ?? null, + ]; + } else { + if ($modelType == 'NAME_PLATE') { + $curNapMarkTim = empty($char['name_plate_marked_datetime']) ? now() : $char['name_plate_marked_datetime']; + $curNpMach = empty($char['name_plate_machine_name']) ? $curNpMach : $char['name_plate_machine_name']; + $napExpecTim = $napExpecTim + $expectedTime; + $curNamePlateMarkStat = 'Marked'; + $curNamePlateMarkBy = ($char['name_plate_marked_by'] == 'jothi') ? 'Admin' : $char['name_plate_marked_by'] ?? $curNamePlateMarkBy; + // } elseif ($modelType == 'PUMPSET' && $physiCnt >= $mvhsCnt) { + // $curMarkStat = 'Marked'; + } - $values = [ - 'mark_status' => $curMarkStat, - 'marked_datetime' => $char['marked_datetime'] ?? now(), - 'marked_physical_count' => (string) $physiCnt, - 'marked_expected_time' => (string) $expecTim, - 'marked_by' => ($char['marked_by'] == 'jothi') ? 'Admin' : $char['marked_by'] ?? $curMarkBy, - 'name_plate_marked_status' => $curNamePlateMarkStat, - 'name_plate_expected_time' => (string) $napExpecTim, - 'name_plate_marked_by' => $curNamePlateMarkBy, - 'motor_pump_pumpset_status' => '3', - 'winded_serial_number' => $char['winded_serial_number'] ?? $curWindNo, - 'name_plate_machine_name' => $char['name_plate_machine_name'] ?? $curNpMach, - 'part_validation_1' => $char['part_validation_1'] ?? $curPart1, - 'part_validation_2' => $char['part_validation_2'] ?? $curPart2, - 'samlight_logged_name' => $char['samlight_logged_name'] ?? $slUser, - 'pending_released_status' => $char['pending_released_status'] ?? 0, - 'has_work_flow_id' => $char['has_work_flow_id'] ?? $curWorkFlow, - 'updated_by' => $userName ?? null, - ]; - // $values = array_merge($values1 ?? [], $values2 ?? [], $values3 ?? [], $values4 ?? [], $values5 ?? []); + $curRewWind = ($char['winded_rework_status'] == '1') ? '1' : $curRewWind; + + if ($curMotorMarkStat == 'Marked' && $curPumpMarkStat == 'Marked' && $curNamePlateMarkStat == 'Marked') { + $curMarkStat = 'Marked'; + } + + $values = [ + 'mark_status' => $curMarkStat, + 'marked_datetime' => empty($char['marked_datetime']) ? now() : $char['marked_datetime'], + 'marked_physical_count' => (string) $physiCnt, + 'marked_expected_time' => (string) $expecTim, + 'marked_by' => ($char['marked_by'] == 'jothi') ? 'Admin' : $char['marked_by'] ?? $curMarkBy, + 'name_plate_marked_status' => $curNamePlateMarkStat, + 'name_plate_expected_time' => (string) $napExpecTim, + 'name_plate_marked_datetime' => $curNapMarkTim, + 'name_plate_marked_by' => $curNamePlateMarkBy, + 'motor_pump_pumpset_status' => '3', + 'winded_serial_number' => empty($char['winded_serial_number']) ? $curWindNo : $char['winded_serial_number'], + 'winded_rework_status' => (string) $curRewWind, + 'name_plate_machine_name' => $curNpMach, + 'part_validation_1' => empty($char['part_validation_1']) ? $curPart1 : $char['part_validation_1'], + 'part_validation_2' => empty($char['part_validation_2']) ? $curPart2 : $char['part_validation_2'], + 'samlight_logged_name' => empty($char['samlight_logged_name']) ? $slUser : $char['samlight_logged_name'], + 'pending_released_status' => $char['pending_released_status'] ?? 0, + 'has_work_flow_id' => $char['has_work_flow_id'] ?? $curWorkFlow, + 'updated_by' => $userName ?? null, + ]; + // $values = array_merge($values1 ?? [], $values2 ?? [], $values3 ?? [], $values4 ?? [], $values5 ?? []); + } } elseif ($char['motor_pump_pumpset_status'] == '2') { - if ($modelType == 'PUMP') { - $pumPhysiCnt = $pumPhysiCnt + 1; - $pumExpecTim = $pumExpecTim + $expectedTime; - if ($pumPhysiCnt >= $mvhsCnt) { - $curPumpMarkStat = 'Marked'; + if ($markedStatus == 'Stopped') { + if ($modelType == 'PUMP') { + $curPumMarkTim = empty($char['pump_marked_datetime']) ? now() : $char['pump_marked_datetime']; + $curPMach = empty($char['pump_machine_name']) ? $curPMach : $char['pump_machine_name']; + $curPumpMarkBy = ($char['pump_marked_by'] == 'jothi') ? 'Admin' : $char['pump_marked_by'] ?? $curPumpMarkBy; } - $curPumpMarkBy = ($char['pump_marked_by'] == 'jothi') ? 'Admin' : $char['pump_marked_by'] ?? $curPumpMarkBy; - // } elseif ($modelType == 'PUMPSET' && $physiCnt >= $mvhsCnt) { - // $curMarkStat = 'Marked'; - } - if ($hasMvhs == true && $curMotorMarkStat == 'Marked' && $curPumpMarkStat == 'Marked' && $curNamePlateMarkStat == 'Marked') { - $curMarkStat = 'Marked'; - } elseif ($hasMvhs == false && $curMotorMarkStat == 'Marked' && $curPumpMarkStat == 'Marked') { - $curMarkStat = 'Marked'; - } + $values = [ + 'mark_status' => $markedStatus, + 'marked_datetime' => empty($char['marked_datetime']) ? now() : $char['marked_datetime'], + 'marked_by' => ($char['marked_by'] == 'jothi') ? 'Admin' : $char['marked_by'] ?? $curMarkBy, + 'pump_marked_datetime' => $curPumMarkTim, + 'pump_marked_by' => $curPumpMarkBy, + 'motor_pump_pumpset_status' => '3', + 'pump_machine_name' => $curPMach, + 'stopped_datetime' => now(), + 'is_stopped' => '2', + 'stopped_by' => $userName ?? null, + 'updated_by' => $userName ?? null, + ]; + } else { + if ($modelType == 'PUMP') { + $curPumMarkTim = empty($char['pump_marked_datetime']) ? now() : $char['pump_marked_datetime']; + $curPMach = empty($char['pump_machine_name']) ? $curPMach : $char['pump_machine_name']; + $pumPhysiCnt = $pumPhysiCnt + 1; + $pumExpecTim = $pumExpecTim + $expectedTime; + if ($pumPhysiCnt >= $mvhsCnt) { + $curPumpMarkStat = 'Marked'; + } + $curPumpMarkBy = ($char['pump_marked_by'] == 'jothi') ? 'Admin' : $char['pump_marked_by'] ?? $curPumpMarkBy; + // } elseif ($modelType == 'PUMPSET' && $physiCnt >= $mvhsCnt) { + // $curMarkStat = 'Marked'; + } - $values = [ - 'mark_status' => $curMarkStat, - 'marked_datetime' => $char['marked_datetime'] ?? now(), - 'marked_physical_count' => (string) $physiCnt, - 'marked_expected_time' => (string) $expecTim, - 'marked_by' => ($char['marked_by'] == 'jothi') ? 'Admin' : $char['marked_by'] ?? $curMarkBy, - 'pump_marked_status' => $curPumpMarkStat, - 'pump_marked_physical_count' => (string) $pumPhysiCnt, - 'pump_expected_time' => (string) $pumExpecTim, - 'pump_marked_by' => $curPumpMarkBy, - 'motor_pump_pumpset_status' => '3', - 'winded_serial_number' => $char['winded_serial_number'] ?? $curWindNo, - 'pump_machine_name' => $char['pump_machine_name'] ?? $curPMach, - 'part_validation_1' => $char['part_validation_1'] ?? $curPart1, - 'part_validation_2' => $char['part_validation_2'] ?? $curPart2, - 'samlight_logged_name' => $char['samlight_logged_name'] ?? $slUser, - 'pending_released_status' => $char['pending_released_status'] ?? 0, - 'has_work_flow_id' => $char['has_work_flow_id'] ?? $curWorkFlow, - 'updated_by' => $userName ?? null, - ]; - // $values = array_merge($values1 ?? [], $values2 ?? [], $values3 ?? [], $values4 ?? [], $values5 ?? []); + $curRewWind = ($char['winded_rework_status'] == '1') ? '1' : $curRewWind; + + if ($hasMvhs == true && $curMotorMarkStat == 'Marked' && $curPumpMarkStat == 'Marked' && $curNamePlateMarkStat == 'Marked') { + $curMarkStat = 'Marked'; + } elseif ($hasMvhs == false && $curMotorMarkStat == 'Marked' && $curPumpMarkStat == 'Marked') { + $curMarkStat = 'Marked'; + } + + $values = [ + 'mark_status' => $curMarkStat, + 'marked_datetime' => empty($char['marked_datetime']) ? now() : $char['marked_datetime'], + 'marked_physical_count' => (string) $physiCnt, + 'marked_expected_time' => (string) $expecTim, + 'marked_by' => ($char['marked_by'] == 'jothi') ? 'Admin' : $char['marked_by'] ?? $curMarkBy, + 'pump_marked_status' => $curPumpMarkStat, + 'pump_marked_physical_count' => (string) $pumPhysiCnt, + 'pump_expected_time' => (string) $pumExpecTim, + 'pump_marked_datetime' => $curPumMarkTim, + 'pump_marked_by' => $curPumpMarkBy, + 'motor_pump_pumpset_status' => '3', + 'winded_serial_number' => empty($char['winded_serial_number']) ? $curWindNo : $char['winded_serial_number'], + 'winded_rework_status' => (string) $curRewWind, + 'pump_machine_name' => $curPMach, + 'part_validation_1' => empty($char['part_validation_1']) ? $curPart1 : $char['part_validation_1'], + 'part_validation_2' => empty($char['part_validation_2']) ? $curPart2 : $char['part_validation_2'], + 'samlight_logged_name' => empty($char['samlight_logged_name']) ? $slUser : $char['samlight_logged_name'], + 'pending_released_status' => $char['pending_released_status'] ?? 0, + 'has_work_flow_id' => $char['has_work_flow_id'] ?? $curWorkFlow, + 'updated_by' => $userName ?? null, + ]; + // $values = array_merge($values1 ?? [], $values2 ?? [], $values3 ?? [], $values4 ?? [], $values5 ?? []); + } } elseif ($char['motor_pump_pumpset_status'] == '1') { - if ($modelType == 'MOTOR') { - $motPhysiCnt = $motPhysiCnt + 1; - $motExpecTim = $motExpecTim + $expectedTime; - if ($motPhysiCnt >= $mvhsCnt) { - $curMotorMarkStat = 'Marked'; + if ($markedStatus == 'Stopped') { + if ($modelType == 'MOTOR') { + $curMotMarkTim = empty($char['motor_marked_datetime']) ? now() : $char['motor_marked_datetime']; + $curMMach = empty($char['motor_machine_name']) ? $curMMach : $char['motor_machine_name']; + $curMotorMarkBy = ($char['motor_marked_by'] == 'jothi') ? 'Admin' : $char['motor_marked_by'] ?? $curMotorMarkBy; } - $curMotorMarkBy = ($char['motor_marked_by'] == 'jothi') ? 'Admin' : $char['motor_marked_by'] ?? $curMotorMarkBy; - // } elseif ($modelType == 'PUMPSET' && $physiCnt >= $mvhsCnt) { - // $curMarkStat = 'Marked'; - } - if ($hasMvhs == true && $curMotorMarkStat == 'Marked' && $curPumpMarkStat == 'Marked' && $curNamePlateMarkStat == 'Marked') { - $curMarkStat = 'Marked'; - } elseif ($hasMvhs == false && $curMotorMarkStat == 'Marked' && $curPumpMarkStat == 'Marked') { - $curMarkStat = 'Marked'; - } + $values = [ + 'mark_status' => $markedStatus, + 'marked_datetime' => empty($char['marked_datetime']) ? now() : $char['marked_datetime'], + 'marked_by' => ($char['marked_by'] == 'jothi') ? 'Admin' : $char['marked_by'] ?? $curMarkBy, + 'motor_marked_datetime' => $curMotMarkTim, + 'motor_marked_by' => $curMotorMarkBy, + 'motor_pump_pumpset_status' => '3', + 'motor_machine_name' => $curMMach, + 'stopped_datetime' => now(), + 'is_stopped' => '2', + 'stopped_by' => $userName ?? null, + 'updated_by' => $userName ?? null, + ]; + } else { + if ($modelType == 'MOTOR') { + $curMotMarkTim = empty($char['motor_marked_datetime']) ? now() : $char['motor_marked_datetime']; + $curMMach = empty($char['motor_machine_name']) ? $curMMach : $char['motor_machine_name']; + $motPhysiCnt = $motPhysiCnt + 1; + $motExpecTim = $motExpecTim + $expectedTime; + if ($motPhysiCnt >= $mvhsCnt) { + $curMotorMarkStat = 'Marked'; + } + $curMotorMarkBy = ($char['motor_marked_by'] == 'jothi') ? 'Admin' : $char['motor_marked_by'] ?? $curMotorMarkBy; + // } elseif ($modelType == 'PUMPSET' && $physiCnt >= $mvhsCnt) { + // $curMarkStat = 'Marked'; + } - $values = [ - 'mark_status' => $curMarkStat, - 'marked_datetime' => $char['marked_datetime'] ?? now(), - 'marked_physical_count' => (string) $physiCnt, - 'marked_expected_time' => (string) $expecTim, - 'marked_by' => ($char['marked_by'] == 'jothi') ? 'Admin' : $char['marked_by'] ?? $curMarkBy, - 'motor_marked_status' => $curMotorMarkStat, - 'motor_marked_physical_count' => (string) $motPhysiCnt, - 'motor_expected_time' => (string) $motExpecTim, - 'motor_marked_by' => $curMotorMarkBy, - 'motor_pump_pumpset_status' => '3', - 'winded_serial_number' => $char['winded_serial_number'] ?? $curWindNo, - 'motor_machine_name' => $char['motor_machine_name'] ?? $curMMach, - 'part_validation_1' => $char['part_validation_1'] ?? $curPart1, - 'part_validation_2' => $char['part_validation_2'] ?? $curPart2, - 'samlight_logged_name' => $char['samlight_logged_name'] ?? $slUser, - 'pending_released_status' => $char['pending_released_status'] ?? 0, - 'has_work_flow_id' => $char['has_work_flow_id'] ?? $curWorkFlow, - 'updated_by' => $userName ?? null, - ]; - // $values = array_merge($values1 ?? [], $values2 ?? [], $values3 ?? [], $values4 ?? [], $values5 ?? []); + $curRewWind = ($char['winded_rework_status'] == '1') ? '1' : $curRewWind; + + if ($hasMvhs == true && $curMotorMarkStat == 'Marked' && $curPumpMarkStat == 'Marked' && $curNamePlateMarkStat == 'Marked') { + $curMarkStat = 'Marked'; + } elseif ($hasMvhs == false && $curMotorMarkStat == 'Marked' && $curPumpMarkStat == 'Marked') { + $curMarkStat = 'Marked'; + } + + $values = [ + 'mark_status' => $curMarkStat, + 'marked_datetime' => empty($char['marked_datetime']) ? now() : $char['marked_datetime'], + 'marked_physical_count' => (string) $physiCnt, + 'marked_expected_time' => (string) $expecTim, + 'marked_by' => ($char['marked_by'] == 'jothi') ? 'Admin' : $char['marked_by'] ?? $curMarkBy, + 'motor_marked_status' => $curMotorMarkStat, + 'motor_marked_physical_count' => (string) $motPhysiCnt, + 'motor_expected_time' => (string) $motExpecTim, + 'motor_marked_datetime' => $curMotMarkTim, + 'motor_marked_by' => $curMotorMarkBy, + 'motor_pump_pumpset_status' => '3', + 'winded_serial_number' => empty($char['winded_serial_number']) ? $curWindNo : $char['winded_serial_number'], + 'winded_rework_status' => (string) $curRewWind, + 'motor_machine_name' => $curMMach, + 'part_validation_1' => empty($char['part_validation_1']) ? $curPart1 : $char['part_validation_1'], + 'part_validation_2' => empty($char['part_validation_2']) ? $curPart2 : $char['part_validation_2'], + 'samlight_logged_name' => empty($char['samlight_logged_name']) ? $slUser : $char['samlight_logged_name'], + 'pending_released_status' => $char['pending_released_status'] ?? 0, + 'has_work_flow_id' => $char['has_work_flow_id'] ?? $curWorkFlow, + 'updated_by' => $userName ?? null, + ]; + // $values = array_merge($values1 ?? [], $values2 ?? [], $values3 ?? [], $values4 ?? [], $values5 ?? []); + } } elseif ($hasMvhs == true) { - if ($modelType == 'MOTOR') { - $curMMach = $char['motor_machine_name'] ?? $curMMach; - $motPhysiCnt = $motPhysiCnt + 1; - $motExpecTim = $motExpecTim + $expectedTime; - if ($motPhysiCnt >= $mvhsCnt) { - $curMotorMarkStat = 'Marked'; + if ($markedStatus == 'Stopped') { + if ($modelType == 'MOTOR') { + $curMotMarkTim = empty($char['motor_marked_datetime']) ? now() : $char['motor_marked_datetime']; + $curMMach = empty($char['motor_machine_name']) ? $curMMach : $char['motor_machine_name']; + $curMotorMarkBy = ($char['motor_marked_by'] == 'jothi') ? 'Admin' : $char['motor_marked_by'] ?? $curMotorMarkBy; + } elseif ($modelType == 'PUMP') { + $curPumMarkTim = empty($char['pump_marked_datetime']) ? now() : $char['pump_marked_datetime']; + $curPMach = empty($char['pump_machine_name']) ? $curPMach : $char['pump_machine_name']; + $curPumpMarkBy = ($char['pump_marked_by'] == 'jothi') ? 'Admin' : $char['pump_marked_by'] ?? $curPumpMarkBy; + } elseif ($modelType == 'NAME_PLATE') { + $curNapMarkTim = empty($char['name_plate_marked_datetime']) ? now() : $char['name_plate_marked_datetime']; + $curNpMach = empty($char['name_plate_machine_name']) ? $curNpMach : $char['name_plate_machine_name']; + $curNamePlateMarkBy = ($char['name_plate_marked_by'] == 'jothi') ? 'Admin' : $char['name_plate_marked_by'] ?? $curNamePlateMarkBy; } - $curMotorMarkBy = ($char['motor_marked_by'] == 'jothi') ? 'Admin' : $char['motor_marked_by'] ?? $curMotorMarkBy; - } elseif ($modelType == 'PUMP') { - $curPMach = $char['pump_machine_name'] ?? $curPMach; - $pumPhysiCnt = $pumPhysiCnt + 1; - $pumExpecTim = $pumExpecTim + $expectedTime; - if ($pumPhysiCnt >= $mvhsCnt) { - $curPumpMarkStat = 'Marked'; + + $values = [ + 'mark_status' => $markedStatus, + 'marked_datetime' => empty($char['marked_datetime']) ? now() : $char['marked_datetime'], + 'marked_by' => ($char['marked_by'] == 'jothi') ? 'Admin' : $char['marked_by'] ?? $curMarkBy, + 'motor_marked_datetime' => $curMotMarkTim, + 'motor_marked_by' => $curMotorMarkBy, + 'pump_marked_datetime' => $curPumMarkTim, + 'pump_marked_by' => $curPumpMarkBy, + 'name_plate_marked_datetime' => $curNapMarkTim, + 'name_plate_marked_by' => $curNamePlateMarkBy, + 'motor_pump_pumpset_status' => null, + 'motor_machine_name' => $curMMach, + 'pump_machine_name' => $curPMach, + 'name_plate_machine_name' => $curNpMach, + 'stopped_datetime' => now(), + 'is_stopped' => '2', + 'stopped_by' => $userName ?? null, + 'updated_by' => $userName ?? null, + ]; + } else { + if ($modelType == 'MOTOR') { + $curMotMarkTim = empty($char['motor_marked_datetime']) ? now() : $char['motor_marked_datetime']; + $curMMach = empty($char['motor_machine_name']) ? $curMMach : $char['motor_machine_name']; + $motPhysiCnt = $motPhysiCnt + 1; + $motExpecTim = $motExpecTim + $expectedTime; + if ($motPhysiCnt >= $mvhsCnt) { + $curMotorMarkStat = 'Marked'; + } + $curMotorMarkBy = ($char['motor_marked_by'] == 'jothi') ? 'Admin' : $char['motor_marked_by'] ?? $curMotorMarkBy; + } elseif ($modelType == 'PUMP') { + $curPumMarkTim = empty($char['pump_marked_datetime']) ? now() : $char['pump_marked_datetime']; + $curPMach = empty($char['pump_machine_name']) ? $curPMach : $char['pump_machine_name']; + $pumPhysiCnt = $pumPhysiCnt + 1; + $pumExpecTim = $pumExpecTim + $expectedTime; + if ($pumPhysiCnt >= $mvhsCnt) { + $curPumpMarkStat = 'Marked'; + } + $curPumpMarkBy = ($char['pump_marked_by'] == 'jothi') ? 'Admin' : $char['pump_marked_by'] ?? $curPumpMarkBy; + } elseif ($modelType == 'NAME_PLATE') { + $curNapMarkTim = empty($char['name_plate_marked_datetime']) ? now() : $char['name_plate_marked_datetime']; + $curNpMach = empty($char['name_plate_machine_name']) ? $curNpMach : $char['name_plate_machine_name']; + $napExpecTim = $napExpecTim + $expectedTime; + $curNamePlateMarkStat = 'Marked'; + $curNamePlateMarkBy = ($char['name_plate_marked_by'] == 'jothi') ? 'Admin' : $char['name_plate_marked_by'] ?? $curNamePlateMarkBy; + // } elseif ($modelType == 'PUMPSET' && $physiCnt >= $mvhsCnt) { + // $curMarkStat = 'Marked'; } - $curPumpMarkBy = ($char['pump_marked_by'] == 'jothi') ? 'Admin' : $char['pump_marked_by'] ?? $curPumpMarkBy; - } elseif ($modelType == 'NAME_PLATE') { - $curNpMach = $char['name_plate_machine_name'] ?? $curNpMach; - $napExpecTim = $napExpecTim + $expectedTime; - $curNamePlateMarkStat = 'Marked'; - $curNamePlateMarkBy = ($char['name_plate_marked_by'] == 'jothi') ? 'Admin' : $char['name_plate_marked_by'] ?? $curNamePlateMarkBy; - // } elseif ($modelType == 'PUMPSET' && $physiCnt >= $mvhsCnt) { - // $curMarkStat = 'Marked'; - } - if ($curMotorMarkStat == 'Marked' && $curPumpMarkStat == 'Marked' && $curNamePlateMarkStat == 'Marked') { - $curMarkStat = 'Marked'; - } + $curRewWind = ($char['winded_rework_status'] == '1') ? '1' : $curRewWind; - $values = [ - 'mark_status' => $curMarkStat, - 'marked_datetime' => $char['marked_datetime'] ?? now(), - 'marked_physical_count' => (string) $physiCnt, - 'marked_expected_time' => (string) $expecTim, - 'marked_by' => ($char['marked_by'] == 'jothi') ? 'Admin' : $char['marked_by'] ?? $curMarkBy, - 'motor_marked_status' => $curMotorMarkStat, - 'motor_marked_physical_count' => (string) $motPhysiCnt, - 'motor_expected_time' => (string) $motExpecTim, - 'motor_marked_by' => $curMotorMarkBy, - 'pump_marked_status' => $curPumpMarkStat, - 'pump_marked_physical_count' => (string) $pumPhysiCnt, - 'pump_expected_time' => (string) $pumExpecTim, - 'pump_marked_by' => $curPumpMarkBy, - 'name_plate_marked_status' => $curNamePlateMarkStat, - 'name_plate_expected_time' => (string) $napExpecTim, - 'name_plate_marked_by' => $curNamePlateMarkBy, - 'motor_pump_pumpset_status' => null, - 'winded_serial_number' => $char['winded_serial_number'] ?? $curWindNo, - 'motor_machine_name' => $curMMach, - 'pump_machine_name' => $curPMach, - 'name_plate_machine_name' => $curNpMach, - 'part_validation_1' => $char['part_validation_1'] ?? $curPart1, - 'part_validation_2' => $char['part_validation_2'] ?? $curPart2, - 'samlight_logged_name' => $char['samlight_logged_name'] ?? $slUser, - 'pending_released_status' => $char['pending_released_status'] ?? 0, - 'has_work_flow_id' => $char['has_work_flow_id'] ?? $curWorkFlow, - 'updated_by' => $userName ?? null, - ]; - // $values = array_merge($values1 ?? [], $values2 ?? [], $values3 ?? [], $values4 ?? [], $values5 ?? []); + if ($curMotorMarkStat == 'Marked' && $curPumpMarkStat == 'Marked' && $curNamePlateMarkStat == 'Marked') { + $curMarkStat = 'Marked'; + } + + $values = [ + 'mark_status' => $curMarkStat, + 'marked_datetime' => empty($char['marked_datetime']) ? now() : $char['marked_datetime'], + 'marked_physical_count' => (string) $physiCnt, + 'marked_expected_time' => (string) $expecTim, + 'marked_by' => ($char['marked_by'] == 'jothi') ? 'Admin' : $char['marked_by'] ?? $curMarkBy, + 'motor_marked_status' => $curMotorMarkStat, + 'motor_marked_physical_count' => (string) $motPhysiCnt, + 'motor_expected_time' => (string) $motExpecTim, + 'motor_marked_datetime' => $curMotMarkTim, + 'motor_marked_by' => $curMotorMarkBy, + 'pump_marked_status' => $curPumpMarkStat, + 'pump_marked_physical_count' => (string) $pumPhysiCnt, + 'pump_expected_time' => (string) $pumExpecTim, + 'pump_marked_datetime' => $curPumMarkTim, + 'pump_marked_by' => $curPumpMarkBy, + 'name_plate_marked_status' => $curNamePlateMarkStat, + 'name_plate_expected_time' => (string) $napExpecTim, + 'name_plate_marked_datetime' => $curNapMarkTim, + 'name_plate_marked_by' => $curNamePlateMarkBy, + 'motor_pump_pumpset_status' => null, + 'winded_serial_number' => empty($char['winded_serial_number']) ? $curWindNo : $char['winded_serial_number'], + 'winded_rework_status' => (string) $curRewWind, + 'motor_machine_name' => $curMMach, + 'pump_machine_name' => $curPMach, + 'name_plate_machine_name' => $curNpMach, + 'part_validation_1' => empty($char['part_validation_1']) ? $curPart1 : $char['part_validation_1'], + 'part_validation_2' => empty($char['part_validation_2']) ? $curPart2 : $char['part_validation_2'], + 'samlight_logged_name' => empty($char['samlight_logged_name']) ? $slUser : $char['samlight_logged_name'], + 'pending_released_status' => $char['pending_released_status'] ?? 0, + 'has_work_flow_id' => $char['has_work_flow_id'] ?? $curWorkFlow, + 'updated_by' => $userName ?? null, + ]; + // $values = array_merge($values1 ?? [], $values2 ?? [], $values3 ?? [], $values4 ?? [], $values5 ?? []); + } } else { - if ($modelType == 'MOTOR') { - $curMMach = $char['motor_machine_name'] ?? $curMMach; - $motPhysiCnt = $motPhysiCnt + 1; - $motExpecTim = $motExpecTim + $expectedTime; - if ($motPhysiCnt >= $mvhsCnt) { - $curMotorMarkStat = 'Marked'; + if ($markedStatus == 'Stopped') { + if ($modelType == 'MOTOR') { + $curMotMarkTim = empty($char['motor_marked_datetime']) ? now() : $char['motor_marked_datetime']; + $curMMach = empty($char['motor_machine_name']) ? $curMMach : $char['motor_machine_name']; + $curMotorMarkBy = ($char['motor_marked_by'] == 'jothi') ? 'Admin' : $char['motor_marked_by'] ?? $curMotorMarkBy; + } elseif ($modelType == 'PUMP') { + $curPumMarkTim = empty($char['pump_marked_datetime']) ? now() : $char['pump_marked_datetime']; + $curPMach = empty($char['pump_machine_name']) ? $curPMach : $char['pump_machine_name']; + $curPumpMarkBy = ($char['pump_marked_by'] == 'jothi') ? 'Admin' : $char['pump_marked_by'] ?? $curPumpMarkBy; } - $curMotorMarkBy = ($char['motor_marked_by'] == 'jothi') ? 'Admin' : $char['motor_marked_by'] ?? $curMotorMarkBy; - } elseif ($modelType == 'PUMP') { - $curPMach = $char['pump_machine_name'] ?? $curPMach; - $pumPhysiCnt = $pumPhysiCnt + 1; - $pumExpecTim = $pumExpecTim + $expectedTime; - if ($pumPhysiCnt >= $mvhsCnt) { - $curPumpMarkStat = 'Marked'; - } - $curPumpMarkBy = ($char['pump_marked_by'] == 'jothi') ? 'Admin' : $char['pump_marked_by'] ?? $curPumpMarkBy; - // } elseif ($modelType == 'PUMPSET' && $physiCnt >= $mvhsCnt) { - // $curMarkStat = 'Marked'; - } - if ($curMotorMarkStat == 'Marked' && $curPumpMarkStat == 'Marked') { - $curMarkStat = 'Marked'; - } elseif (Str::contains($curHead, 'PUMP', ignoreCase: true) && ! Str::contains($curHead, 'PUMP SET', ignoreCase: true) && ! Str::contains($curHead, 'PUMPSET', ignoreCase: true) && ! Str::contains($curHead, 'PUMPS', ignoreCase: true)) { - if ($modelType == 'PUMP' && $pumPhysiCnt >= $mvhsCnt) { - $curMarkStat = 'Marked'; - } - } elseif (Str::contains($curHead, 'MOTOR', ignoreCase: true)) { - if ($modelType == 'MOTOR' && $motPhysiCnt >= $mvhsCnt) { - $curMarkStat = 'Marked'; - } - } + // $curNapMarkTim = empty($char['name_plate_marked_datetime']) ? $curNapMarkTim : $char['name_plate_marked_datetime']; - $values = [ - 'mark_status' => $curMarkStat, - 'marked_datetime' => $char['marked_datetime'] ?? now(), - 'marked_physical_count' => (string) $physiCnt, - 'marked_expected_time' => (string) $expecTim, - 'marked_by' => ($char['marked_by'] == 'jothi') ? 'Admin' : $char['marked_by'] ?? $curMarkBy, - 'motor_marked_status' => $curMotorMarkStat, - 'motor_marked_physical_count' => (string) $motPhysiCnt, - 'motor_expected_time' => (string) $motExpecTim, - 'motor_marked_by' => $curMotorMarkBy, - 'pump_marked_status' => $curPumpMarkStat, - 'pump_marked_physical_count' => (string) $pumPhysiCnt, - 'pump_expected_time' => (string) $pumExpecTim, - 'pump_marked_by' => $curPumpMarkBy, - 'name_plate_marked_status' => $curNamePlateMarkStat, - 'name_plate_expected_time' => (string) $napExpecTim, - 'name_plate_marked_by' => $curNamePlateMarkBy, - 'motor_pump_pumpset_status' => null, - 'winded_serial_number' => $char['winded_serial_number'] ?? $curWindNo, - 'motor_machine_name' => $curMMach, - 'pump_machine_name' => $curPMach, - 'name_plate_machine_name' => $char['name_plate_machine_name'] ?? $curNpMach, - 'part_validation_1' => $char['part_validation_1'] ?? $curPart1, - 'part_validation_2' => $char['part_validation_2'] ?? $curPart2, - 'samlight_logged_name' => $char['samlight_logged_name'] ?? $slUser, - 'pending_released_status' => $char['pending_released_status'] ?? 0, - 'has_work_flow_id' => $char['has_work_flow_id'] ?? $curWorkFlow, - 'updated_by' => $userName ?? null, - ]; - // $values = array_merge($values1 ?? [], $values2 ?? [], $values3 ?? [], $values4 ?? [], $values5 ?? []); + $values = [ + 'mark_status' => $markedStatus, + 'marked_datetime' => empty($char['marked_datetime']) ? now() : $char['marked_datetime'], + 'marked_by' => ($char['marked_by'] == 'jothi') ? 'Admin' : $char['marked_by'] ?? $curMarkBy, + 'motor_marked_datetime' => $curMotMarkTim, + 'motor_marked_by' => $curMotorMarkBy, + 'pump_marked_datetime' => $curPumMarkTim, + 'pump_marked_by' => $curPumpMarkBy, + 'name_plate_marked_datetime' => $curNapMarkTim, + 'name_plate_marked_by' => $curNamePlateMarkBy, + 'motor_pump_pumpset_status' => null, + 'motor_machine_name' => $curMMach, + 'pump_machine_name' => $curPMach, + 'name_plate_machine_name' => $curNpMach, + 'stopped_datetime' => now(), + 'is_stopped' => '2', + 'stopped_by' => $userName ?? null, + 'updated_by' => $userName ?? null, + ]; + } else { + if ($modelType == 'MOTOR') { + $curMotMarkTim = empty($char['motor_marked_datetime']) ? now() : $char['motor_marked_datetime']; + $curMMach = empty($char['motor_machine_name']) ? $curMMach : $char['motor_machine_name']; + $motPhysiCnt = $motPhysiCnt + 1; + $motExpecTim = $motExpecTim + $expectedTime; + if ($motPhysiCnt >= $mvhsCnt) { + $curMotorMarkStat = 'Marked'; + } + $curMotorMarkBy = ($char['motor_marked_by'] == 'jothi') ? 'Admin' : $char['motor_marked_by'] ?? $curMotorMarkBy; + } elseif ($modelType == 'PUMP') { + $curPumMarkTim = empty($char['pump_marked_datetime']) ? now() : $char['pump_marked_datetime']; + $curPMach = empty($char['pump_machine_name']) ? $curPMach : $char['pump_machine_name']; + $pumPhysiCnt = $pumPhysiCnt + 1; + $pumExpecTim = $pumExpecTim + $expectedTime; + if ($pumPhysiCnt >= $mvhsCnt) { + $curPumpMarkStat = 'Marked'; + } + $curPumpMarkBy = ($char['pump_marked_by'] == 'jothi') ? 'Admin' : $char['pump_marked_by'] ?? $curPumpMarkBy; + // } elseif ($modelType == 'PUMPSET' && $physiCnt >= $mvhsCnt) { + // $curMarkStat = 'Marked'; + } + + // $curNapMarkTim = empty($char['name_plate_marked_datetime']) ? $curNapMarkTim : $char['name_plate_marked_datetime']; + + $curRewWind = ($char['winded_rework_status'] == '1') ? '1' : $curRewWind; + + if ($curMotorMarkStat == 'Marked' && $curPumpMarkStat == 'Marked') { + $curMarkStat = 'Marked'; + } elseif (Str::contains($curHead, 'PUMP', ignoreCase: true) && ! Str::contains($curHead, 'PUMP SET', ignoreCase: true) && ! Str::contains($curHead, 'PUMPSET', ignoreCase: true) && ! Str::contains($curHead, 'PUMPS', ignoreCase: true)) { + if ($modelType == 'PUMP' && $pumPhysiCnt >= $mvhsCnt) { + $curMarkStat = 'Marked'; + } + } elseif (Str::contains($curHead, 'MOTOR', ignoreCase: true)) { + if ($modelType == 'MOTOR' && $motPhysiCnt >= $mvhsCnt) { + $curMarkStat = 'Marked'; + } + } + + $values = [ + 'mark_status' => $curMarkStat, + 'marked_datetime' => empty($char['marked_datetime']) ? now() : $char['marked_datetime'], + 'marked_physical_count' => (string) $physiCnt, + 'marked_expected_time' => (string) $expecTim, + 'marked_by' => ($char['marked_by'] == 'jothi') ? 'Admin' : $char['marked_by'] ?? $curMarkBy, + 'motor_marked_status' => $curMotorMarkStat, + 'motor_marked_physical_count' => (string) $motPhysiCnt, + 'motor_expected_time' => (string) $motExpecTim, + 'motor_marked_datetime' => $curMotMarkTim, + 'motor_marked_by' => $curMotorMarkBy, + 'pump_marked_status' => $curPumpMarkStat, + 'pump_marked_physical_count' => (string) $pumPhysiCnt, + 'pump_expected_time' => (string) $pumExpecTim, + 'pump_marked_datetime' => $curPumMarkTim, + 'pump_marked_by' => $curPumpMarkBy, + 'name_plate_marked_status' => $curNamePlateMarkStat, + 'name_plate_expected_time' => (string) $napExpecTim, + 'name_plate_marked_datetime' => $curNapMarkTim, + 'name_plate_marked_by' => $curNamePlateMarkBy, + 'motor_pump_pumpset_status' => null, + 'winded_serial_number' => empty($char['winded_serial_number']) ? $curWindNo : $char['winded_serial_number'], + 'winded_rework_status' => (string) $curRewWind, + 'motor_machine_name' => $curMMach, + 'pump_machine_name' => $curPMach, + 'name_plate_machine_name' => $curNpMach, // empty($char['name_plate_machine_name']) ? $curNpMach : $char['name_plate_machine_name'], + 'part_validation_1' => empty($char['part_validation_1']) ? $curPart1 : $char['part_validation_1'], + 'part_validation_2' => empty($char['part_validation_2']) ? $curPart2 : $char['part_validation_2'], + 'samlight_logged_name' => empty($char['samlight_logged_name']) ? $slUser : $char['samlight_logged_name'], + 'pending_released_status' => $char['pending_released_status'] ?? 0, + 'has_work_flow_id' => $char['has_work_flow_id'] ?? $curWorkFlow, + 'updated_by' => $userName ?? null, + ]; + // $values = array_merge($values1 ?? [], $values2 ?? [], $values3 ?? [], $values4 ?? [], $values5 ?? []); + } } $isAuto = true; @@ -1119,26 +1347,29 @@ class CharacteristicsController extends Controller } if ($modelType == 'MOTOR') { - $curMMach = $char['motor_machine_name'] ?? $curMMach; + $curMMach = empty($char['motor_machine_name']) ? $curMMach : $char['motor_machine_name']; } elseif ($modelType == 'PUMP') { - $curPMach = $char['pump_machine_name'] ?? $curPMach; + $curPMach = empty($char['pump_machine_name']) ? $curPMach : $char['pump_machine_name']; } elseif ($modelType == 'NAME_PLATE') { - $curNpMach = $char['name_plate_machine_name'] ?? $curNpMach; + $curNpMach = empty($char['name_plate_machine_name']) ? $curNpMach : $char['name_plate_machine_name']; } + $curRewWind = ($char['winded_rework_status'] == '1') ? '1' : $curRewWind; + $manStat = (intval($curStat->man_marked_status ?? 0) ?: 0) + 1; // $manStat = ($curStat->man_marked_status == null || $curStat->man_marked_status == '' || $curStat->man_marked_status == '0') ? 0 : (int) $curStat->man_marked_status; $values = [ 'man_marked_status' => (string) $manStat, - 'man_marked_datetime' => $char['man_marked_datetime'] ?? now(), - 'man_marked_by' => ($char['man_marked_by'] == 'jothi') ? 'Admin' : $char['man_marked_by'] ?? $curManualMarkBy, - 'winded_serial_number' => $char['winded_serial_number'] ?? $curWindNo, + 'man_marked_datetime' => empty($char['man_marked_datetime']) ? now() : $char['man_marked_datetime'], + 'man_marked_by' => (($char['man_marked_by'] == 'jothi') ? 'Admin' : $char['man_marked_by']) ?? $curManualMarkBy, + 'winded_serial_number' => empty($char['winded_serial_number']) ? $curWindNo : $char['winded_serial_number'], + 'winded_rework_status' => (string) $curRewWind, 'motor_machine_name' => $curMMach, 'pump_machine_name' => $curPMach, 'name_plate_machine_name' => $curNpMach, - 'part_validation_1' => $char['part_validation_1'] ?? $curPart1, - 'part_validation_2' => $char['part_validation_2'] ?? $curPart2, - 'samlight_logged_name' => $char['samlight_logged_name'] ?? $slUser, + 'part_validation_1' => empty($char['part_validation_1']) ? $curPart1 : $char['part_validation_1'], + 'part_validation_2' => empty($char['part_validation_2']) ? $curPart2 : $char['part_validation_2'], + 'samlight_logged_name' => empty($char['samlight_logged_name']) ? $slUser : $char['samlight_logged_name'], 'updated_by' => $userName ?? null, ]; @@ -1152,12 +1383,540 @@ class CharacteristicsController extends Controller if ($updatedRows == 0) { return response()->json([ 'status_code' => 'ERROR', - 'status_description' => $isAuto ? 'Failed to update auto marked status for the '.strtolower($modelType)." serial number '{$serialNumber}'." : 'Failed to update manual marked status for the '.strtolower($modelType)." serial number '{$serialNumber}'.", + 'status_description' => $isAuto ? "Failed to update auto {$statusTyp} status for the {$modelTyp} serial number '{$serialNumber}'." : "Failed to update manual {$statusTyp} status for the {$modelTyp} serial number '{$serialNumber}'.", ], 404); } else { return response()->json([ 'status_code' => 'SUCCESS', - 'status_description' => $isAuto ? 'Successfully auto marked status updated for the '.strtolower($modelType)." serial number '{$serialNumber}'." : 'Successfully manual marked status updated for the '.strtolower($modelType)." serial number '{$serialNumber}'.", + 'status_description' => $isAuto ? "Successfully auto {$statusTyp} status updated for the {$modelTyp} serial number '{$serialNumber}'." : "Successfully manual {$statusTyp} status updated for the {$modelTyp} serial number '{$serialNumber}'.", + ], 200); + } + } + + public function storeLaserWindStatus(Request $request) + { + $expectedUser = env('API_AUTH_USER'); + $expectedPw = env('API_AUTH_PW'); + + $header_auth = $request->header('Authorization'); + $expectedToken = $expectedUser.':'.$expectedPw; + + if ('Bearer '.$expectedToken != $header_auth) { + return response()->json([ + 'status_code' => 'ERROR', + 'status_description' => 'Invalid authorization token!', + ], 401); + } + + $userName = $request->header('user-name'); + + if (! $userName || $userName == null || $userName == '') { + return response()->json([ + 'status_code' => 'ERROR', + 'status_description' => "User name can't be empty!", + ], 404); + } elseif ($userName == 'jothi') { + $userName = 'Admin'; + } + + $data = $request->all(); + + $plantCode = $data['plant_code'] ?? ''; + $workCenter = $data['work_center'] ?? ''; + $machineName = $data['machine_name'] ?? ''; + $jobNo = $data['aufnr'] ?? ''; + $serialNumber = $data['gernr'] ?? ''; + $itemCode = $data['item_code'] ?? ''; + $modelType = $data['model_type'] ?? ''; + $windedStatus = $data['winded_status'] ?? ''; + $windedQr = $data['winded_qr'] ?? ''; + $windedCode = $data['winded_code'] ?? ''; + $windedSerialNumber = $data['winded_serial_number'] ?? ''; + + if ($plantCode == null || $plantCode == '' || ! $plantCode) { + return response()->json([ + 'status_code' => 'ERROR', + 'status_description' => "Plant code can't be empty!", + ], 400); + } elseif (! is_numeric($plantCode)) { + return response()->json([ + 'status_code' => 'ERROR', + 'status_description' => "Plant code '{$plantCode}' should contain only numeric values!", + ], 400); + } elseif (Str::length($plantCode) < 4 || Str::length($plantCode) > 7) { + return response()->json([ + 'status_code' => 'ERROR', + 'status_description' => "Plant code '{$plantCode}' must be between 4 and 7 digits only!", + ], 400); + } elseif (! preg_match('/^[1-9]\d{3,6}$/', $plantCode)) { + return response()->json([ + 'status_code' => 'ERROR', + 'status_description' => "Invalid plant code '{$plantCode}' found!", + ], 400); + } + + if ($workCenter == null || $workCenter == '' || ! $workCenter) { + return response()->json([ + 'status_code' => 'ERROR', + 'status_description' => "Work center can't be empty!", + ], 404); + } elseif (Str::length($workCenter) < 6) { + return response()->json([ + 'status_code' => 'ERROR', + 'status_description' => "Work center '{$workCenter}' should contain minimum 6 characters!", + ], 404); + } elseif (! ctype_alnum($workCenter)) { + return response()->json([ + 'status_code' => 'ERROR', + 'status_description' => "Work center '{$workCenter}' should contain only alpha-numeric values!", + ], 404); + } + + if ($modelType == null || $modelType == '' || ! $modelType) { + return response()->json([ + 'status_code' => 'ERROR', + 'status_description' => "Marked model type can't be empty!", + ], 404); + } elseif ($modelType != 'MOTOR' && $modelType != 'PUMP' && $modelType != 'NAME_PLATE') { + return response()->json([ + 'status_code' => 'ERROR', + 'status_description' => "Serial number '{$serialNumber}' doesn't have valid model type to proceed!", + ], 404); + } + + if ($jobNo != null && $jobNo != '' && $jobNo) { + if (Str::length($jobNo) < 7) { + return response()->json([ + 'status_code' => 'ERROR', + 'status_description' => "Job number '{$jobNo}' should contain minimum 7 digits!", + ], 404); + } elseif (! is_numeric($jobNo)) { + return response()->json([ + 'status_code' => 'ERROR', + 'status_description' => "Job number '{$jobNo}' should contain only numeric values!", + ], 404); + } elseif (! preg_match('/^[1-9]\d{6,}$/', $jobNo)) { + return response()->json([ + 'status_code' => 'ERROR', + 'status_description' => "Job number '{$jobNo}' should not begin with '0'!", + ], 404); + } + } + + if ($serialNumber == null || $serialNumber == '' || ! $serialNumber) { + return response()->json([ + 'status_code' => 'ERROR', + 'status_description' => "Serial number can't be empty!", + ], 404); + } elseif (Str::length($serialNumber) < 9) { + return response()->json([ + 'status_code' => 'ERROR', + 'status_description' => "Serial number '{$serialNumber}' should contain minimum 9 digits!", + ], 404); + } elseif (! ctype_alnum($serialNumber)) { + return response()->json([ + 'status_code' => 'ERROR', + 'status_description' => "Serial number '{$serialNumber}' should contain only alpha-numeric values!", + ], 404); + } elseif (! preg_match('/^[1-9][a-zA-Z0-9]{8,}$/', $serialNumber)) { + return response()->json([ + 'status_code' => 'ERROR', + 'status_description' => "Serial number '{$serialNumber}' should not begin with '0' or letter!", + ], 404); + } + + if ($itemCode == null || $itemCode == '' || ! $itemCode) { + return response()->json([ + 'status_code' => 'ERROR', + 'status_description' => "Item code can't be empty!", + ], 404); + } elseif (Str::length($itemCode) < 6) { + return response()->json([ + 'status_code' => 'ERROR', + 'status_description' => "Item code '{$itemCode}' should contain minimum 6 digits!", + ], 404); + } elseif (! ctype_alnum($itemCode)) { + return response()->json([ + 'status_code' => 'ERROR', + 'status_description' => "Item code '{$itemCode}' should contain only alpha-numeric values!", + ], 404); + } elseif (! preg_match('/^[a-zA-Z1-9][a-zA-Z0-9]{5,}$/', $itemCode)) { + return response()->json([ + 'status_code' => 'ERROR', + 'status_description' => "Item code '{$itemCode}' should not begin with '0'!", + ], 404); + } + + $plant = Plant::where('code', $plantCode)->first(); + + if (! $plant) { + return response()->json([ + 'status_code' => 'ERROR', + 'status_description' => "Plant code '{$plantCode}' not found in plant table!", + ], 404); + } + + $plantId = $plant->id; + + $user = User::where('name', $userName)->first(); + + $userPlant = User::where('name', $userName)->where('plant_id', $plantId)->first(); + + if (! $user) { + return response()->json([ + 'status_code' => 'ERROR', + 'status_description' => "User name '{$userName}' not found in users table!", + ], 403); + } elseif (! $userPlant && ! $user->hasRole('Super Admin')) { + return response()->json([ + 'status_code' => 'ERROR', + 'status_description' => "User name '{$userName}' not found for the plant code '{$plantCode}' in users table!", + ], 403); + } elseif (! $user->hasRole(['Super Admin', 'Laser Manager', 'Laser Supervisor', 'Laser Employee'])) { + return response()->json([ + 'status_code' => 'ERROR', + 'status_description' => "User '{$userName}' does not have rights!", + ], 403); + } + + $work = Machine::where('work_center', $workCenter)->first(); + + if (! $work) { + return response()->json([ + 'status_code' => 'ERROR', + 'status_description' => "Work center '{$workCenter}' not found in machines table!", + ], 404); + } + + $machine = Machine::where('work_center', $workCenter)->where('plant_id', $plantId)->first(); + + if (! $machine) { + return response()->json([ + 'status_code' => 'ERROR', + 'status_description' => "Work center '{$workCenter}' not found for the plant code '{$plantCode}' in machines table!", + ], 404); + } + + $machineId = $machine->id; + + if ($jobNo != null && $jobNo != '' && $jobNo) { + $job = ClassCharacteristic::where('aufnr', $jobNo)->first(); + + if (! $job) { + return response()->json([ + 'status_code' => 'ERROR', + 'status_description' => "Job number '{$jobNo}' not found!", + ], 404); + } + + $jobPlant = ClassCharacteristic::where('aufnr', $jobNo)->where('plant_id', $plantId)->first(); + + if (! $jobPlant) { + return response()->json([ + 'status_code' => 'ERROR', + 'status_description' => "Job number '{$jobNo}' not found for the plant code '{$plantCode}'!", + ], 404); + } + + $jobWorkCenter = ClassCharacteristic::where('aufnr', $jobNo)->where('machine_id', $machineId)->where('plant_id', $plantId)->latest()->first(); + + if (! $jobWorkCenter) { + return response()->json([ + 'status_code' => 'ERROR', + 'status_description' => "Job number '{$jobNo}' not found for the work center '{$workCenter}'!", + ], 404); + } + } + + $item = Item::where('code', $itemCode)->first(); + + if (! $item) { + return response()->json([ + 'status_code' => 'ERROR', + 'status_description' => "Item code '{$itemCode}' not found in items table!", + ], 404); + } + + $itemPlant = Item::where('code', $itemCode)->where('plant_id', $plantId)->first(); + + if (! $itemPlant) { + return response()->json([ + 'status_code' => 'ERROR', + 'status_description' => "Item code '{$itemCode}' not found for the plant code '{$plantCode}' in items table!", + ], 404); + } + + $itemId = $itemPlant->id; + + $sNo = ClassCharacteristic::where('gernr', $serialNumber)->first(); + + $typesToCreate = []; + + if (! $sNo) { + return response()->json([ + 'status_code' => 'ERROR', + 'status_description' => "Serial number '{$serialNumber}' not found!", + ], 404); + } else { + $modelHeading = $sNo->zmm_heading ?? ''; + + if (Str::contains($modelHeading, 'PRESSURE BOOSTER SYSTEM', ignoreCase: true)) { + $typesToCreate = ['MOTOR', 'PUMP', 'NAME_PLATE']; + } elseif (Str::contains($modelHeading, 'PUMP SET', ignoreCase: true) || Str::contains($modelHeading, 'PUMPSET', ignoreCase: true) || Str::contains($modelHeading, 'PUMPS', ignoreCase: true)) { + $typesToCreate = ['MOTOR', 'PUMP']; + } elseif (Str::contains($modelHeading, 'PUMP', ignoreCase: true) && ! Str::contains($modelHeading, 'PUMP SET', ignoreCase: true) && ! Str::contains($modelHeading, 'PUMPSET', ignoreCase: true) && ! Str::contains($modelHeading, 'PUMPS', ignoreCase: true)) { + $typesToCreate = ['PUMP']; + } elseif (Str::contains($modelHeading, 'MOTOR', ignoreCase: true)) { + $typesToCreate = ['MOTOR']; + } else { + return response()->json([ + 'status_code' => 'ERROR', + 'status_description' => "Unknown ZMM_HEADING : '{$modelHeading}' found!", + ], 404); + } + + if (! in_array($modelType, $typesToCreate, true)) { + return response()->json([ + 'status_code' => 'ERROR', + 'status_description' => "Model type '{$modelType}' does not match with the model heading '{$modelHeading}'!", + ], 404); + } + } + + $sNoPlant = ClassCharacteristic::where('gernr', $serialNumber)->where('plant_id', $plantId)->first(); + + if (! $sNoPlant) { + return response()->json([ + 'status_code' => 'ERROR', + 'status_description' => "Serial number '{$serialNumber}' not found for the plant code '{$plantCode}'!", + ], 404); + } + + $sNoItem = ClassCharacteristic::where('gernr', $serialNumber)->where('item_id', $itemId)->where('plant_id', $plantId)->first(); + + if (! $sNoItem) { + return response()->json([ + 'status_code' => 'ERROR', + 'status_description' => "Serial number '{$serialNumber}' not found with the item code '{$itemCode}'!", + ], 404); + } + + $curStat = ClassCharacteristic::where('gernr', $serialNumber)->where('item_id', $itemId)->where('machine_id', $machineId)->where('plant_id', $plantId)->first(); + + if (! $curStat) { + return response()->json([ + 'status_code' => 'ERROR', + 'status_description' => "Serial number '{$serialNumber}' not found for the work center '{$workCenter}'!", + ], 404); + } + + $curHead = null; + $hasMvhs = false; + if ($jobNo != null && $jobNo != '' && $jobNo) { + $jobItemCode = ClassCharacteristic::where('aufnr', $jobNo)->where('item_id', $itemId)->where('machine_id', $machineId)->where('plant_id', $plantId)->first(); + + if (! $jobItemCode) { + return response()->json([ + 'status_code' => 'ERROR', + 'status_description' => "Job number '{$jobNo}' not found with the item code '{$itemCode}'!", + ], 404); + } + + $curStat = ClassCharacteristic::where('gernr', $serialNumber)->where('item_id', $itemId)->where('aufnr', $jobNo)->where('machine_id', $machineId)->where('plant_id', $plantId)->first(); + + if (! $curStat) { + return response()->json([ + 'status_code' => 'ERROR', + 'status_description' => "Serial number '{$serialNumber}' not found for the job number '$jobNo'!", + ], 404); + } else { + $curHead = $curStat?->zmm_heading; + if (Str::contains($curHead, 'PRESSURE BOOSTER SYSTEM', ignoreCase: true)) { + $hasMvhs = true; + } + } + } else { + $curHead = $curStat?->zmm_heading; + if (Str::contains($curHead, 'PRESSURE BOOSTER SYSTEM', ignoreCase: true)) { + $hasMvhs = true; + } + } + + if ($hasMvhs == true) { + $stick = StickerMaster::where('item_id', $itemId)->first(); + + if (! $stick) { + return response()->json([ + 'status_code' => 'ERROR', + 'status_description' => "Item code '{$itemCode}' not found in sticker masters table!", + ], 404); + } + + $stickPlant = StickerMaster::where('item_id', $itemId)->where('plant_id', $plantId)->first(); + + if (! $stickPlant) { + return response()->json([ + 'status_code' => 'ERROR', + 'status_description' => "Item code '{$itemCode}' not found for the plant code '{$plantCode}' in sticker masters table!", + ], 404); + } else { + $curMvhs = trim($stickPlant?->laser_part_validation2); + if ($curMvhs == null || $curMvhs == '' || ! is_numeric($curMvhs) || Str::length($curMvhs) <= 0) { + return response()->json([ + 'status_code' => 'ERROR', + 'status_description' => 'Invalid MVHS master count found in sticker masters table!', + ], 404); + } elseif (! preg_match('/^[1-9]$/', $curMvhs)) { + return response()->json([ + 'status_code' => 'ERROR', + 'status_description' => 'The MVHS master count should be between 1 to 9!', // "MVHS master count '{$curMvhs}' should contain only numeric values between 1 to 9!" + ], 404); + // } elseif ($modelType == 'PUMPSET') { + // $mvhsCnt = 1; + } + } + } else { + if ($modelType == 'NAME_PLATE') { + return response()->json([ + 'status_code' => 'ERROR', + 'status_description' => "Serial number '{$serialNumber}' doesn't have name plate model to proceed!", + ], 404); + } elseif (Str::contains($curHead, 'PUMP', ignoreCase: true) && ! Str::contains($curHead, 'PUMP SET', ignoreCase: true) && ! Str::contains($curHead, 'PUMPSET', ignoreCase: true) && ! Str::contains($curHead, 'PUMPS', ignoreCase: true)) { + if ($modelType == 'MOTOR') { + return response()->json([ + 'status_code' => 'ERROR', + 'status_description' => "Serial number '{$serialNumber}' doesn't have motor model to proceed!", + ], 404); + // } elseif ($modelType == 'PUMPSET') { + // return response()->json([ + // 'status_code' => 'ERROR', + // 'status_description' => "Serial number '{$serialNumber}' doesn't have pumpset model to proceed!", + // ], 404); + } + } elseif (Str::contains($curHead, 'MOTOR', ignoreCase: true)) { + if ($modelType == 'PUMP') { + return response()->json([ + 'status_code' => 'ERROR', + 'status_description' => "Serial number '{$serialNumber}' doesn't have pump model to proceed!", + ], 404); + // } elseif ($modelType == 'PUMPSET') { + // return response()->json([ + // 'status_code' => 'ERROR', + // 'status_description' => "Serial number '{$serialNumber}' doesn't have pumpset model to proceed!", + // ], 404); + } + } elseif (! Str::contains($curHead, 'PUMP SET', ignoreCase: true) && ! Str::contains($curHead, 'PUMPSET', ignoreCase: true) && ! Str::contains($curHead, 'PUMPS', ignoreCase: true)) { + return response()->json([ + 'status_code' => 'ERROR', + 'status_description' => "Serial number '{$serialNumber}' doesn't have valid model type to proceed!", + ], 404); + } + } + + $updatedRows = 0; + $modelTyp = strtolower($modelType ? $modelType.' ' : ''); + $isAuto = false; + + $curMarkStat = $curStat->mark_status ?? null; + $curMotorMarkStat = $curStat->motor_marked_status ?? null; + $curPumpMarkStat = $curStat->pump_marked_status ?? null; + $curNamePlateMarkStat = $curStat->name_plate_marked_status ?? null; + + if ($jobNo != null && $jobNo != '' && $jobNo) { + if ($modelType == 'MOTOR' && ($curMarkStat == 'Marked' || $curMotorMarkStat == 'Marked')) { + return response()->json([ + 'status_code' => 'ERROR', + 'status_description' => "Motor serial number '{$serialNumber}' already marked in auto mode!", + ], 404); + } elseif ($modelType == 'PUMP' && ($curMarkStat == 'Marked' || $curPumpMarkStat == 'Marked')) { + return response()->json([ + 'status_code' => 'ERROR', + 'status_description' => "Pump serial number '{$serialNumber}' already marked in auto mode!", + ], 404); + } elseif ($modelType == 'NAME_PLATE' && ($curMarkStat == 'Marked' || $curNamePlateMarkStat == 'Marked')) { + return response()->json([ + 'status_code' => 'ERROR', + 'status_description' => "Name plate serial number '{$serialNumber}' already marked in auto mode!", + ], 404); + // } elseif ($modelType == 'PUMPSET' && $curMarkStat == 'Marked') { + // return response()->json([ + // 'status_code' => 'ERROR', + // 'status_description' => "Pumpset serial number '{$serialNumber}' already marked in auto mode!", + // ], 404); + } + + $values = [ + 'plant_id' => $plantId, + 'item_id' => $itemId, + 'machine_id' => $machineId, + 'machine_name' => $machineName, + 'aufnr' => $jobNo, + 'gernr' => $serialNumber, + 'model_type' => $modelType, + 'winded_status' => $windedStatus, + 'winded_qr' => $windedQr, + 'winded_code' => $windedCode, + 'winded_serial_number' => $windedSerialNumber, + 'created_by' => $userName ?? null, + 'updated_by' => $userName ?? null, + ]; + + $isAuto = true; + WindedSerialValidationError::create($values); + $updatedRows = 1; + } else { + if ($modelType == 'MOTOR' && $curMarkStat != 'Marked' && $curMotorMarkStat != 'Marked') { + return response()->json([ + 'status_code' => 'ERROR', + 'status_description' => "Motor serial number '{$serialNumber}' doesn't marked in auto mode!", + ], 404); + } elseif ($modelType == 'PUMP' && $curMarkStat != 'Marked' && $curPumpMarkStat != 'Marked') { + return response()->json([ + 'status_code' => 'ERROR', + 'status_description' => "Pump serial number '{$serialNumber}' doesn't marked in auto mode!", + ], 404); + } elseif ($modelType == 'NAME_PLATE' && $curMarkStat != 'Marked' && $curNamePlateMarkStat != 'Marked') { + return response()->json([ + 'status_code' => 'ERROR', + 'status_description' => "Name plate serial number '{$serialNumber}' doesn't marked in auto mode!", + ], 404); + // } elseif ($modelType == 'PUMPSET' && $curMarkStat != 'Marked') { + // return response()->json([ + // 'status_code' => 'ERROR', + // 'status_description' => "Pumpset serial number '{$serialNumber}' doesn't marked in auto mode!", + // ], 404); + } + + $values = [ + 'plant_id' => $plantId, + 'item_id' => $itemId, + 'machine_id' => $machineId, + 'machine_name' => $machineName, + 'aufnr' => $curStat?->aufnr, + 'gernr' => $serialNumber, + 'model_type' => $modelType, + 'winded_status' => $windedStatus, + 'winded_qr' => $windedQr, + 'winded_code' => $windedCode, + 'winded_serial_number' => $windedSerialNumber, + 'created_by' => $userName ?? null, + 'updated_by' => $userName ?? null, + ]; + + $isAuto = false; + WindedSerialValidationError::create($values); + $updatedRows = 1; + } + + if ($updatedRows == 0) { + return response()->json([ + 'status_code' => 'ERROR', + 'status_description' => $isAuto ? "Failed to update auto mode winding status for the {$modelTyp}serial number '{$serialNumber}'!" : "Failed to update manual mode winding status for the {$modelTyp}serial number '{$serialNumber}'!", + ], 404); + } else { + return response()->json([ + 'status_code' => 'SUCCESS', + 'status_description' => $isAuto ? "Successfully auto mode winding status updated for the {$modelTyp}serial number '{$serialNumber}'." : "Successfully manual mode winding status updated for the {$modelTyp}serial number '{$serialNumber}'.", ], 200); } } @@ -1288,7 +2047,7 @@ class CharacteristicsController extends Controller $machineId = $machine->id; // - $availFields = ['class', 'arbid', 'gamng', 'lmnga', 'zz1_cn_bill_ord', 'zmm_amps', 'zmm_brand', 'zmm_degreeofprotection', 'zmm_delivery', 'zmm_dir_rot', 'zmm_discharge', 'zmm_discharge_max', 'zmm_discharge_min', 'zmm_duty', 'zmm_eff_motor', 'zmm_eff_pump', 'zmm_frequency', 'zmm_head', 'zmm_heading', 'zmm_head_max', 'zmm_head_minimum', 'zmm_idx_eff_mtr', 'zmm_idx_eff_pump', 'zmm_kvacode', 'zmm_maxambtemp', 'zmm_mincoolingflow', 'zmm_motorseries', 'zmm_motor_model', 'zmm_outlet', 'zmm_phase', 'zmm_pressure', 'zmm_pumpflowtype', 'zmm_pumpseries', 'zmm_pump_model', 'zmm_ratedpower', 'zmm_region', 'zmm_servicefactor', 'zmm_servicefactormaximumamps', 'zmm_speed', 'zmm_suction', 'zmm_suctionxdelivery', 'zmm_supplysource', 'zmm_temperature', 'zmm_thrustload', 'zmm_volts', 'zmm_wire', 'zmm_package', 'zmm_pvarrayrating', 'zmm_isi', 'zmm_isimotor', 'zmm_isipump', 'zmm_isipumpset', 'zmm_pumpset_model', 'zmm_stages', 'zmm_headrange', 'zmm_overall_efficiency', 'zmm_connection', 'zmm_min_bore_size', 'zmm_isireference', 'zmm_category', 'zmm_submergence', 'zmm_capacitorstart', 'zmm_capacitorrun', 'zmm_inch', 'zmm_motor_type', 'zmm_dismantle_direction', 'zmm_eff_ovrall', 'zmm_bodymoc', 'zmm_rotormoc', 'zmm_dlwl', 'zmm_inputpower', 'zmm_imp_od', 'zmm_ambtemp', 'zmm_de', 'zmm_dischargerange', 'zmm_efficiency_class', 'zmm_framesize', 'zmm_impellerdiameter', 'zmm_insulationclass', 'zmm_maxflow', 'zmm_minhead', 'zmm_mtrlofconst', 'zmm_nde', 'zmm_powerfactor', 'zmm_tagno', 'zmm_year', 'zmm_laser_name', 'zmm_logo_cp', 'zmm_logo_ce', 'zmm_logo_nsf', 'zmm_logo_eac', 'zmm_grwt_motor', 'zmm_grwt_pump', 'zmm_grwt_pset', 'zmm_grwt_cable', 'zmm_grwt_pf', 'zmm_newt_motor', 'zmm_newt_pump', 'zmm_newt_pset', 'zmm_newt_cable', 'zmm_newt_pf', 'zmm_operating_range', 'zmm_intake_air', 'zmm_oxygen_transfer_rate', 'zmm_air_inlet_pipesize', 'zmm_sump_depth', 'zmm_poles', 'zmm_motor_heading', 'zmm_motor_speed', 'zmm_beenote', 'zmm_beenumber', 'zmm_beestar', 'zmm_eff_ttl', 'zmm_labelperiod', 'zmm_modelyear', 'zmm_performance_factor', 'zqmm_qty', 'zmm_operating_temperature', 'zmm_axial_force', 'zmm_codeclass', 'zmm_colour', 'zmm_grade', 'zmm_isivalve', 'zmm_isi_wc', 'zmm_length', 'zmm_license_cml_no', 'zmm_mfgmonyr', 'zmm_motoridentification', 'zmm_packtype', 'zmm_panel', 'zmm_pumpidentification', 'zmm_psettype', 'zmm_size', 'zmm_type', 'zmm_usp', 'marked_datetime', 'marked_by', 'motor_pump_pumpset_status', 'motor_machine_name', 'pump_machine_name', 'name_plate_machine_name', 'pending_released_status', 'has_work_flow_id']; // 'mark_status','marked_physical_count', 'marked_expected_time', 'man_marked_status', 'man_marked_datetime', 'man_marked_by', 'motor_marked_status', 'motor_marked_physical_count', 'motor_expected_time', 'motor_marked_by', 'pump_marked_status', 'pump_marked_physical_count', 'pump_expected_time', 'pump_marked_by', 'name_plate_marked_status', 'name_plate_expected_time', 'name_plate_marked_by', 'winded_serial_number', 'part_validation_1', 'part_validation_2', 'samlight_logged_name' + $availFields = ['class', 'arbid', 'gamng', 'lmnga', 'zz1_cn_bill_ord', 'zmm_amps', 'zmm_brand', 'zmm_degreeofprotection', 'zmm_delivery', 'zmm_dir_rot', 'zmm_discharge', 'zmm_discharge_max', 'zmm_discharge_min', 'zmm_duty', 'zmm_eff_motor', 'zmm_eff_pump', 'zmm_frequency', 'zmm_head', 'zmm_heading', 'zmm_head_max', 'zmm_head_minimum', 'zmm_idx_eff_mtr', 'zmm_idx_eff_pump', 'zmm_kvacode', 'zmm_maxambtemp', 'zmm_mincoolingflow', 'zmm_motorseries', 'zmm_motor_model', 'zmm_outlet', 'zmm_phase', 'zmm_pressure', 'zmm_pumpflowtype', 'zmm_pumpseries', 'zmm_pump_model', 'zmm_ratedpower', 'zmm_region', 'zmm_servicefactor', 'zmm_servicefactormaximumamps', 'zmm_speed', 'zmm_suction', 'zmm_suctionxdelivery', 'zmm_supplysource', 'zmm_temperature', 'zmm_thrustload', 'zmm_volts', 'zmm_wire', 'zmm_package', 'zmm_pvarrayrating', 'zmm_isi', 'zmm_isimotor', 'zmm_isipump', 'zmm_isipumpset', 'zmm_pumpset_model', 'zmm_stages', 'zmm_headrange', 'zmm_overall_efficiency', 'zmm_connection', 'zmm_min_bore_size', 'zmm_isireference', 'zmm_category', 'zmm_submergence', 'zmm_capacitorstart', 'zmm_capacitorrun', 'zmm_inch', 'zmm_motor_type', 'zmm_dismantle_direction', 'zmm_eff_ovrall', 'zmm_bodymoc', 'zmm_rotormoc', 'zmm_dlwl', 'zmm_inputpower', 'zmm_imp_od', 'zmm_ambtemp', 'zmm_de', 'zmm_dischargerange', 'zmm_efficiency_class', 'zmm_framesize', 'zmm_impellerdiameter', 'zmm_insulationclass', 'zmm_maxflow', 'zmm_minhead', 'zmm_mtrlofconst', 'zmm_nde', 'zmm_powerfactor', 'zmm_tagno', 'zmm_year', 'zmm_laser_name', 'zmm_logo_cp', 'zmm_logo_ce', 'zmm_logo_nsf', 'zmm_logo_eac', 'zmm_grwt_motor', 'zmm_grwt_pump', 'zmm_grwt_pset', 'zmm_grwt_cable', 'zmm_grwt_pf', 'zmm_newt_motor', 'zmm_newt_pump', 'zmm_newt_pset', 'zmm_newt_cable', 'zmm_newt_pf', 'zmm_operating_range', 'zmm_intake_air', 'zmm_oxygen_transfer_rate', 'zmm_air_inlet_pipesize', 'zmm_sump_depth', 'zmm_poles', 'zmm_motor_heading', 'zmm_motor_speed', 'zmm_beenote', 'zmm_beenumber', 'zmm_beestar', 'zmm_eff_ttl', 'zmm_labelperiod', 'zmm_modelyear', 'zmm_performance_factor', 'zqmm_qty', 'zmm_operating_temperature', 'zmm_axial_force', 'zmm_codeclass', 'zmm_colour', 'zmm_grade', 'zmm_isivalve', 'zmm_isi_wc', 'zmm_length', 'zmm_license_cml_no', 'zmm_mfgmonyr', 'zmm_motoridentification', 'zmm_packtype', 'zmm_panel', 'zmm_pumpidentification', 'zmm_psettype', 'zmm_size', 'zmm_type', 'zmm_usp', 'marked_datetime', 'marked_by', 'motor_pump_pumpset_status', 'motor_machine_name', 'pump_machine_name', 'name_plate_machine_name', 'pending_released_status', 'has_work_flow_id']; // 'mark_status','marked_physical_count', 'marked_expected_time', 'man_marked_status', 'man_marked_datetime', 'man_marked_by', 'motor_marked_status', 'motor_marked_physical_count', 'motor_expected_time', 'motor_marked_datetime', 'motor_marked_by', 'pump_marked_status', 'pump_marked_physical_count', 'pump_expected_time', 'pump_marked_datetime', 'pump_marked_by', 'name_plate_marked_status', 'name_plate_expected_time', 'name_plate_marked_datetime', 'name_plate_marked_by', 'winded_serial_number', 'winded_rework_status', 'part_validation_1', 'part_validation_2', 'samlight_logged_name' if ($itemCode != '' && $itemCode != null && $itemCode && Str::length($itemCode) > 0) { $existingJobNo = ClassCharacteristic::where('aufnr', $jobNo)->first(); // ->where('machine_id', $machineId)->where('plant_id', $plantId) @@ -1525,6 +2284,8 @@ class CharacteristicsController extends Controller } } + $insertData['marked_datetime'] = empty($char['marked_datetime']) ? now() : $char['marked_datetime']; + $insertData['marked_by'] = ($char['marked_by'] == 'jothi') ? 'Admin' : $char['marked_by'] ?? null; // $insertData['man_marked_by'] = ($char['man_marked_by'] == 'jothi') ? 'Admin' : $char['man_marked_by'] ?? null; // $insertData['motor_marked_by'] = ($char['motor_marked_by'] == 'jothi') ? 'Admin' : $char['motor_marked_by'] ?? null; @@ -1903,6 +2664,8 @@ class CharacteristicsController extends Controller } } + $insertData['marked_datetime'] = empty($char['marked_datetime']) ? now() : $char['marked_datetime']; + $insertData['marked_by'] = ($char['marked_by'] == 'jothi') ? 'Admin' : $char['marked_by'] ?? null; // $insertData['man_marked_by'] = ($char['man_marked_by'] == 'jothi') ? 'Admin' : $char['man_marked_by'] ?? null; // $insertData['motor_marked_by'] = ($char['motor_marked_by'] == 'jothi') ? 'Admin' : $char['motor_marked_by'] ?? null; @@ -2173,7 +2936,7 @@ class CharacteristicsController extends Controller ], 404); } - $columnsToShow = ['mark_status', 'marked_datetime', 'marked_physical_count', 'marked_expected_time', 'marked_by', 'man_marked_status', 'man_marked_datetime', 'man_marked_by', 'motor_marked_status', 'motor_marked_physical_count', 'motor_expected_time', 'motor_marked_by', 'pump_marked_status', 'pump_marked_physical_count', 'pump_expected_time', 'pump_marked_by', 'name_plate_marked_status', 'name_plate_expected_time', 'name_plate_marked_by', 'motor_pump_pumpset_status', 'winded_serial_number', 'motor_machine_name', 'pump_machine_name', 'name_plate_machine_name', 'part_validation_1', 'part_validation_2', 'samlight_logged_name', 'pending_released_status', 'has_work_flow_id']; + $columnsToShow = ['mark_status', 'marked_datetime', 'marked_physical_count', 'marked_expected_time', 'marked_by', 'man_marked_status', 'man_marked_datetime', 'man_marked_by', 'motor_marked_status', 'motor_marked_physical_count', 'motor_expected_time', 'motor_marked_datetime', 'motor_marked_by', 'pump_marked_status', 'pump_marked_physical_count', 'pump_expected_time', 'pump_marked_datetime', 'pump_marked_by', 'name_plate_marked_status', 'name_plate_expected_time', 'name_plate_marked_datetime', 'name_plate_marked_by', 'motor_pump_pumpset_status', 'winded_serial_number', 'winded_rework_status', 'motor_machine_name', 'pump_machine_name', 'name_plate_machine_name', 'part_validation_1', 'part_validation_2', 'samlight_logged_name', 'pending_released_status', 'has_work_flow_id']; $characteristicsColumns = ['class', 'arbid', 'gamng', 'lmnga', 'zz1_cn_bill_ord', 'zmm_amps', 'zmm_brand', 'zmm_degreeofprotection', 'zmm_delivery', 'zmm_dir_rot', 'zmm_discharge', 'zmm_discharge_max', 'zmm_discharge_min', 'zmm_duty', 'zmm_eff_motor', 'zmm_eff_pump', 'zmm_frequency', 'zmm_head', 'zmm_heading', 'zmm_head_max', 'zmm_head_minimum', 'zmm_idx_eff_mtr', 'zmm_idx_eff_pump', 'zmm_kvacode', 'zmm_maxambtemp', 'zmm_mincoolingflow', 'zmm_motorseries', 'zmm_motor_model', 'zmm_outlet', 'zmm_phase', 'zmm_pressure', 'zmm_pumpflowtype', 'zmm_pumpseries', 'zmm_pump_model', 'zmm_ratedpower', 'zmm_region', 'zmm_servicefactor', 'zmm_servicefactormaximumamps', 'zmm_speed', 'zmm_suction', 'zmm_suctionxdelivery', 'zmm_supplysource', 'zmm_temperature', 'zmm_thrustload', 'zmm_volts', 'zmm_wire', 'zmm_package', 'zmm_pvarrayrating', 'zmm_isi', 'zmm_isimotor', 'zmm_isipump', 'zmm_isipumpset', 'zmm_pumpset_model', 'zmm_stages', 'zmm_headrange', 'zmm_overall_efficiency', 'zmm_connection', 'zmm_min_bore_size', 'zmm_isireference', 'zmm_category', 'zmm_submergence', 'zmm_capacitorstart', 'zmm_capacitorrun', 'zmm_inch', 'zmm_motor_type', 'zmm_dismantle_direction', 'zmm_eff_ovrall', 'zmm_bodymoc', 'zmm_rotormoc', 'zmm_dlwl', 'zmm_inputpower', 'zmm_imp_od', 'zmm_ambtemp', 'zmm_de', 'zmm_dischargerange', 'zmm_efficiency_class', 'zmm_framesize', 'zmm_impellerdiameter', 'zmm_insulationclass', 'zmm_maxflow', 'zmm_minhead', 'zmm_mtrlofconst', 'zmm_nde', 'zmm_powerfactor', 'zmm_tagno', 'zmm_year', 'zmm_laser_name', 'zmm_logo_cp', 'zmm_logo_ce', 'zmm_logo_nsf', 'zmm_logo_eac', 'zmm_grwt_motor', 'zmm_grwt_pump', 'zmm_grwt_pset', 'zmm_newt_motor', 'zmm_newt_pump', 'zmm_newt_pset', 'zmm_operating_range', 'zmm_intake_air', 'zmm_oxygen_transfer_rate', 'zmm_air_inlet_pipesize', 'zmm_sump_depth', 'zmm_poles', 'zmm_motor_heading', 'zmm_motor_speed', 'zmm_beenote', 'zmm_beenumber', 'zmm_beestar', 'zmm_eff_ttl', 'zmm_labelperiod', 'zmm_modelyear', 'zmm_performance_factor', 'zqmm_qty', 'zmm_operating_temperature', 'zmm_axial_force']; @@ -2965,7 +3728,7 @@ class CharacteristicsController extends Controller return response()->json([ 'ZMM_HEADING' => $serialExists->zmm_heading ?? '', 'MARK_STATUS' => $serialExists->mark_status ?? '', - 'MARKED_DATETIME' => $serialExists->marked_datetime, + 'MARKED_DATETIME' => $serialExists->marked_datetime ?? '', 'MARKED_PHYSICAL_COUNT' => $serialExists->marked_physical_count ?? '0', 'MARKED_EXPECTED_TIME' => $serialExists->marked_expected_time ?? '0', 'MARKED_BY' => ($serialExists->marked_by == 'Admin') ? 'jothi' : $serialExists->marked_by ?? '', @@ -2975,16 +3738,20 @@ class CharacteristicsController extends Controller 'MOTOR_MARKED_STATUS' => $serialExists->motor_marked_status ?? '', 'MOTOR_MARKED_PHYSICAL_COUNT' => $serialExists->motor_marked_physical_count ?? '0', 'MOTOR_EXPECTED_TIME' => $serialExists->motor_expected_time ?? '0', + 'MOTOR_MARKED_DATETIME' => $serialExists->motor_marked_datetime ?? '', 'MOTOR_MARKED_BY' => ($serialExists->motor_marked_by == 'Admin') ? 'jothi' : $serialExists->motor_marked_by ?? '', 'PUMP_MARKED_STATUS' => $serialExists->pump_marked_status ?? '', 'PUMP_MARKED_PHYSICAL_COUNT' => $serialExists->pump_marked_physical_count ?? '0', 'PUMP_EXPECTED_TIME' => $serialExists->pump_expected_time ?? '0', + 'PUMP_MARKED_DATETIME' => $serialExists->pump_marked_datetime ?? '', 'PUMP_MARKED_BY' => ($serialExists->pump_marked_by == 'Admin') ? 'jothi' : $serialExists->pump_marked_by ?? '', 'NAME_PLATE_MARKED_STATUS' => $serialExists->name_plate_marked_status ?? '', 'NAME_PLATE_EXPECTED_TIME' => $serialExists->name_plate_expected_time ?? '0', + 'NAME_PLATE_MARKED_DATETIME' => $serialExists->name_plate_marked_datetime ?? '', 'NAME_PLATE_MARKED_BY' => ($serialExists->name_plate_marked_by == 'Admin') ? 'jothi' : $serialExists->name_plate_marked_by ?? '', 'MOTOR_PUMP_PUMPSET_STATUS' => $serialExists->motor_pump_pumpset_status ?? '', 'WINDED_SERIAL_NUMBER' => $serialExists->winded_serial_number ?? '', + 'WINDED_REWORK_STATUS' => $serialExists->winded_rework_status ?? '0', 'MOTOR_MACHINE_NAME' => $serialExists->motor_machine_name ?? '', 'PUMP_MACHINE_NAME' => $serialExists->pump_machine_name ?? '', 'NAME_PLATE_MACHINE_NAME' => $serialExists->name_plate_machine_name ?? '', -- 2.49.1