diff --git a/app/Console/Commands/TriggerPendingApprovalMails.php b/app/Console/Commands/TriggerPendingApprovalMails.php
index 3673398..c914972 100644
--- a/app/Console/Commands/TriggerPendingApprovalMails.php
+++ b/app/Console/Commands/TriggerPendingApprovalMails.php
@@ -5,9 +5,12 @@ namespace App\Console\Commands;
use App\Mail\CharacteristicApprovalMail;
use App\Models\CharacteristicApproverMaster;
use App\Models\RequestCharacteristic;
+use App\Models\TempClassCharacteristic;
+// use App\Models\TempClassCharacteristic;
use Illuminate\Console\Command;
use Illuminate\Support\Facades\Mail;
use Illuminate\Support\Carbon;
+use Illuminate\Support\Facades\Schema;
class TriggerPendingApprovalMails extends Command
{
@@ -40,6 +43,8 @@ class TriggerPendingApprovalMails extends Command
public $subjectLine;
+ // public $tempCharacteristics = [];
+
public $wfId;
public function handle()
@@ -195,6 +200,38 @@ class TriggerPendingApprovalMails extends Command
$updateData['mail_status'] = 'Sent-Mail3';
}
+ $totalMinutes =
+ $this->convertToMinutes($approver->duration1 ?? 0) +
+ $this->convertToMinutes($approver->duration2 ?? 0) +
+ $this->convertToMinutes($approver->duration3 ?? 0);
+
+ $expiryTime = Carbon::parse($first->created_at)
+ ->copy()
+ ->addMinutes($totalMinutes);
+
+ $ids = $groupRecords->pluck('id');
+
+ $this->info("Expiry Time for ID {$first->id}: {$expiryTime}, Now: {$now}");
+
+ // --- AUTO REJECT ---
+ if (
+ $first->mail_status == 'Sent-Mail3' &&
+ (is_null($first->approver_status1) || $first->approver_status1 == 'Hold') &&
+ (is_null($first->approver_status2) || $first->approver_status2 == 'Hold') &&
+ (is_null($first->approver_status3) || $first->approver_status3 == 'Hold') &&
+ $now->gte($expiryTime)
+ ) {
+ RequestCharacteristic::whereIn('id', $ids)
+ ->update([
+ 'approver_status3' => 'Rejected',
+ 'approver_remark3' => 'Time Limit Reached',
+ 'approved3_at' => now(),
+ ]);
+
+ $this->info("Auto Rejected ID: {$first->id}");
+ continue;
+ }
+
if (!$level || !$mail) {
continue;
}
@@ -203,6 +240,8 @@ class TriggerPendingApprovalMails extends Command
$subjectLine = 'Characteristic Approval Mail';
+ // $emails = array_map('trim', explode(',', $mail));
+
Mail::to($mail)->send(
new CharacteristicApprovalMail(
$first,
@@ -251,6 +290,23 @@ class TriggerPendingApprovalMails extends Command
return $approver && $approver->approver_type == 'Quality';
});
+ // $approvers = CharacteristicApproverMaster::where('approver_type', 'Quality')
+ // ->get()
+ // ->keyBy('id');
+
+ // $qualityRecords = RequestCharacteristic::where(function ($q) {
+ // $q->whereNull('approver_status1')->orWhere('approver_status1', 'Hold');
+ // })
+ // ->where(function ($q) {
+ // $q->whereNull('approver_status2')->orWhere('approver_status2', 'Hold');
+ // })
+ // ->where(function ($q) {
+ // $q->whereNull('approver_status3')->orWhere('approver_status3', 'Hold');
+ // })
+ // ->whereIn('characteristic_approver_master_id', $approvers->keys())
+ // ->get();
+
+
if ($qualityRecords->isEmpty()) {
$this->info('No quality pending approvals');
return;
@@ -283,6 +339,43 @@ class TriggerPendingApprovalMails extends Command
continue;
}
+ $columns = Schema::getColumnListing('temp_class_characteristics');
+
+ $exclude = ['id', 'plant_id', 'machine_id', 'item_id', 'aufnr', 'class', 'arbid', 'gamng', 'lmnga', 'zz1_cn_bill_ord', 'zmm_heading', 'created_at', 'updated_at', 'deleted_at', 'has_work_flow_id', 'model_type', 'created_by', 'updated_by' ];
+
+ $filteredColumns = array_diff($columns, $exclude);
+
+ $row1 = TempClassCharacteristic::where('plant_id', $first->plant_id)
+ ->where('machine_id', $first->machine_id)
+ ->where('aufnr', $first->aufnr)
+ ->where('model_type', $first->model_type)
+ ->latest()
+ ->first();
+
+ $this->info(json_encode([
+ 'id' => $row1->id,
+ 'plant_id' => $row1->plant_id,
+ 'machine_id' => $row1->machine_id,
+ 'aufnr' => $row1->aufnr,
+ 'motor_speed' => $row1->zmm_motor_speed,
+ 'all_data' => $row1->toArray(),
+ ]));
+
+ $data = [];
+
+ if ($row1) {
+ foreach ($filteredColumns as $column) {
+
+ $value = $row1->getAttribute($column);
+
+ if ($value != null && $value != '') {
+ $data[$column] = $value;
+ }
+ }
+ }
+
+ $characteristics = $data;
+
$level = null;
$mail = null;
$name = null;
@@ -359,6 +452,38 @@ class TriggerPendingApprovalMails extends Command
$updateData['mail_status'] = 'Sent-Mail3';
}
+ $totalMinutes =
+ $this->convertToMinutes($approver->duration1 ?? 0) +
+ $this->convertToMinutes($approver->duration2 ?? 0) +
+ $this->convertToMinutes($approver->duration3 ?? 0);
+
+ $expiryTime = Carbon::parse($first->created_at)
+ ->copy()
+ ->addMinutes($totalMinutes);
+
+ $ids = $groupRecords->pluck('id');
+
+ $this->info("Expiry Time for ID {$first->id}: {$expiryTime}, Now: {$now}");
+
+ // --- AUTO REJECT ---
+ if (
+ $first->mail_status == 'Sent-Mail3' &&
+ (is_null($first->approver_status1) || $first->approver_status1 == 'Hold') &&
+ (is_null($first->approver_status2) || $first->approver_status2 == 'Hold') &&
+ (is_null($first->approver_status3) || $first->approver_status3 == 'Hold') &&
+ $now->gte($expiryTime)
+ ) {
+ RequestCharacteristic::whereIn('id', $ids)
+ ->update([
+ 'approver_status3' => 'Rejected',
+ 'approver_remark3' => 'Time Limit Reached',
+ 'approved3_at' => now(),
+ ]);
+
+ $this->info("Auto Rejected ID: {$first->id}");
+ continue;
+ }
+
if (!$level || !$mail) {
continue;
}
@@ -381,8 +506,8 @@ class TriggerPendingApprovalMails extends Command
$pdfPath,
$pendingApprovers,
$approverNameFromMaster,
- $subjectLine
- // $characteristics
+ $subjectLine,
+ $characteristics
)
);
@@ -406,4 +531,16 @@ class TriggerPendingApprovalMails extends Command
$this->info('Approval mail job completed');
}
+
+ public function convertToMinutes($duration)
+ {
+ if (!$duration) return 0;
+
+ $parts = explode('.', (string)$duration);
+
+ $hours = (int)($parts[0] ?? 0);
+ $minutes = (int)($parts[1] ?? 0);
+
+ return ($hours * 60) + $minutes;
+ }
}
diff --git a/app/Filament/Imports/RequestCharacteristicImporter.php b/app/Filament/Imports/RequestCharacteristicImporter.php
new file mode 100644
index 0000000..83b9daf
--- /dev/null
+++ b/app/Filament/Imports/RequestCharacteristicImporter.php
@@ -0,0 +1,141 @@
+requiredMapping()
+ ->exampleHeader('PLANT CODE')
+ ->example('1000')
+ ->label('PLANT CODE')
+ ->relationship(resolveUsing: 'code')
+ ->rules(['required']),
+ ImportColumn::make('machine')
+ ->requiredMapping()
+ ->exampleHeader('WORK CENTER')
+ ->example('RMGLAS01')
+ ->label('WORK CENTER')
+ ->relationship(resolveUsing: 'work_center')
+ ->rules(['required']),
+ ImportColumn::make('item')
+ ->requiredMapping()
+ ->exampleHeader('ITEM CODE')
+ ->example('630214')
+ ->label('ITEM CODE')
+ ->relationship(resolveUsing: 'code')
+ ->rules(['required']),
+ ImportColumn::make('characteristicApproverMaster')
+ ->requiredMapping()
+ ->relationship()
+ ->rules(['required']),
+ ImportColumn::make('aufnr')
+ ->label('AUFNR')
+ ->exampleHeader('AUFNR')
+ ->example('1234567'),
+ ImportColumn::make('characteristic_name')
+ ->label('CHARACTERISTIC NAME')
+ ->exampleHeader('CHARACTERISTIC NAME')
+ ->example('ZMM_PUMPSET_MODEL'),
+ ImportColumn::make('current_value')
+ ->label('CURRENT VALUE')
+ ->exampleHeader('CURRENT VALUE')
+ ->example('MVN-32/02 D R'),
+ ImportColumn::make('update_value')
+ ->label('UPDATE VALUE')
+ ->exampleHeader('UPDATE VALUE')
+ ->example('MVN-32/02 TR3'),
+ ImportColumn::make('approver_status1')
+ ->label('APPROVER STATUS 1')
+ ->exampleHeader('APPROVER STATUS 1')
+ ->example('Hold'),
+ ImportColumn::make('approver_status2')
+ ->label('APPROVER STATUS 2')
+ ->exampleHeader('APPROVER STATUS 2')
+ ->example('Approved'),
+ ImportColumn::make('approver_status3')
+ ->label('APPROVER STATUS 3')
+ ->exampleHeader('APPROVER STATUS 3')
+ ->example('Rejected'),
+ ImportColumn::make('approver_remark1')
+ ->label('APPROVER REMARK 1')
+ ->exampleHeader('APPROVER REMARK 1')
+ ->example('Hold for review'),
+ ImportColumn::make('approver_remark2')
+ ->label('APPROVER REMARK 2')
+ ->exampleHeader('APPROVER REMARK 2')
+ ->example('Approved with comments'),
+ ImportColumn::make('approver_remark3')
+ ->label('APPROVER REMARK 3')
+ ->exampleHeader('APPROVER REMARK 3')
+ ->example('Rejected due to incorrect value'),
+ ImportColumn::make('work_flow_id')
+ ->label('WORK FLOW ID')
+ ->exampleHeader('WORK FLOW ID')
+ ->example('WF-260303-0001'),
+ ImportColumn::make('mail_status')
+ ->label('MAIL STATUS')
+ ->exampleHeader('MAIL STATUS')
+ ->example('Sent'),
+ ImportColumn::make('trigger_at')
+ ->label('TRIGGER AT')
+ ->exampleHeader('MAIL STATUS')
+ ->rules(['datetime']),
+ ImportColumn::make('approved1_at')
+ ->label('APPROVED1 AT')
+ ->exampleHeader('APPROVED1 AT')
+ ->rules(['datetime']),
+ ImportColumn::make('approved2_at')
+ ->label('APPROVED2 AT')
+ ->exampleHeader('APPROVED2 AT')
+ ->rules(['datetime']),
+ ImportColumn::make('approved3_at')
+ ->label('APPROVED3 AT')
+ ->exampleHeader('APPROVED3 AT')
+ ->rules(['datetime']),
+ ImportColumn::make('created_by')
+ ->label('CREATED BY')
+ ->exampleHeader('CREATED BY')
+ ->example('RAW01234'),
+ ImportColumn::make('updated_by')
+ ->label('UPDATED BY')
+ ->exampleHeader('UPDATED BY')
+ ->example('RAW01234'),
+ ImportColumn::make('model_type')
+ ->label('MODEL TYPE')
+ ->exampleHeader('MODEL TYPE')
+ ->example('PUMP'),
+ ];
+ }
+
+ public function resolveRecord(): ?RequestCharacteristic
+ {
+ // return RequestCharacteristic::firstOrNew([
+ // // Update existing records, matching them by `$this->data['column_name']`
+ // 'email' => $this->data['email'],
+ // ]);
+
+ return new RequestCharacteristic();
+ }
+
+ public static function getCompletedNotificationBody(Import $import): string
+ {
+ $body = 'Your request characteristic import has completed and ' . number_format($import->successful_rows) . ' ' . str('row')->plural($import->successful_rows) . ' imported.';
+
+ if ($failedRowsCount = $import->getFailedRowsCount()) {
+ $body .= ' ' . number_format($failedRowsCount) . ' ' . str('row')->plural($failedRowsCount) . ' failed to import.';
+ }
+
+ return $body;
+ }
+}
diff --git a/app/Filament/Resources/CharacteristicApproverMasterResource.php b/app/Filament/Resources/CharacteristicApproverMasterResource.php
index bebe0cf..a4244de 100644
--- a/app/Filament/Resources/CharacteristicApproverMasterResource.php
+++ b/app/Filament/Resources/CharacteristicApproverMasterResource.php
@@ -6,6 +6,7 @@ use App\Filament\Exports\CharacteristicApproverMasterExporter;
use App\Filament\Imports\CharacteristicApproverMasterImporter;
use App\Filament\Resources\CharacteristicApproverMasterResource\Pages;
use App\Models\CharacteristicApproverMaster;
+use App\Models\Item;
use App\Models\Machine;
use App\Models\Plant;
use Filament\Facades\Filament;
@@ -20,6 +21,10 @@ use Filament\Tables\Table;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\SoftDeletingScope;
use Illuminate\Validation\Rule;
+use Filament\Forms\Components\DateTimePicker;
+use Filament\Forms\Components\Select;
+use Filament\Forms\Components\TextInput;
+use Filament\Tables\Filters\Filter;
class CharacteristicApproverMasterResource extends Resource
{
@@ -392,7 +397,203 @@ class CharacteristicApproverMasterResource extends Resource
])
->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('requestCharacteristics', 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('aufnr', 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('requestCharacteristics', 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);
+ }),
+ Select::make('approver_type')
+ ->label('Approver Type')
+ ->options([
+ 'Characteristic' => 'Characteristic',
+ 'Quality' => 'Quality',
+ ])
+ ->placeholder('Select Type')
+ ->afterStateUpdated(function ($state, callable $set) {
+ $set('name1', null);
+ $set('name2', null);
+ $set('name3', null);
+ }),
+ TextInput::make('machine_name')
+ ->label('Machine Name')
+ ->placeholder('Enter Machine Name'),
+ TextInput::make('characteristic_field')
+ ->label('Characteristic Field')
+ ->placeholder('Enter Characteristic Field'),
+ TextInput::make('name1')
+ ->label('Approver Name 1')
+ ->placeholder('Enter Approver Name 2')
+ ->afterStateUpdated(function ($state, callable $set) {
+ $set('name2', null);
+ $set('name3', null);
+ }),
+ TextInput::make('name2')
+ ->label('Approver Name 2')
+ ->placeholder('Enter Approver Name 2')
+ ->afterStateUpdated(function ($state, callable $set) {
+ $set('name3', null);
+ }),
+ TextInput::make('name3')
+ ->label('Approver Name 3')
+ ->placeholder('Enter Approver Name 2'),
+ DateTimePicker::make(name: '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),
+ ])
+ ->query(function ($query, array $data) {
+ // Hide all records initially if no filters are applied
+ if (empty($data['Plant']) && empty($data['machine']) && empty($data['machine_name']) && empty($data['characteristic_field']) && empty($data['approver_type']) && empty($data['name1']) && empty($data['name2']) && empty($data['name3']) && empty($data['created_from']) && empty($data['created_to'])) {
+ 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['characteristic_field'])) {
+ $query->where('characteristic_field', 'like', '%'.$data['characteristic_field'].'%');
+ }
+
+ if (! empty($data['approver_type'])) {
+ $query->where('approver_type', 'like', '%'.$data['approver_type'].'%');
+ }
+
+ if (! empty($data['name1'])) {
+ $query->where('name1', 'like', '%'.$data['name1'].'%');
+ }
+
+ if (! empty($data['name2'])) {
+ $query->where('name2', 'like', '%'.$data['name2'].'%');
+ }
+
+ if (! empty($data['name3'])) {
+ $query->where('name3', 'like', '%'.$data['name3'].'%');
+ }
+
+ if (! empty($data['created_from'])) {
+ $query->where('created_at', '>=', $data['created_from']);
+ }
+
+ if (! empty($data['created_to'])) {
+ $query->where('created_at', '<=', $data['created_to']);
+ }
+ })
+ ->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['characteristic_field'])) {
+ $indicators[] = 'Characteristic Field: '.$data['characteristic_field'];
+ }
+
+ if (! empty($data['approver_type'])) {
+ $indicators[] = 'Approver Type: '.$data['approver_type'];
+ }
+
+ if (! empty($data['name1'])) {
+ $indicators[] = 'Approver Name 1: '.$data['name1'];
+ }
+
+ if (! empty($data['name2'])) {
+ $indicators[] = 'Approver Name 2: '.$data['name2'];
+ }
+
+ if (! empty($data['name3'])) {
+ $indicators[] = 'Approver Name 3: '.$data['name3'];
+ }
+
+ if (! empty($data['created_from'])) {
+ $indicators[] = 'From: '.$data['created_from'];
+ }
+
+ if (! empty($data['created_to'])) {
+ $indicators[] = 'To: '.$data['created_to'];
+ }
+
+ return $indicators;
+ }),
])
+ ->filtersFormMaxHeight('280px')
->actions([
Tables\Actions\ViewAction::make(),
Tables\Actions\EditAction::make(),
diff --git a/app/Filament/Resources/ClassCharacteristicResource.php b/app/Filament/Resources/ClassCharacteristicResource.php
index fa8cb52..6517e81 100644
--- a/app/Filament/Resources/ClassCharacteristicResource.php
+++ b/app/Filament/Resources/ClassCharacteristicResource.php
@@ -2028,6 +2028,12 @@ class ClassCharacteristicResource extends Resource
TextInput::make('gernr')
->label('Serial Number')
->placeholder('Enter Serial Number'),
+ TextInput::make('zmm_heading')
+ ->label('Heading')
+ ->placeholder('Enter Heading'),
+ TextInput::make('model_type')
+ ->label('Model Type')
+ ->placeholder('Enter Model Type'),
DateTimePicker::make(name: 'created_from')
->label('Created From')
->placeholder('Select From DateTime')
@@ -2041,7 +2047,7 @@ class ClassCharacteristicResource extends Resource
])
->query(function ($query, array $data) {
// Hide all records initially if no filters are applied
- if (empty($data['Plant']) && empty($data['machine']) && empty($data['item_id']) && empty($data['aufnr']) && empty($data['gernr']) && empty($data['created_from']) && empty($data['created_to'])) {
+ if (empty($data['Plant']) && empty($data['machine']) && empty($data['item_id']) && empty($data['aufnr']) && empty($data['gernr']) && empty($data['zmm_heading']) && empty($data['model_type']) && empty($data['created_from']) && empty($data['created_to'])) {
return $query->whereRaw('1 = 0');
}
@@ -2071,6 +2077,14 @@ class ClassCharacteristicResource extends Resource
$query->where('gernr', 'like', '%'.$data['gernr'].'%');
}
+ if (! empty($data['zmm_heading'])) {
+ $query->where('zmm_heading', 'like', '%'.$data['zmm_heading'].'%');
+ }
+
+ if (! empty($data['model_type'])) {
+ $query->where('model_type', 'like', '%'.$data['model_type'].'%');
+ }
+
if (! empty($data['created_from'])) {
$query->where('created_at', '>=', $data['created_from']);
}
@@ -2108,6 +2122,14 @@ class ClassCharacteristicResource extends Resource
$indicators[] = 'Serial Number: '.$data['gernr'];
}
+ if (! empty($data['zmm_heading'])) {
+ $indicators[] = 'Heading: '.$data['zmm_heading'];
+ }
+
+ if (! empty($data['model_type'])) {
+ $indicators[] = 'Model Type: '.$data['model_type'];
+ }
+
if (! empty($data['created_from'])) {
$indicators[] = 'From: '.$data['created_from'];
}
diff --git a/app/Filament/Resources/RequestCharacteristicResource.php b/app/Filament/Resources/RequestCharacteristicResource.php
index 76b8a87..79bcddc 100644
--- a/app/Filament/Resources/RequestCharacteristicResource.php
+++ b/app/Filament/Resources/RequestCharacteristicResource.php
@@ -3,12 +3,14 @@
namespace App\Filament\Resources;
use App\Filament\Exports\RequestCharacteristicExporter;
+use App\Filament\Imports\RequestCharacteristicImporter;
use App\Filament\Resources\RequestCharacteristicResource\Pages;
use App\Models\CharacteristicApproverMaster;
use App\Models\Item;
use App\Models\Machine;
use App\Models\Plant;
use App\Models\RequestCharacteristic;
+use App\Models\StickerMaster;
use Closure;
use Filament\Facades\Filament;
use Filament\Forms;
@@ -19,6 +21,7 @@ use Filament\Forms\Components\TextInput;
use Filament\Forms\Form;
use Filament\Forms\Get;
use Filament\Forms\Set;
+use Filament\Notifications\Notification;
use Filament\Resources\Resource;
use Filament\Tables;
use Filament\Tables\Actions\ExportAction;
@@ -27,6 +30,7 @@ use Filament\Tables\Filters\Filter;
use Filament\Tables\Table;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\SoftDeletingScope;
+use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Schema;
use Illuminate\Validation\Rule;
@@ -128,6 +132,16 @@ class RequestCharacteristicResource extends Resource
$set('updated_by', Filament::auth()->user()?->name);
})
->disabled(fn ($get) => self::isFieldDisabled($get)),
+ Forms\Components\Hidden::make('show_validation_image')
+ ->reactive()
+ ->default(false),
+ Forms\Components\Hidden::make('validation1_image_url')
+ ->reactive(),
+
+ Forms\Components\View::make('components.part-validation-error-icon')
+ ->statePath('validation1_image_url')
+ ->visible(fn ($get) => $get('show_validation_image') == true)
+ ->reactive(),
Forms\Components\TextInput::make('work_flow_id')
->label('Work Flow ID')
->readOnly()
@@ -139,7 +153,42 @@ class RequestCharacteristicResource extends Resource
return self::isNewWorkFlow($get);
}
$set('updated_by', Filament::auth()->user()?->name);
- }),
+ })
+ ->suffixAction(
+ Forms\Components\Actions\Action::make('toggleValidationImage')
+ ->icon(fn (callable $get) => $get('show_validation_image') ? 'heroicon-o-eye-slash' : 'heroicon-o-eye')
+ ->tooltip('View Validation Image')
+ ->action(function (callable $get, $set) {
+
+ $currentState = $get('show_validation_image');
+ $set('show_validation_image', ! $currentState);
+
+ if ($currentState == true) {
+ $set('validation1_image_url', null);
+ return;
+ }
+
+ $workFlowId = $get('work_flow_id');
+
+ if (!$workFlowId) {
+ Notification::make()
+ ->title('Missing Workflow ID')
+ ->body('Please select a Workflow ID.')
+ ->danger()
+ ->send();
+ return;
+ }
+
+ // Build filename
+ $fileName = "{$workFlowId}.png";
+
+ $imageUrl = route('workflow.image', [
+ 'filename' => $fileName,
+ ]);
+
+ $set('validation1_image_url', $imageUrl);
+ })
+ ),
// ->rule(function (callable $get) {
// return Rule::unique('request_characteristics', 'work_flow_id')
// ->where('plant_id', $get('plant_id'))
@@ -312,7 +361,7 @@ class RequestCharacteristicResource extends Resource
Forms\Components\Select::make('characteristic_approver_master_id')
->label('Master Characteristic Field')
// ->relationship('characteristicApproverMaster', 'characteristic_field')
- ->columnSpan(2)
+ // ->columnSpan(2)
->reactive()
->nullable()
->searchable()
@@ -340,6 +389,17 @@ class RequestCharacteristicResource extends Resource
$set('updated_by', Filament::auth()->user()?->name);
})
->required(),
+ Forms\Components\TextInput::make('model_type')
+ ->label('Model Type')
+ ->reactive()
+ ->nullable()
+ ->afterStateUpdated(function ($state, callable $set, callable $get) {
+ $set('characteristic_name', null);
+ $set('current_value', null);
+ $set('update_value', null);
+ $set('updated_by', Filament::auth()->user()?->name);
+ })
+ ->required(),
// ->disabled(fn ($get) => self::isFieldDisabled($get))
Section::make('Request Characteristic Details')
// ->columnSpan(['default' => 2, 'sm' => 4])
@@ -500,6 +560,7 @@ class RequestCharacteristicResource extends Resource
Forms\Components\TextInput::make('approver_remark1')
->label('Approver Remark')
->live()
+ ->maxLength(60)
->afterStateUpdated(function ($state, callable $set, callable $get) {
$appStat = $get('approver_status1');
if ($appStat && $state) {
@@ -615,6 +676,7 @@ class RequestCharacteristicResource extends Resource
Forms\Components\TextInput::make('approver_remark2')
->label('Approver Remark')
->live()
+ ->maxLength(60)
->afterStateUpdated(function ($state, callable $set, callable $get) {
$appStat = $get('approver_status2');
if ($appStat && $state) {
@@ -727,6 +789,7 @@ class RequestCharacteristicResource extends Resource
Forms\Components\TextInput::make('approver_remark3')
->label('Approver Remark')
->live()
+ ->maxLength(60)
->afterStateUpdated(function ($state, callable $set, callable $get) {
$appStat = $get('approver_status3');
if ($appStat && $state) {
@@ -916,6 +979,11 @@ class RequestCharacteristicResource extends Resource
->formatStateUsing(fn (string $state): string => strtoupper(__($state)))
->extraAttributes(['class' => 'uppercase'])
->sortable(),
+ Tables\Columns\TextColumn::make('model_type')
+ ->label('Model Type')
+ ->alignCenter()
+ ->searchable()
+ ->sortable(),
Tables\Columns\TextColumn::make('characteristic_name')
->label('Characteristic Name')
->default('-')
@@ -956,12 +1024,14 @@ class RequestCharacteristicResource extends Resource
default => 'gray',
})
->alignCenter()
+ ->default('-')
->searchable()
->sortable(),
Tables\Columns\TextColumn::make('approver_remark1')
->label('Approver Remark 1')
// ->color('success')
->alignCenter()
+ ->default('-')
->searchable()
->sortable(),
Tables\Columns\TextColumn::make('approved1_at')
@@ -984,12 +1054,14 @@ class RequestCharacteristicResource extends Resource
default => 'gray',
})
->alignCenter()
+ ->default('-')
->searchable()
->sortable(),
Tables\Columns\TextColumn::make('approver_remark2')
->label('Approver Remark 2')
// ->color('success')
->alignCenter()
+ ->default('-')
->searchable()
->sortable(),
Tables\Columns\TextColumn::make('approved2_at')
@@ -1012,12 +1084,14 @@ class RequestCharacteristicResource extends Resource
default => 'gray',
})
->alignCenter()
+ ->default('-')
->searchable()
->sortable(),
Tables\Columns\TextColumn::make('approver_remark3')
->label('Approver Remark 3')
// ->color('success')
->alignCenter()
+ ->default('-')
->searchable()
->sortable(),
Tables\Columns\TextColumn::make('approved3_at')
@@ -1160,6 +1234,67 @@ class RequestCharacteristicResource extends Resource
->numeric()
->minlength(7)
->maxlength(10),
+ TextInput::make('work_flow_id')
+ ->label('Work Flow ID')
+ ->placeholder('Enter Work Flow ID'),
+ TextInput::make('machine_name')
+ ->label('Machine Name')
+ ->placeholder('Enter Machine Name'),
+ Select::make('request_type')
+ ->label('Request Type')
+ ->options([
+ 'Characteristic' => 'Characteristic',
+ 'Quality' => 'Quality',
+ ])
+ ->placeholder('Select Request Type'),
+ TextInput::make('master_characteristic_field')
+ ->label('Master Characteristic Field')
+ ->placeholder('Enter Master Characteristic Field'),
+ TextInput::make('model_type')
+ ->label('Model Type')
+ ->placeholder('Enter Model Type'),
+ Select::make('approver_status')
+ ->label('Approver Status')
+ ->options([
+ 'Approved' => 'Approved',
+ 'Hold' => 'Hold',
+ 'Rejected' => 'Rejected',
+ ])
+ ->placeholder('Select Status')
+ ->afterStateUpdated(function ($state, callable $set) {
+ $set('approver_status1', null);
+ $set('approver_status2', null);
+ $set('approver_status3', null);
+ }),
+ Select::make('approver_status1')
+ ->label('Approver Status 1')
+ ->options([
+ 'Approved' => 'Approved',
+ 'Hold' => 'Hold',
+ 'Rejected' => 'Rejected',
+ ])
+ ->placeholder('Select Status')
+ ->afterStateUpdated(function ($state, callable $set) {
+ $set('approver_status2', null);
+ $set('approver_status3', null);
+ }),
+ Select::make('approver_status2')
+ ->label('Approver Status 2')
+ ->options([
+ 'Approved' => 'Approved',
+ 'Hold' => 'Hold',
+ 'Rejected' => 'Rejected',
+ ])
+ ->placeholder('Select Status'),
+ Select::make('approver_status3')
+ ->label('Approver Status 3')
+ ->options([
+ 'Approved' => 'Approved',
+ 'Hold' => 'Hold',
+ 'Rejected' => 'Rejected',
+ ])
+ ->placeholder('Select Status'),
+
DateTimePicker::make(name: 'created_from')
->label('Created From')
->placeholder('Select From DateTime')
@@ -1173,7 +1308,7 @@ class RequestCharacteristicResource extends Resource
])
->query(function ($query, array $data) {
// Hide all records initially if no filters are applied
- if (empty($data['Plant']) && empty($data['machine']) && empty($data['item_id']) && empty($data['aufnr']) && empty($data['created_from']) && empty($data['created_to'])) {
+ if (empty($data['Plant']) && empty($data['machine']) && empty($data['item_id']) && empty($data['aufnr']) && empty($data['model_type']) && empty($data['work_flow_id']) && empty($data['machine_name']) && empty($data['request_type']) && empty($data['master_characteristic_field'])&& empty($data['approver_status1']) && empty($data['approver_status2']) && empty($data['approver_status3']) && empty($data['approver_status']) && empty($data['created_from']) && empty($data['created_to'])) {
return $query->whereRaw('1 = 0');
}
@@ -1199,6 +1334,70 @@ class RequestCharacteristicResource extends Resource
$query->where('aufnr', 'like', '%'.$data['aufnr'].'%');
}
+ if (! empty($data['model_type'])) {
+ $query->where('model_type', 'like', '%'.$data['model_type'].'%');
+ }
+
+ if (! empty($data['work_flow_id'])) {
+ $query->where('work_flow_id', 'like', '%'.$data['work_flow_id'].'%');
+ }
+
+ if (!empty($data['machine_name'])) {
+ $query->whereHas('characteristicApproverMaster', function ($q) use ($data) {
+ $q->where('characteristic_approver_masters.machine_name', '=', (string) $data['machine_name']);
+ });
+ }
+
+ if (!empty($data['request_type'])) {
+ $query->whereHas('characteristicApproverMaster', function ($q) use ($data) {
+ $q->where('characteristic_approver_masters.approver_type', '=', (string) $data['request_type']);
+ });
+ }
+
+ if (!empty($data['master_characteristic_field'])) {
+ $query->whereHas('characteristicApproverMaster', function ($q) use ($data) {
+ $q->where('characteristic_approver_masters.characteristic_field', '=', (string) $data['master_characteristic_field']);
+ });
+ }
+
+ if (! empty($data['approver_status1'])) {
+ $query->where('approver_status1', 'like', '%'.$data['approver_status1'].'%');
+ }
+
+ if (! empty($data['approver_status2'])) {
+ $query->where('approver_status2', 'like', '%'.$data['approver_status2'].'%');
+ }
+
+ if (! empty($data['approver_status3'])) {
+ $query->where('approver_status3', 'like', '%'.$data['approver_status3'].'%');
+ }
+
+ if (!empty($data['approver_status'])) {
+
+ $status = $data['approver_status'];
+
+ $query->whereRaw("
+ CASE
+
+ -- If status3 exists, it must be considered first
+ WHEN approver_status3 IS NOT NULL AND approver_status3 != ''
+ THEN approver_status3
+
+ -- then status2 overrides only if status3 is empty
+ WHEN approver_status2 IS NOT NULL AND approver_status2 != ''
+ THEN approver_status2
+
+ -- finally status1 only if both 2 and 3 are empty
+ WHEN approver_status1 IS NOT NULL AND approver_status1 != ''
+ THEN approver_status1
+
+ ELSE NULL
+
+ END = ?
+ ", [$status]);
+
+ }
+
if (! empty($data['created_from'])) {
$query->where('created_at', '>=', $data['created_from']);
}
@@ -1232,6 +1431,42 @@ class RequestCharacteristicResource extends Resource
$indicators[] = 'Job No: '.$data['aufnr'];
}
+ if (! empty($data['model_type'])) {
+ $indicators[] = 'Model Type: '.$data['model_type'];
+ }
+
+ if (! empty($data['work_flow_id'])) {
+ $indicators[] = 'Work Flow ID: '.$data['work_flow_id'];
+ }
+
+ if (! empty($data['machine_name'])) {
+ $indicators[] = 'Machine Name: '.$data['machine_name'];
+ }
+
+ if (! empty($data['request_type'])) {
+ $indicators[] = 'Request Type: '.$data['request_type'];
+ }
+
+ if (! empty($data['master_characteristic_field'])) {
+ $indicators[] = 'Master Characteristic Field: '.$data['master_characteristic_field'];
+ }
+
+ if (! empty($data['approver_status'])) {
+ $indicators[] = 'Approver Status: '.$data['approver_status'];
+ }
+
+ if (! empty($data['approver_status1'])) {
+ $indicators[] = 'Approver Status 1: '.$data['approver_status1'];
+ }
+
+ if (! empty($data['approver_status2'])) {
+ $indicators[] = 'Approver Status 2: '.$data['approver_status2'];
+ }
+
+ if (! empty($data['approver_status3'])) {
+ $indicators[] = 'Approver Status 3: '.$data['approver_status3'];
+ }
+
if (! empty($data['created_from'])) {
$indicators[] = 'From: '.$data['created_from'];
}
@@ -1256,13 +1491,13 @@ class RequestCharacteristicResource extends Resource
]),
])
->headerActions([
- // ImportAction::make()
- // ->label('Import Request Characteristics')
- // ->color('warning')
- // ->importer(RequestCharacteristicImporter::class)
- // ->visible(function () {
- // return Filament::auth()->user()->can('view import request characteristic');
- // }),
+ ImportAction::make()
+ ->label('Import Request Characteristics')
+ ->color('warning')
+ ->importer(RequestCharacteristicImporter::class)
+ ->visible(function () {
+ return Filament::auth()->user()->can('view import request characteristic');
+ }),
ExportAction::make()
->label('Export Request Characteristics')
->color('warning')
diff --git a/app/Filament/Resources/TempClassCharacteristicResource.php b/app/Filament/Resources/TempClassCharacteristicResource.php
index 8f31706..4db6d17 100644
--- a/app/Filament/Resources/TempClassCharacteristicResource.php
+++ b/app/Filament/Resources/TempClassCharacteristicResource.php
@@ -5,28 +5,27 @@ namespace App\Filament\Resources;
use App\Filament\Exports\TempClassCharacteristicExporter;
use App\Filament\Imports\TempClassCharacteristicImporter;
use App\Filament\Resources\TempClassCharacteristicResource\Pages;
-use App\Filament\Resources\TempClassCharacteristicResource\RelationManagers;
use App\Models\Item;
use App\Models\Machine;
use App\Models\Plant;
use App\Models\TempClassCharacteristic;
use Filament\Facades\Filament;
use Filament\Forms;
+use Filament\Forms\Components\DateTimePicker;
+use Filament\Forms\Components\Section;
+use Filament\Forms\Components\Select;
+use Filament\Forms\Components\TextInput;
use Filament\Forms\Form;
+use Filament\Forms\Get;
use Filament\Resources\Resource;
use Filament\Tables;
-use Filament\Tables\Table;
-use Illuminate\Database\Eloquent\Builder;
-use Illuminate\Database\Eloquent\SoftDeletingScope;
-use Filament\Forms\Components\Section;
-use Filament\Forms\Get;
-use Illuminate\Validation\Rule;
use Filament\Tables\Actions\ExportAction;
use Filament\Tables\Actions\ImportAction;
use Filament\Tables\Filters\Filter;
-use Filament\Forms\Components\DateTimePicker;
-use Filament\Forms\Components\Select;
-use Filament\Forms\Components\TextInput;
+use Filament\Tables\Table;
+use Illuminate\Database\Eloquent\Builder;
+use Illuminate\Database\Eloquent\SoftDeletingScope;
+use Illuminate\Validation\Rule;
class TempClassCharacteristicResource extends Resource
{
@@ -1029,6 +1028,10 @@ class TempClassCharacteristicResource extends Resource
->alignCenter()
->searchable()
->sortable(),
+ Tables\Columns\TextColumn::make('model_type')
+ ->label('MODEL TYPE')
+ ->alignCenter()
+ ->sortable(),
Tables\Columns\TextColumn::make('aufnr')
->label('AUFNR')
->alignCenter()
@@ -1055,10 +1058,6 @@ class TempClassCharacteristicResource extends Resource
->alignCenter()
->searchable()
->sortable(),
- Tables\Columns\TextColumn::make('model_type')
- ->label('MODEL TYPE')
- ->alignCenter()
- ->sortable(),
Tables\Columns\TextColumn::make('zz1_cn_bill_ord')
->label('ZZ1 CN BILL ORD')
->alignCenter()
@@ -1181,6 +1180,7 @@ class TempClassCharacteristicResource extends Resource
->sortable(),
Tables\Columns\TextColumn::make('zmm_ratedpower')
->label('ZMM RATEDPOWER')
+ ->alignCenter()
->sortable(),
Tables\Columns\TextColumn::make('zmm_region')
->label('ZMM REGION')
@@ -1577,14 +1577,12 @@ class TempClassCharacteristicResource extends Resource
Tables\Columns\TextColumn::make('winded_serial_number')
->label('WINDED SERIAL NUMBER')
->alignCenter()
+ ->searchable()
->sortable(),
- Tables\Columns\TextColumn::make('part_validation_1')
- ->label('PART VALIDATION 1')
- ->alignCenter()
- ->sortable(),
- Tables\Columns\TextColumn::make('part_validation_2')
- ->label('PART VALIDATION 2')
+ Tables\Columns\TextColumn::make('model_type')
+ ->label('MODEL TYPE')
->alignCenter()
+ ->searchable()
->sortable(),
Tables\Columns\TextColumn::make('has_work_flow_id')
->label('HAS WORK FLOW ID')
@@ -1599,14 +1597,28 @@ class TempClassCharacteristicResource extends Resource
};
}),
Tables\Columns\TextColumn::make('created_at')
+ ->label('CREATED AT')
+ ->alignCenter()
+ ->dateTime()
+ ->sortable(),
+ Tables\Columns\TextColumn::make('created_by')
+ ->label('CREATED BY')
+ ->alignCenter()
+ ->sortable(),
+ Tables\Columns\TextColumn::make('updated_at')
+ ->label('UPDATED AT')
+ ->alignCenter()
->dateTime()
->sortable()
->toggleable(isToggledHiddenByDefault: true),
- Tables\Columns\TextColumn::make('updated_at')
- ->dateTime()
+ Tables\Columns\TextColumn::make('updated_by')
+ ->label('UPDATED BY')
+ ->alignCenter()
->sortable()
->toggleable(isToggledHiddenByDefault: true),
Tables\Columns\TextColumn::make('deleted_at')
+ ->label('DELETED AT')
+ ->alignCenter()
->dateTime()
->sortable()
->toggleable(isToggledHiddenByDefault: true),
@@ -1690,6 +1702,12 @@ class TempClassCharacteristicResource extends Resource
TextInput::make('gernr')
->label('Serial Number')
->placeholder('Enter Serial Number'),
+ TextInput::make('zmm_heading')
+ ->label('Heading')
+ ->placeholder('Enter Heading'),
+ TextInput::make('model_type')
+ ->label('Model Type')
+ ->placeholder('Enter Model Type'),
Select::make('work_flow_status')
->label('Work Flow Status')
->placeholder('Select Work Flow Status')
@@ -1711,7 +1729,7 @@ class TempClassCharacteristicResource extends Resource
])
->query(function ($query, array $data) {
// Hide all records initially if no filters are applied
- if (empty($data['Plant']) && empty($data['machine']) && empty($data['item_id']) && empty($data['aufnr']) && empty($data['gernr']) && empty($data['created_from']) && empty($data['created_to']) && !array_key_exists('work_flow_status', $data)) {
+ if (empty($data['Plant']) && empty($data['machine']) && empty($data['item_id']) && empty($data['aufnr']) && empty($data['gernr']) && empty($data['zmm_heading']) && empty($data['model_type']) && empty($data['created_from']) && empty($data['created_to'])) {
return $query->whereRaw('1 = 0');
}
@@ -1741,6 +1759,14 @@ class TempClassCharacteristicResource extends Resource
$query->where('gernr', 'like', '%'.$data['gernr'].'%');
}
+ if (! empty($data['zmm_heading'])) {
+ $query->where('zmm_heading', 'like', '%'.$data['zmm_heading'].'%');
+ }
+
+ if (! empty($data['model_type'])) {
+ $query->where('model_type', 'like', '%'.$data['model_type'].'%');
+ }
+
if (array_key_exists('work_flow_status', $data) && $data['work_flow_status'] != '') {
$query->where('has_work_flow_id', $data['work_flow_status']);
}
@@ -1782,6 +1808,14 @@ class TempClassCharacteristicResource extends Resource
$indicators[] = 'Serial Number: '.$data['gernr'];
}
+ if (! empty($data['zmm_heading'])) {
+ $indicators[] = 'Heading: '.$data['zmm_heading'];
+ }
+
+ if (! empty($data['model_type'])) {
+ $indicators[] = 'Model Type: '.$data['model_type'];
+ }
+
if (array_key_exists('work_flow_status', $data) && $data['work_flow_status'] != '') {
$statusMap = [
'1' => 'Pending Approval',
@@ -1789,7 +1823,7 @@ class TempClassCharacteristicResource extends Resource
'0' => 'Approved',
];
- $indicators[] = 'Work Flow Status: ' . ($statusMap[$data['work_flow_status']] ?? '');
+ $indicators[] = 'Work Flow Status: '.($statusMap[$data['work_flow_status']] ?? '');
}
if (! empty($data['created_from'])) {
diff --git a/app/Http/Controllers/CharacteristicApprovalController.php b/app/Http/Controllers/CharacteristicApprovalController.php
index 4553f17..7a5fb3e 100644
--- a/app/Http/Controllers/CharacteristicApprovalController.php
+++ b/app/Http/Controllers/CharacteristicApprovalController.php
@@ -2,10 +2,12 @@
namespace App\Http\Controllers;
+use App\Models\CharacteristicApproverMaster;
use App\Models\ClassCharacteristic;
use App\Models\RequestCharacteristic;
use Carbon\Carbon;
use Illuminate\Http\Request;
+use Illuminate\Support\Facades\Storage;
class CharacteristicApprovalController extends Controller
{
@@ -358,10 +360,26 @@ class CharacteristicApprovalController extends Controller
->where('work_flow_id', $record->work_flow_id)
->get();
+ $approverMasterNames = CharacteristicApproverMaster::find($record->characteristic_approver_master_id);
+
+ if (! $approverMasterNames) {
+ abort(500, 'Approver master not found');
+ }
+
+ $approverNameColumn = match ($level) {
+ 1 => 'name1',
+ 2 => 'name2',
+ 3 => 'name3',
+ default => null,
+ };
+
+ $updatedBy = $approverNameColumn ? $approverMasterNames->$approverNameColumn : null;
+
$updateData = [
$statusColumn => $status,
$remarkColumn => $request->input('remark'),
$approvedAtColumn => Carbon::now(),
+ 'updated_by' => $updatedBy,
];
if (in_array($status, ['Approved', 'Rejected'])) {
@@ -386,6 +404,14 @@ class CharacteristicApprovalController extends Controller
// ->where('aufnr', $record->aufnr)
// ->update(['has_work_flow_id' => $record->work_flow_id]);
+ if ($status == 'Rejected') {
+ $filePath = 'uploads/LaserDocs/'.$record->work_flow_id.'.png';
+
+ if (Storage::disk('local')->exists($filePath)) {
+ Storage::disk('local')->delete($filePath);
+ }
+ }
+
if ($returnView) {
return match ($status) {
'Approved' => view('approval.success'),
diff --git a/app/Http/Controllers/CharacteristicsController.php b/app/Http/Controllers/CharacteristicsController.php
index 49fee13..6fc3e73 100644
--- a/app/Http/Controllers/CharacteristicsController.php
+++ b/app/Http/Controllers/CharacteristicsController.php
@@ -12,6 +12,7 @@ use App\Models\Plant;
use App\Models\ProductCharacteristicsMaster;
use App\Models\RequestCharacteristic;
use App\Models\StickerMaster;
+use App\Models\TempClassCharacteristic;
use App\Models\User;
use App\Models\WorkGroupMaster;
use Illuminate\Http\Request;
@@ -49,15 +50,45 @@ class CharacteristicsController extends Controller
$itemCode = $request->header('item-code');
- if (! $plantCode) {
+ if ($plantCode == null || $plantCode == '' || ! $plantCode) {
return response()->json([
'status_code' => 'ERROR',
- 'status_description' => "Plant Code value can't be empty",
+ '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);
+ } elseif ($itemCode == null || $itemCode == '' || ! $itemCode) {
+ return response()->json([
+ 'status_code' => 'ERROR',
+ 'status_description' => "Item code can't be empty!",
], 404);
- } elseif (! $itemCode) {
+ } elseif (Str::length($itemCode) < 6) {
return response()->json([
'status_code' => 'ERROR',
- 'status_description' => "Item Code value can't be empty",
+ '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);
}
@@ -66,7 +97,7 @@ class CharacteristicsController extends Controller
if (! $plant) {
return response()->json([
'status_code' => 'ERROR',
- 'status_description' => "Plant Code '{$plantCode}' not found!",
+ 'status_description' => "Plant code '{$plantCode}' not found in plants table!",
], 404);
}
@@ -77,7 +108,7 @@ class CharacteristicsController extends Controller
if (! $item) {
return response()->json([
'status_code' => 'ERROR',
- 'status_description' => "Item Code '{$itemCode}' not found!",
+ 'status_description' => "Item code '{$itemCode}' not found in items table!",
], 404);
}
@@ -86,14 +117,14 @@ class CharacteristicsController extends Controller
if (! $item) {
return response()->json([
'status_code' => 'ERROR',
- 'status_description' => "Item Code '{$itemCode}' not found for the plant code '{$plantCode}'!",
+ 'status_description' => "Item code '{$itemCode}' not found for the plant code '{$plantCode}' in items table!",
], 404);
}
- $ItemId = $item->id;
+ $itemId = $item->id;
// $characteristics = ProductCharacteristicsMaster::where('plant_id', $plantId)
- // ->where('item_id', $ItemId)
+ // ->where('item_id', $itemId)
// ->first([
// 'line_id',
// 'machine_id',
@@ -105,8 +136,7 @@ class CharacteristicsController extends Controller
// 'middle'
// ]);
- $characteristics = ProductCharacteristicsMaster::where('plant_id', $plantId)
- ->where('item_id', $ItemId)
+ $characteristics = ProductCharacteristicsMaster::where('item_id', $itemId)->where('plant_id', $plantId)
->get([
'line_id',
'machine_id',
@@ -121,7 +151,7 @@ class CharacteristicsController extends Controller
if ($characteristics->count() == 0) {
return response()->json([
'status_code' => 'ERROR',
- 'message' => "No data found for the plant code: {$plantCode} and item code: {$itemCode}",
+ 'message' => "No data found for the plant code '{$plantCode}' and item code '{$itemCode}'!",
], 404);
}
@@ -174,19 +204,13 @@ class CharacteristicsController extends Controller
$line = Line::find($char->line_id);
$lineName = $line ? $line->name : null;
- $workCenter = Machine::where('id', $char->machine_id)
- ->where('plant_id', $plantId)
- ->where('line_id', $char->line_id)
- ->value('work_center');
+ $workCenter = Machine::where('id', $char->machine_id)->where('line_id', $char->line_id)->where('plant_id', $plantId)->value('work_center');
- $workGroupMasterId = ProductCharacteristicsMaster::where('line_id', $char->line_id)
- ->where('plant_id', $plantId)
- ->value('work_group_master_id');
+ $workGroupMasterId = ProductCharacteristicsMaster::where('line_id', $char->line_id)->where('plant_id', $plantId)->value('work_group_master_id');
$groupWorkCenter = null;
if ($workGroupMasterId) {
- $groupWorkCenter = WorkGroupMaster::where('id', $workGroupMasterId)
- ->value('name');
+ $groupWorkCenter = WorkGroupMaster::where('id', $workGroupMasterId)->value('name');
}
$items[] = [
@@ -233,7 +257,7 @@ class CharacteristicsController extends Controller
$userName = $request->header('user-name');
- if (! $userName) {
+ if (! $userName || $userName == null || $userName == '') {
return response()->json([
'status_code' => 'ERROR',
'status_description' => "User name can't be empty!",
@@ -257,12 +281,22 @@ class CharacteristicsController extends Controller
return response()->json([
'status_code' => 'ERROR',
'status_description' => "Plant code can't be empty!",
- ], 404);
- } elseif (! is_numeric($plantCode) || Str::length($plantCode) < 4 || ! preg_match('/^[1-9]\d{3,}$/', $plantCode)) { // !ctype_digit($data['plant_code'])
+ ], 400);
+ } elseif (! is_numeric($plantCode)) {
return response()->json([
'status_code' => 'ERROR',
- 'status_description' => 'Invalid plant code found!',
- ], 404);
+ '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) {
@@ -270,6 +304,16 @@ class CharacteristicsController extends Controller
'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) {
@@ -277,16 +321,14 @@ class CharacteristicsController extends Controller
'status_code' => 'ERROR',
'status_description' => "Marked model type can't be empty!",
], 404);
- }
-
- if ($modelType != 'MOTOR' && $modelType != 'PUMP' && $modelType != 'PUMPSET' && $modelType != 'NAME_PLATE') {
+ } elseif ($modelType != 'MOTOR' && $modelType != 'PUMP' && $modelType != 'NAME_PLATE') {
return response()->json([
'status_code' => 'ERROR',
'status_description' => "Serial number '{$serialNumber}' doesn't have valid marked model type to proceed!",
], 404);
}
- if ($expectedTime == null || $expectedTime == '' || ! $expectedTime) {
+ if ($expectedTime == null || $expectedTime == '' || $expectedTime == '0' || ! $expectedTime) {
return response()->json([
'status_code' => 'ERROR',
'status_description' => "Expected time can't be empty or zero!",
@@ -300,58 +342,6 @@ class CharacteristicsController extends Controller
$expectedTime = (float) $expectedTime;
}
- $plant = Plant::where('code', $plantCode)->first();
-
- if (! $plant) {
- return response()->json([
- 'status_code' => 'ERROR',
- 'status_description' => "Plant code '{$plantCode}' not found!",
- ], 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!",
- ], 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}'!",
- ], 403);
- } elseif (! $user->hasRole(['Super Admin', 'Laser Manager', 'Laser Supervisor', 'Laser Employee'])) {
- return response()->json([
- 'status_code' => 'ERROR',
- 'status_description' => 'User 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!",
- ], 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}'!",
- ], 404);
- }
-
- $machineId = $machine->id;
-
if ($jobNo != null && $jobNo != '' && $jobNo) {
if (Str::length($jobNo) < 7) {
return response()->json([
@@ -369,38 +359,6 @@ class CharacteristicsController extends Controller
'status_description' => "Job number '{$jobNo}' should not begin with '0'!",
], 404);
}
-
- $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)
- ->first();
-
- if (! $jobWorkCenter) {
- return response()->json([
- 'status_code' => 'ERROR',
- 'status_description' => "Job number '{$jobNo}' not found for the work center '{$workCenter}'!",
- ], 404);
- }
}
if ($serialNumber == null || $serialNumber == '' || ! $serialNumber) {
@@ -421,7 +379,7 @@ class CharacteristicsController extends Controller
} 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'!",
+ 'status_description' => "Serial number '{$serialNumber}' should not begin with '0' or letter!",
], 404);
}
@@ -447,23 +405,102 @@ class CharacteristicsController extends Controller
], 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!",
+ 'status_description' => "Item code '{$itemCode}' not found in items table!",
], 404);
}
- $itemPlant = Item::where('code', $itemCode)
- ->where('plant_id', $plantId)
- ->first();
+ $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}'!",
+ 'status_description' => "Item code '{$itemCode}' not found for the plant code '{$plantCode}' in items table!",
], 404);
}
@@ -471,16 +508,40 @@ class CharacteristicsController extends Controller
$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, 'PUMPSET', 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)) {
+ $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();
+ $sNoPlant = ClassCharacteristic::where('gernr', $serialNumber)->where('plant_id', $plantId)->first();
if (! $sNoPlant) {
return response()->json([
@@ -489,10 +550,7 @@ class CharacteristicsController extends Controller
], 404);
}
- $sNoItem = ClassCharacteristic::where('gernr', $serialNumber)
- ->where('plant_id', $plantId)
- ->where('item_id', $itemId)
- ->first();
+ $sNoItem = ClassCharacteristic::where('gernr', $serialNumber)->where('item_id', $itemId)->where('plant_id', $plantId)->first();
if (! $sNoItem) {
return response()->json([
@@ -501,7 +559,7 @@ class CharacteristicsController extends Controller
], 404);
}
- $curStat = ClassCharacteristic::where('plant_id', $plantId)->where('machine_id', $machineId)->where('gernr', $serialNumber)->where('item_id', $itemId)->first();
+ $curStat = ClassCharacteristic::where('gernr', $serialNumber)->where('item_id', $itemId)->where('machine_id', $machineId)->where('plant_id', $plantId)->first();
if (! $curStat) {
return response()->json([
@@ -520,7 +578,16 @@ class CharacteristicsController extends Controller
$curHead = null;
$hasMvhs = false;
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();
+ $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([
@@ -547,33 +614,31 @@ class CharacteristicsController extends Controller
if (! $stick) {
return response()->json([
'status_code' => 'ERROR',
- 'status_description' => "Item code '{$itemCode}' not found in sticker master!",
+ 'status_description' => "Item code '{$itemCode}' not found in sticker masters table!",
], 404);
}
- $stickPlant = StickerMaster::where('item_id', $itemId)
- ->where('plant_id', $plantId)
- ->first();
+ $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 in sticker master for the plant code '{$plantCode}'!",
+ '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 master!',
+ '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!"
+ '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;
+ // } elseif ($modelType == 'PUMPSET') {
+ // $mvhsCnt = 1;
} else {
$mvhsCnt = $curMvhs;
}
@@ -590,11 +655,11 @@ class CharacteristicsController extends Controller
'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 ($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') {
@@ -602,11 +667,11 @@ class CharacteristicsController extends Controller
'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 ($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, 'PUMPSET', ignoreCase: true)) {
return response()->json([
@@ -653,14 +718,14 @@ class CharacteristicsController extends Controller
return response()->json([
'status_code' => 'ERROR',
- 'status_description' => "Following users : '".implode(', ', $uniqueMissingUsers)."' not found!",
+ 'status_description' => "Following user names : '".implode(', ', $uniqueMissingUsers)."' not found in users table!",
], 404);
} elseif (! empty($missingUsersPlant)) {
$uniqueMissingUsersPlant = array_unique($missingUsersPlant);
return response()->json([
'status_code' => 'ERROR',
- 'status_description' => "Following users : '".implode(', ', $uniqueMissingUsersPlant)."' not found for the plant code '{$plantCode}'!",
+ 'status_description' => "Following user names : '".implode(', ', $uniqueMissingUsersPlant)."' not found for the plant code '{$plantCode}' in users table!",
], 404);
} elseif (! empty($missingUsersRight)) {
$uniqueMissingUsersRight = array_unique($missingUsersRight);
@@ -688,7 +753,6 @@ class CharacteristicsController extends Controller
$curMMach = $curStat->motor_machine_name ?? null;
$curPMach = $curStat->pump_machine_name ?? null;
$curNpMach = $curStat->name_plate_machine_name ?? null;
- $curPsMach = $curStat->pumpset_machine_name ?? null;
$curPart1 = $curStat->part_validation_1 ?? null;
$curPart2 = $curStat->part_validation_2 ?? null;
$slUser = $curStat->samlight_logged_name ?? null;
@@ -710,14 +774,14 @@ class CharacteristicsController extends Controller
'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);
+ // } elseif ($modelType == 'PUMPSET' && $curMarkStat == 'Marked') {
+ // return response()->json([
+ // 'status_code' => 'ERROR',
+ // 'status_description' => "Pumpset serial number '{$serialNumber}' already marked in auto mode!",
+ // ], 404);
}
- $physiCnt = (intval($curStat->marked_physical_count ?? 0.0) ?: 0.0) + 1;
+ $physiCnt = (intval($curStat->marked_physical_count ?? 0) ?: 0) + 1;
// $physiCnt = (($curStat->marked_physical_count == null || $curStat->marked_physical_count == '' || $curStat->marked_physical_count == '0') ? 0 : (int) $curStat->marked_physical_count) + 1;
// marked_expected_time
$motPhysiCnt = intval($curStat->motor_marked_physical_count ?? 0) ?: 0;
@@ -747,11 +811,11 @@ class CharacteristicsController extends Controller
$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 ($modelType == 'PUMPSET' && $physiCnt >= $mvhsCnt) {
- $curMarkStat = 'Marked';
- } elseif ($hasMvhs == true && $curMotorMarkStat == 'Marked' && $curPumpMarkStat == 'Marked' && $curNamePlateMarkStat == 'Marked') {
+ if ($hasMvhs == true && $curMotorMarkStat == 'Marked' && $curPumpMarkStat == 'Marked' && $curNamePlateMarkStat == 'Marked') {
$curMarkStat = 'Marked';
} elseif ($hasMvhs == false && $curMotorMarkStat == 'Marked' && $curPumpMarkStat == 'Marked') {
$curMarkStat = 'Marked';
@@ -779,11 +843,10 @@ class CharacteristicsController extends Controller
'motor_machine_name' => $char['motor_machine_name'] ?? $curMMach,
'pump_machine_name' => $char['pump_machine_name'] ?? $curPMach,
'name_plate_machine_name' => $char['name_plate_machine_name'] ?? $curNpMach,
- 'pumpset_machine_name' => $char['pumpset_machine_name'] ?? $curPsMach,
'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'] ?? null,
+ 'pending_released_status' => $char['pending_released_status'] ?? 0,
'has_work_flow_id' => $char['has_work_flow_id'] ?? $curWorkFlow,
'updated_by' => $userName ?? null,
];
@@ -793,11 +856,11 @@ class CharacteristicsController extends Controller
$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 ($modelType == 'PUMPSET' && $physiCnt >= $mvhsCnt) {
- $curMarkStat = 'Marked';
- } elseif ($curMotorMarkStat == 'Marked' && $curPumpMarkStat == 'Marked' && $curNamePlateMarkStat == 'Marked') {
+ if ($curMotorMarkStat == 'Marked' && $curPumpMarkStat == 'Marked' && $curNamePlateMarkStat == 'Marked') {
$curMarkStat = 'Marked';
}
@@ -813,11 +876,10 @@ class CharacteristicsController extends Controller
'motor_pump_pumpset_status' => '3',
// 'winded_serial_number' => $char['winded_serial_number'] ?? $curWindNo,
'name_plate_machine_name' => $char['name_plate_machine_name'] ?? $curNpMach,
- 'pumpset_machine_name' => $char['pumpset_machine_name'] ?? $curPsMach,
// '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'] ?? null,
+ 'pending_released_status' => $char['pending_released_status'] ?? 0,
'has_work_flow_id' => $char['has_work_flow_id'] ?? $curWorkFlow,
'updated_by' => $userName ?? null,
];
@@ -830,11 +892,11 @@ class CharacteristicsController extends Controller
$curPumpMarkStat = 'Marked';
}
$curPumpMarkBy = ($char['pump_marked_by'] == 'jothi') ? 'Admin' : $char['pump_marked_by'] ?? $curPumpMarkBy;
+ // } elseif ($modelType == 'PUMPSET' && $physiCnt >= $mvhsCnt) {
+ // $curMarkStat = 'Marked';
}
- if ($modelType == 'PUMPSET' && $physiCnt >= $mvhsCnt) {
- $curMarkStat = 'Marked';
- } elseif ($hasMvhs == true && $curMotorMarkStat == 'Marked' && $curPumpMarkStat == 'Marked' && $curNamePlateMarkStat == 'Marked') {
+ if ($hasMvhs == true && $curMotorMarkStat == 'Marked' && $curPumpMarkStat == 'Marked' && $curNamePlateMarkStat == 'Marked') {
$curMarkStat = 'Marked';
} elseif ($hasMvhs == false && $curMotorMarkStat == 'Marked' && $curPumpMarkStat == 'Marked') {
$curMarkStat = 'Marked';
@@ -853,11 +915,10 @@ class CharacteristicsController extends Controller
'motor_pump_pumpset_status' => '3',
// 'winded_serial_number' => $char['winded_serial_number'] ?? $curWindNo,
'pump_machine_name' => $char['pump_machine_name'] ?? $curPMach,
- 'pumpset_machine_name' => $char['pumpset_machine_name'] ?? $curPsMach,
// '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'] ?? null,
+ 'pending_released_status' => $char['pending_released_status'] ?? 0,
'has_work_flow_id' => $char['has_work_flow_id'] ?? $curWorkFlow,
'updated_by' => $userName ?? null,
];
@@ -870,11 +931,11 @@ class CharacteristicsController extends Controller
$curMotorMarkStat = 'Marked';
}
$curMotorMarkBy = ($char['motor_marked_by'] == 'jothi') ? 'Admin' : $char['motor_marked_by'] ?? $curMotorMarkBy;
+ // } elseif ($modelType == 'PUMPSET' && $physiCnt >= $mvhsCnt) {
+ // $curMarkStat = 'Marked';
}
- if ($modelType == 'PUMPSET' && $physiCnt >= $mvhsCnt) {
- $curMarkStat = 'Marked';
- } elseif ($hasMvhs == true && $curMotorMarkStat == 'Marked' && $curPumpMarkStat == 'Marked' && $curNamePlateMarkStat == 'Marked') {
+ if ($hasMvhs == true && $curMotorMarkStat == 'Marked' && $curPumpMarkStat == 'Marked' && $curNamePlateMarkStat == 'Marked') {
$curMarkStat = 'Marked';
} elseif ($hasMvhs == false && $curMotorMarkStat == 'Marked' && $curPumpMarkStat == 'Marked') {
$curMarkStat = 'Marked';
@@ -893,11 +954,10 @@ class CharacteristicsController extends Controller
'motor_pump_pumpset_status' => '3',
'winded_serial_number' => $char['winded_serial_number'] ?? $curWindNo,
'motor_machine_name' => $char['motor_machine_name'] ?? $curMMach,
- 'pumpset_machine_name' => $char['pumpset_machine_name'] ?? $curPsMach,
'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'] ?? null,
+ 'pending_released_status' => $char['pending_released_status'] ?? 0,
'has_work_flow_id' => $char['has_work_flow_id'] ?? $curWorkFlow,
'updated_by' => $userName ?? null,
];
@@ -921,11 +981,11 @@ class CharacteristicsController extends Controller
$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 ($modelType == 'PUMPSET' && $physiCnt >= $mvhsCnt) {
- $curMarkStat = 'Marked';
- } elseif ($curMotorMarkStat == 'Marked' && $curPumpMarkStat == 'Marked' && $curNamePlateMarkStat == 'Marked') {
+ if ($curMotorMarkStat == 'Marked' && $curPumpMarkStat == 'Marked' && $curNamePlateMarkStat == 'Marked') {
$curMarkStat = 'Marked';
}
@@ -948,14 +1008,13 @@ class CharacteristicsController extends Controller
'name_plate_marked_by' => $curNamePlateMarkBy,
'motor_pump_pumpset_status' => null,
'winded_serial_number' => $char['winded_serial_number'] ?? $curWindNo,
- 'motor_machine_name' => $curMMach, // $char['motor_machine_name'] ??
- 'pump_machine_name' => $curPMach, // $char['pump_machine_name'] ??
- 'name_plate_machine_name' => $curNpMach, // $char['name_plate_machine_name'] ??
- 'pumpset_machine_name' => $char['pumpset_machine_name'] ?? $curPsMach,
+ 'motor_machine_name' => $char['motor_machine_name'] ?? $curMMach,
+ 'pump_machine_name' => $char['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'] ?? null,
+ 'pending_released_status' => $char['pending_released_status'] ?? 0,
'has_work_flow_id' => $char['has_work_flow_id'] ?? $curWorkFlow,
'updated_by' => $userName ?? null,
];
@@ -975,11 +1034,11 @@ class CharacteristicsController extends Controller
$curPumpMarkStat = 'Marked';
}
$curPumpMarkBy = ($char['pump_marked_by'] == 'jothi') ? 'Admin' : $char['pump_marked_by'] ?? $curPumpMarkBy;
+ // } elseif ($modelType == 'PUMPSET' && $physiCnt >= $mvhsCnt) {
+ // $curMarkStat = 'Marked';
}
- if ($modelType == 'PUMPSET' && $physiCnt >= $mvhsCnt) {
- $curMarkStat = 'Marked';
- } elseif ($curMotorMarkStat == 'Marked' && $curPumpMarkStat == '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)) {
if ($modelType == 'PUMP' && $pumPhysiCnt >= $mvhsCnt) {
@@ -1012,12 +1071,11 @@ class CharacteristicsController extends Controller
'winded_serial_number' => $char['winded_serial_number'] ?? $curWindNo,
'motor_machine_name' => $char['motor_machine_name'] ?? $curMMach,
'pump_machine_name' => $char['pump_machine_name'] ?? $curPMach,
- 'name_plate_machine_name' => $curNpMach, // $char['name_plate_machine_name'] ??
- 'pumpset_machine_name' => $char['pumpset_machine_name'] ?? $curPsMach,
+ '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'] ?? null,
+ 'pending_released_status' => $char['pending_released_status'] ?? 0,
'has_work_flow_id' => $char['has_work_flow_id'] ?? $curWorkFlow,
'updated_by' => $userName ?? null,
];
@@ -1025,12 +1083,7 @@ class CharacteristicsController extends Controller
}
$isAuto = true;
- $affected = ClassCharacteristic::where('plant_id', $plantId)
- ->where('machine_id', $machineId)
- ->where('aufnr', $jobNo)
- ->where('gernr', $serialNumber)
- ->where('item_id', $itemId)
- ->update($values);
+ $affected = ClassCharacteristic::where('gernr', $serialNumber)->where('item_id', $itemId)->where('aufnr', $jobNo)->where('machine_id', $machineId)->where('plant_id', $plantId)->update($values);
$updatedRows += $affected;
} else {
@@ -1050,11 +1103,11 @@ class CharacteristicsController extends Controller
'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);
+ // } elseif ($modelType == 'PUMPSET' && $curMarkStat != 'Marked') {
+ // return response()->json([
+ // 'status_code' => 'ERROR',
+ // 'status_description' => "Pumpset serial number '{$serialNumber}' doesn't marked in auto mode!",
+ // ], 404);
}
$manStat = (intval($curStat->man_marked_status ?? 0) ?: 0) + 1;
@@ -1063,16 +1116,15 @@ class CharacteristicsController extends Controller
'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,
+ 'part_validation_1' => $char['part_validation_1'] ?? $curPart1,
+ 'part_validation_2' => $char['part_validation_2'] ?? $curPart2,
'samlight_logged_name' => $char['samlight_logged_name'] ?? $slUser,
'updated_by' => $userName ?? null,
];
$isAuto = false;
- $affected = ClassCharacteristic::where('plant_id', $plantId)
- ->where('machine_id', $machineId)
- ->where('gernr', $serialNumber)
- ->where('item_id', $itemId)
- ->update($values);
+ $affected = ClassCharacteristic::where('gernr', $serialNumber)->where('item_id', $itemId)->where('machine_id', $machineId)->where('plant_id', $plantId)->update($values);
$updatedRows += $affected;
}
@@ -1081,12 +1133,12 @@ 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 marked status for the '.strtolower($modelType)." serial number '{$serialNumber}'." : 'Failed to update manual marked status for the '.strtolower($modelType)." 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 marked status updated for the '.strtolower($modelType)." serial number '{$serialNumber}'." : 'Successfully manual marked status updated for the '.strtolower($modelType)." serial number '{$serialNumber}'.",
], 200);
}
}
@@ -1108,7 +1160,7 @@ class CharacteristicsController extends Controller
$userName = $request->header('user-name');
- if (! $userName) {
+ if (! $userName || $userName == null || $userName == '') {
return response()->json([
'status_code' => 'ERROR',
'status_description' => "User name can't be empty!",
@@ -1126,16 +1178,26 @@ class CharacteristicsController extends Controller
$serialNumbers = $data['serial_numbers'] ?? '';
$characteristics = $data['characteristics'];
- if ($plantCode == null || $plantCode == '') {
+ if ($plantCode == null || $plantCode == '' || ! $plantCode) {
return response()->json([
'status_code' => 'ERROR',
'status_description' => "Plant code can't be empty!",
- ], 404);
- } elseif (! is_numeric($plantCode) || Str::length($plantCode) < 4 || ! preg_match('/^[1-9]\d{3,}$/', $plantCode)) { // !ctype_digit($data['plant_code'])
+ ], 400);
+ } elseif (! is_numeric($plantCode)) {
return response()->json([
'status_code' => 'ERROR',
- 'status_description' => 'Invalid plant code found!',
- ], 404);
+ '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) {
@@ -1143,6 +1205,16 @@ class CharacteristicsController extends Controller
'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);
}
$plant = Plant::where('code', $plantCode)->first();
@@ -1150,7 +1222,7 @@ class CharacteristicsController extends Controller
if (! $plant) {
return response()->json([
'status_code' => 'ERROR',
- 'status_description' => "Plant '{$plantCode}' not found!",
+ 'status_description' => "Plant code '{$plantCode}' not found in plants table!",
], 404);
}
@@ -1163,17 +1235,17 @@ class CharacteristicsController extends Controller
if (! $user) {
return response()->json([
'status_code' => 'ERROR',
- 'status_description' => 'User name not found!',
+ '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 '{$userName}' not found for Plant '{$plantCode}'!",
+ '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 does not have rights!',
+ 'status_description' => "User '{$userName}' does not have rights!",
], 403);
}
@@ -1182,7 +1254,7 @@ class CharacteristicsController extends Controller
if (! $work) {
return response()->json([
'status_code' => 'ERROR',
- 'status_description' => "Work center '{$workCenter}' not found!",
+ 'status_description' => "Work center '{$workCenter}' not found in machines table!",
], 404);
}
@@ -1191,39 +1263,36 @@ class CharacteristicsController extends Controller
if (! $machine) {
return response()->json([
'status_code' => 'ERROR',
- 'status_description' => "Work center '{$workCenter}' not found for the plant code '{$plantCode}'!",
+ 'status_description' => "Work center '{$workCenter}' not found for the plant code '{$plantCode}' in machines table!",
], 404);
}
$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_beenote', 'zmm_beenumber', 'zmm_beestar', 'zmm_codeclass', 'zmm_colour', 'zmm_grade', 'zmm_grwt_pset', 'zmm_grwt_cable', 'zmm_grwt_motor', 'zmm_grwt_pf', 'zmm_grwt_pump', 'zmm_isivalve', 'zmm_isi_wc', 'zmm_labelperiod', 'zmm_length', 'zmm_license_cml_no', 'zmm_mfgmonyr', 'zmm_modelyear', 'zmm_motoridentification', 'zmm_newt_pset', 'zmm_newt_cable', 'zmm_newt_motor', 'zmm_newt_pf', 'zmm_newt_pump', 'zmm_packtype', 'zmm_panel', 'zmm_performance_factor', 'zmm_pumpidentification', 'zmm_psettype', 'zmm_size', 'zmm_eff_ttl', 'zmm_type', 'zmm_usp', 'marked_datetime', 'marked_by', 'motor_pump_pumpset_status', 'motor_machine_name', 'pump_machine_name', 'name_plate_machine_name', 'pumpset_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_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',
if ($itemCode != '' && $itemCode != null && $itemCode && Str::length($itemCode) > 0) {
- $existingJob = ClassCharacteristic::where('aufnr', $jobNo)
- // ->where('plant_id', $plantId)
- // ->where('machine_id', $machineId)
- ->first();
+ $existingJobNo = ClassCharacteristic::where('aufnr', $jobNo)->first(); // ->where('machine_id', $machineId)->where('plant_id', $plantId)
- if ($existingJob) {
- $curPlant = Plant::where('id', $existingJob->plant_id)->first();
- $curMachine = Machine::where('id', $existingJob->machine_id)->first();
+ if ($existingJobNo) {
+ $curPlant = Plant::where('id', $existingJobNo->plant_id)->first();
+ $curMachine = Machine::where('id', $existingJobNo->machine_id)->first();
return response()->json([
'status_code' => 'ERROR',
- 'status_description' => "Duplicate job number '{$jobNo}' found for the plant code '{$curPlant->code}' and work center '$curMachine->work_center'!",
+ 'status_description' => "Duplicate job number '{$jobNo}' found for the plant name '{$curPlant?->name}' and work center '$curMachine?->work_center'!",
], 404);
}
if (Str::length($itemCode) < 6) {
return response()->json([
'status_code' => 'ERROR',
- 'status_description' => 'Item Code should contain minimum 6 digits!',
+ '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 alpha-numeric values!",
+ '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([
@@ -1237,18 +1306,16 @@ class CharacteristicsController extends Controller
if (! $item) {
return response()->json([
'status_code' => 'ERROR',
- 'status_description' => "Item Code '{$itemCode}' not found!",
+ 'status_description' => "Item code '{$itemCode}' not found in items table!",
], 404);
}
- $itemPlant = Item::where('code', $itemCode)
- ->where('plant_id', $plantId)
- ->first();
+ $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}'!",
+ 'status_description' => "Item code '{$itemCode}' not found for the plant code '{$plantCode}' in items table!",
], 404);
}
@@ -1301,7 +1368,7 @@ class CharacteristicsController extends Controller
if (! $stick) {
return response()->json([
'status_code' => 'ERROR',
- 'status_description' => "Item code '{$itemCode}' not found in sticker master!",
+ 'status_description' => "Item code '{$itemCode}' not found in sticker masters table!",
], 404);
}
@@ -1310,19 +1377,19 @@ class CharacteristicsController extends Controller
if (! $stickPlant) {
return response()->json([
'status_code' => 'ERROR',
- 'status_description' => "Item code '{$itemCode}' not found in sticker master for the plant code '{$plantCode}'!",
+ '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 master!',
+ '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.',
+ 'status_description' => 'The MVHS master count should be between 1 to 9!',
], 404);
}
}
@@ -1360,14 +1427,14 @@ class CharacteristicsController extends Controller
return response()->json([
'status_code' => 'ERROR',
- 'status_description' => "Following users : '".implode(', ', $uniqueMissingUsers)."' not found!",
+ 'status_description' => "Following user names : '".implode(', ', $uniqueMissingUsers)."' not found in users table!",
], 404);
} elseif (! empty($missingUsersPlant)) {
$uniqueMissingUsersPlant = array_unique($missingUsersPlant);
return response()->json([
'status_code' => 'ERROR',
- 'status_description' => "Following users : '".implode(', ', $uniqueMissingUsersPlant)."' not found for the plant code '{$plantCode}'!",
+ 'status_description' => "Following user names : '".implode(', ', $uniqueMissingUsersPlant)."' not found for the plant code '{$plantCode}' in users table!",
], 404);
} elseif (! empty($missingUsersRight)) {
$uniqueMissingUsersRight = array_unique($missingUsersRight);
@@ -1383,10 +1450,8 @@ class CharacteristicsController extends Controller
$seenSerialNumbers = [];
foreach ($serialNumbers as $serial) {
try {
- $existing = ClassCharacteristic::where('plant_id', $plantId)
- // ->where('item_id', $itemId)
- ->where('gernr', $serial)
- ->first();
+ $existing = ClassCharacteristic::where('gernr', $serial)->where('plant_id', $plantId)->first();
+ // ->where('item_id', $itemId)
if ($existing) {
$dupSerials[] = $serial;
@@ -1400,7 +1465,7 @@ class CharacteristicsController extends Controller
} catch (\Exception $e) {
return response()->json([
'status_code' => 'ERROR',
- 'status_description' => "Error occurred while inserting new master characteristics for the serial number '$serial', {$e->getMessage()}",
+ 'status_description' => "Error occurred while inserting new master characteristics for the serial number '{$serial}', {$e->getMessage()}",
// 'char_data' => $char
], 500);
}
@@ -1447,17 +1512,14 @@ class CharacteristicsController extends Controller
// $insertData['pump_marked_by'] = ($char['pump_marked_by'] == 'jothi') ? 'Admin' : $char['pump_marked_by'] ?? null;
// $insertData['name_plate_marked_by'] = ($char['name_plate_marked_by'] == 'jothi') ? 'Admin' : $char['name_plate_marked_by'] ?? null;
- $existing = ClassCharacteristic::where('plant_id', $plantId)
- // ->where('item_id', $itemId)
- ->where('gernr', $serial)
- ->first();
+ $existing = ClassCharacteristic::where('gernr', $serial)->where('plant_id', $plantId)->first(); // ->where('item_id', $itemId)
if ($existing) {
// $insertData['updated_by'] = $userName ?? null;
// $existing->update($insertData);
return response()->json([
'status_code' => 'ERROR',
- 'status_description' => "Duplicate serial number '$serial' found while inserting new master characteristics in job number '$existing->aufnr'!",
+ 'status_description' => "Duplicate serial number '{$serial}' found while inserting new master characteristics in job number '{$existing->aufnr}'!",
], 404);
} else {
$isInsert = true;
@@ -1467,20 +1529,72 @@ class CharacteristicsController extends Controller
} catch (\Exception $e) {
return response()->json([
'status_code' => 'ERROR',
- 'status_description' => "Error occurred while inserting new master characteristics for the serial number '$serial', {$e->getMessage()}",
+ 'status_description' => "Error occurred while inserting new master characteristics for the serial number '{$serial}', {$e->getMessage()}",
// 'char_data' => $char
], 500);
}
}
}
+ if ($isInsert) {
+ $classChar = ClassCharacteristic::where('aufnr', $jobNo)->where('machine_id', $machineId)->where('plant_id', $plantId)->latest()->first();
+ $modelHeading = $classChar?->zmm_heading ?? '';
+ $typesToCreate = [];
+
+ if (Str::contains($modelHeading, 'PRESSURE BOOSTER SYSTEM', ignoreCase: true)) {
+ $typesToCreate = ['MOTOR', 'PUMP', 'NAME_PLATE'];
+ } elseif (Str::contains($modelHeading, 'PUMPSET', 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)) {
+ $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);
+ }
+
+ TempClassCharacteristic::where('aufnr', $jobNo)->where('machine_id', $machineId)->where('plant_id', $plantId)->forceDelete();
+
+ foreach ($typesToCreate as $type) {
+ TempClassCharacteristic::create([
+ 'plant_id' => $plantId,
+ 'machine_id' => $machineId,
+ 'item_id' => $itemId,
+ 'aufnr' => $jobNo,
+ 'model_type' => $type,
+ 'has_work_flow_id' => '2',
+ 'created_by' => $userName,
+ 'updated_by' => $userName,
+ ]);
+ }
+
+ if ($classChar) {
+ ClassCharacteristic::where('aufnr', $jobNo)->where('machine_id', $machineId)->where('plant_id', $plantId)
+ ->update([
+ 'has_work_flow_id' => '2',
+ 'updated_at' => now(),
+ 'updated_by' => $userName,
+ ]);
+ }
+ }
+
return response()->json([
'status_code' => 'SUCCESS',
- 'status_description' => $isInsert ? "Successfully inserted new master characteristics for the job number '$jobNo'." : "Failed to insert new master characteristics for the job number '$jobNo'.",
+ 'status_description' => $isInsert ? "Successfully inserted new master characteristics for the job number '{$jobNo}'." : "Failed to insert new master characteristics for the job number '{$jobNo}'.",
], 200);
} else {
$hasNewSno = false;
+ if (empty($characteristics) || ! is_array($characteristics) || count($characteristics) == 0) {
+ return response()->json([
+ 'status_code' => 'ERROR',
+ 'status_description' => "Characteristics can't be empty!",
+ ], 404);
+ }
+
$columns = Schema::getColumnListing((new ClassCharacteristic)->getTable());
$invalidFields = [];
@@ -1502,39 +1616,34 @@ class CharacteristicsController extends Controller
], 404);
}
- $existingJob = ClassCharacteristic::where('aufnr', $jobNo)->first();
+ $existingJobNo = ClassCharacteristic::where('aufnr', $jobNo)->first();
- if (! $existingJob) {
+ if (! $existingJobNo) {
return response()->json([
'status_code' => 'ERROR',
'status_description' => "Job number '{$jobNo}' not found!",
], 404);
}
- $existingJob = ClassCharacteristic::where('plant_id', $plantId)
- ->where('aufnr', $jobNo)
- ->first();
+ $existingJobPlant = ClassCharacteristic::where('aufnr', $jobNo)->where('plant_id', $plantId)->first();
- if (! $existingJob) {
+ if (! $existingJobPlant) {
return response()->json([
'status_code' => 'ERROR',
'status_description' => "Job number '{$jobNo}' not found for the plant code '{$plantCode}'!",
], 404);
}
- $existingJob = ClassCharacteristic::where('plant_id', $plantId)
- ->where('machine_id', $machineId)
- ->where('aufnr', $jobNo)
- ->first();
+ $classChar = ClassCharacteristic::where('aufnr', $jobNo)->where('machine_id', $machineId)->where('plant_id', $plantId)->latest()->first();
- if (! $existingJob) {
+ if (! $classChar) {
return response()->json([
'status_code' => 'ERROR',
- 'status_description' => "Job number '{$jobNo}' not found for the plant code '{$plantCode}' and work center '{$workCenter}'!",
+ 'status_description' => "Job number '{$jobNo}' not found for the work center '{$workCenter}'!", // plant code '{$plantCode}' and
], 404);
}
- $itemId = $existingJob->item_id;
+ $itemId = $classChar->item_id;
$item = Item::where('id', $itemId)->first();
@@ -1554,7 +1663,7 @@ class CharacteristicsController extends Controller
if (! $stick) {
return response()->json([
'status_code' => 'ERROR',
- 'status_description' => "Item code '{$itemCode}' not found in sticker master!",
+ 'status_description' => "Item code '{$itemCode}' not found in sticker masters table!",
], 404);
}
@@ -1563,19 +1672,19 @@ class CharacteristicsController extends Controller
if (! $stickPlant) {
return response()->json([
'status_code' => 'ERROR',
- 'status_description' => "Item code '{$itemCode}' not found in sticker master for the plant code '{$plantCode}'!",
+ '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 master!',
+ '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.',
+ 'status_description' => 'The MVHS master count should be between 1 to 9!',
], 404);
}
}
@@ -1596,7 +1705,7 @@ class CharacteristicsController extends Controller
if (! $stick) {
return response()->json([
'status_code' => 'ERROR',
- 'status_description' => "Item code '{$itemCode}' not found in sticker master!",
+ 'status_description' => "Item code '{$itemCode}' not found in sticker masters table!",
], 404);
}
@@ -1605,19 +1714,19 @@ class CharacteristicsController extends Controller
if (! $stickPlant) {
return response()->json([
'status_code' => 'ERROR',
- 'status_description' => "Item code '{$itemCode}' not found in sticker master for the plant code '{$plantCode}'!",
+ '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 master!',
+ '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.',
+ 'status_description' => 'The MVHS master count should be between 1 to 9!',
], 404);
}
}
@@ -1655,14 +1764,14 @@ class CharacteristicsController extends Controller
return response()->json([
'status_code' => 'ERROR',
- 'status_description' => "Following users : '".implode(', ', $uniqueMissingUsers)."' not found!",
+ 'status_description' => "Following user names : '".implode(', ', $uniqueMissingUsers)."' not found in users table!",
], 404);
} elseif (! empty($missingUsersPlant)) {
$uniqueMissingUsersPlant = array_unique($missingUsersPlant);
return response()->json([
'status_code' => 'ERROR',
- 'status_description' => "Following users : '".implode(', ', $uniqueMissingUsersPlant)."' not found for the plant code '{$plantCode}'!",
+ 'status_description' => "Following user names : '".implode(', ', $uniqueMissingUsersPlant)."' not found for the plant code '{$plantCode}' in users table!",
], 404);
} elseif (! empty($missingUsersRight)) {
$uniqueMissingUsersRight = array_unique($missingUsersRight);
@@ -1678,15 +1787,9 @@ class CharacteristicsController extends Controller
$seenSerialNumbers = [];
foreach ($serialNumbers as $serial) {
try {
- $existing = ClassCharacteristic::where('plant_id', $plantId)
- // ->where('item_id', $itemId)
- ->where('gernr', $serial)
- ->first();
+ $existing = ClassCharacteristic::where('gernr', $serial)->where('plant_id', $plantId)->first(); // ->where('item_id', $itemId)
- $existSnoJob = ClassCharacteristic::where('plant_id', $plantId)
- ->where('gernr', $serial)
- ->where('aufnr', '!=', $jobNo)
- ->first();
+ $existSnoJob = ClassCharacteristic::where('gernr', $serial)->where('aufnr', '!=', $jobNo)->where('plant_id', $plantId)->first();
if ($existing && $existSnoJob) {
$dupSerials[] = $serial;
@@ -1700,7 +1803,7 @@ class CharacteristicsController extends Controller
} catch (\Exception $e) {
return response()->json([
'status_code' => 'ERROR',
- 'status_description' => "Error occurred while inserting new master characteristics for the serial number '$serial', {$e->getMessage()}",
+ 'status_description' => "Error occurred while inserting new master characteristics for the serial number '{$serial}', {$e->getMessage()}",
// 'char_data' => $char
], 500);
}
@@ -1723,14 +1826,7 @@ class CharacteristicsController extends Controller
}
}
- if (empty($characteristics) || ! is_array($characteristics) || count($characteristics) == 0) {
- return response()->json([
- 'status_code' => 'ERROR',
- 'status_description' => "Characteristics can't be empty!",
- ], 404);
- }
-
- $masterFields = ['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', 'pending_released_status'];
+ $masterFields = ['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', 'pending_released_status'];
$isInsertOrUpdate = false;
@@ -1748,9 +1844,7 @@ class CharacteristicsController extends Controller
}
}
- $existing = ClassCharacteristic::where('plant_id', $plantId)
- ->where('machine_id', $machineId)
- ->where('aufnr', $jobNo);
+ $existing = ClassCharacteristic::where('aufnr', $jobNo)->where('machine_id', $machineId)->where('plant_id', $plantId);
if ($existing) {
$isInsertOrUpdate = true;
@@ -1759,28 +1853,27 @@ class CharacteristicsController extends Controller
} else {
return response()->json([
'status_code' => 'ERROR',
- 'status_description' => "Job number '$jobNo' not found to update exist master characteristics!",
+ 'status_description' => "Job number '{$jobNo}' not found to update exist master characteristics!",
], 404);
}
} catch (\Exception $e) {
return response()->json([
'status_code' => 'ERROR',
- 'status_description' => "Error occurred while updating exist master characteristics for the job number '$jobNo', {$e->getMessage()}",
+ 'status_description' => "Error occurred while updating exist master characteristics for the job number '{$jobNo}', {$e->getMessage()}",
// 'char_data' => $char
], 404);
}
}
if ($hasNewSno) {
- $itemId = $existingJob->item_id;
-
+ // $itemId = $classChar->item_id;
foreach ($serialNumbers as $serial) {
foreach ($characteristics as $char) {
try {
$insertData = [
'plant_id' => $plantId,
- 'aufnr' => $jobNo,
'machine_id' => $machineId,
+ 'aufnr' => $jobNo,
'item_id' => $itemId,
'gernr' => $serial,
];
@@ -1797,20 +1890,14 @@ class CharacteristicsController extends Controller
// $insertData['pump_marked_by'] = ($char['pump_marked_by'] == 'jothi') ? 'Admin' : $char['pump_marked_by'] ?? null;
// $insertData['name_plate_marked_by'] = ($char['name_plate_marked_by'] == 'jothi') ? 'Admin' : $char['name_plate_marked_by'] ?? null;
- $existing = ClassCharacteristic::where('plant_id', $plantId)
- // ->where('item_id', $itemId)
- ->where('gernr', $serial)
- ->first();
+ $existing = ClassCharacteristic::where('gernr', $serial)->where('plant_id', $plantId)->first(); // ->where('item_id', $itemId)
- $existSnoJob = ClassCharacteristic::where('plant_id', $plantId)
- ->where('gernr', $serial)
- ->where('aufnr', '!=', $jobNo)
- ->first();
+ $existSnoJob = ClassCharacteristic::where('gernr', $serial)->where('aufnr', '!=', $jobNo)->where('plant_id', $plantId)->first();
if ($existing && $existSnoJob) { // // Skip duplicate warning...
return response()->json([
'status_code' => 'ERROR',
- 'status_description' => "Duplicate serial number '$serial' found while updating exist master characteristics in job number '$existSnoJob->aufnr'!",
+ 'status_description' => "Duplicate serial number '{$serial}' found while updating exist master characteristics in job number '{$existSnoJob->aufnr}'!",
], 404);
} else {
$isInsertOrUpdate = true;
@@ -1820,7 +1907,7 @@ class CharacteristicsController extends Controller
} catch (\Exception $e) {
return response()->json([
'status_code' => 'ERROR',
- 'status_description' => "Error occurred while inserting new master characteristics for the serial number '$serial', {$e->getMessage()}",
+ 'status_description' => "Error occurred while inserting new master characteristics for the serial number '{$serial}', {$e->getMessage()}",
// 'char_data' => $char
], 500);
}
@@ -1828,9 +1915,56 @@ class CharacteristicsController extends Controller
}
}
+ // $classChar = ClassCharacteristic::where('aufnr', $jobNo)->where('machine_id', $machineId)->where('plant_id', $plantId)->latest()->first();
+ $modelHeading = $classChar?->zmm_heading ?? '';
+
+ $typesToCreate = [];
+
+ if (Str::contains($modelHeading, 'PRESSURE BOOSTER SYSTEM', ignoreCase: true)) {
+ $typesToCreate = ['MOTOR', 'PUMP', 'NAME_PLATE'];
+ } elseif (Str::contains($modelHeading, 'PUMPSET', 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)) {
+ $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 ($isInsertOrUpdate) {
+ TempClassCharacteristic::where('aufnr', $jobNo)->where('machine_id', $machineId)->where('plant_id', $plantId)->forceDelete();
+
+ foreach ($typesToCreate as $type) {
+ TempClassCharacteristic::create([
+ 'plant_id' => $plantId,
+ 'machine_id' => $machineId,
+ 'item_id' => $itemId,
+ 'aufnr' => $jobNo,
+ 'model_type' => $type,
+ 'has_work_flow_id' => '2',
+ 'created_by' => $userName,
+ 'updated_by' => $userName,
+ ]);
+ }
+
+ // $classChar = ClassCharacteristic::where('aufnr', $jobNo)->where('machine_id', $machineId)->where('plant_id', $plantId)->latest()->first();
+ if ($classChar) {
+ ClassCharacteristic::where('aufnr', $jobNo)->where('machine_id', $machineId)->where('plant_id', $plantId)
+ ->update([
+ 'has_work_flow_id' => '2',
+ 'updated_at' => now(),
+ 'updated_by' => $userName,
+ ]);
+ }
+ }
+
return response()->json([
'status_code' => 'SUCCESS',
- 'status_description' => $isInsertOrUpdate ? "Successfully updated master characteristics for the job number '$jobNo'." : "Failed to update master characteristics for the job number '$jobNo'.",
+ 'status_description' => $isInsertOrUpdate ? "Successfully updated master characteristics for the job number '{$jobNo}'." : "Failed to update master characteristics for the job number '{$jobNo}'.",
], 200);
}
}
@@ -1863,7 +1997,7 @@ class CharacteristicsController extends Controller
$serialNumber = $request->header('serial-number');
- if (! $userName) {
+ if (! $userName || $userName == null || $userName == '') {
return response()->json([
'status_code' => 'ERROR',
'status_description' => "User name can't be empty!",
@@ -1872,23 +2006,43 @@ class CharacteristicsController extends Controller
$userName = 'Admin';
}
- if (! $plantCode || $plantCode == null || $plantCode == '') {
+ if ($plantCode == null || $plantCode == '' || ! $plantCode) {
return response()->json([
'status_code' => 'ERROR',
'status_description' => "Plant code can't be empty!",
- ], 404);
- } elseif (! is_numeric($plantCode) || Str::length($plantCode) < 4 || ! preg_match('/^[1-9]\d{3,}$/', $plantCode)) { // !ctype_digit($data['plant_code'])
+ ], 400);
+ } elseif (! is_numeric($plantCode)) {
return response()->json([
'status_code' => 'ERROR',
- 'status_description' => 'Invalid plant code found!',
- ], 404);
+ '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 || $workCenter == null || $workCenter == '') {
+ 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 || $modelType == null || $modelType == '') {
@@ -1896,11 +2050,6 @@ class CharacteristicsController extends Controller
'status_code' => 'ERROR',
'status_description' => "Model type can't be empty!",
], 404);
- } elseif ($modelType != 'MOTOR' && $modelType != 'PUMP' && $modelType != 'NAME_PLATE' && $modelType != 'PUMPSET') {
- return response()->json([
- 'status_code' => 'ERROR',
- 'status_description' => 'Unknown model type found!',
- ], 404);
}
$plant = Plant::where('code', $plantCode)->first();
@@ -1908,7 +2057,7 @@ class CharacteristicsController extends Controller
if (! $plant) {
return response()->json([
'status_code' => 'ERROR',
- 'status_description' => "Plant Code '{$plantCode}' not found!",
+ 'status_description' => "Plant Code '{$plantCode}' not found in plants table!",
], 404);
}
@@ -1921,17 +2070,17 @@ class CharacteristicsController extends Controller
if (! $user) {
return response()->json([
'status_code' => 'ERROR',
- 'status_description' => 'User name not found!',
+ '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 not found for the plant!',
+ '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 does not have rights!',
+ 'status_description' => "User '{$userName}' does not have rights!",
], 403);
}
@@ -1940,18 +2089,16 @@ class CharacteristicsController extends Controller
if (! $work) {
return response()->json([
'status_code' => 'ERROR',
- 'status_description' => "Work center '{$workCenter}' not found!",
+ 'status_description' => "Work center '{$workCenter}' not found in machines table!",
], 404);
}
- $machine = Machine::where('work_center', $workCenter)
- ->where('plant_id', $plantId)
- ->first();
+ $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}'!",
+ 'status_description' => "Work center '{$workCenter}' not found for the plant code '{$plantCode}' in machines table!",
], 404);
}
@@ -1989,9 +2136,7 @@ class CharacteristicsController extends Controller
], 404);
}
- $jobPlant = ClassCharacteristic::where('aufnr', $jobNumber)
- ->where('plant_id', $plantId)
- ->first();
+ $jobPlant = ClassCharacteristic::where('aufnr', $jobNumber)->where('plant_id', $plantId)->first();
if (! $jobPlant) {
return response()->json([
@@ -2000,10 +2145,7 @@ class CharacteristicsController extends Controller
], 404);
}
- $jobWorkCenter = ClassCharacteristic::where('aufnr', $jobNumber)
- ->where('plant_id', $plantId)
- ->where('machine_id', $machineId)
- ->first();
+ $jobWorkCenter = ClassCharacteristic::where('aufnr', $jobNumber)->where('machine_id', $machineId)->where('plant_id', $plantId)->first();
if (! $jobWorkCenter) {
return response()->json([
@@ -2012,39 +2154,26 @@ 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', 'pumpset_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_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'];
- $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'];
+ $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'];
- $characteristicsData = ClassCharacteristic::where('aufnr', $jobNumber)
- ->where('plant_id', $plantId)
- ->where('machine_id', $machineId)
- // ->get();
- ->distinct()
- ->get($characteristicsColumns);
+ $characteristicsData = ClassCharacteristic::where('aufnr', $jobNumber)->where('machine_id', $machineId)->where('plant_id', $plantId)->distinct()->get($characteristicsColumns); // ->get();
if ($characteristicsData->isEmpty()) {
return response()->json([
'status_code' => 'ERROR',
- 'status_description' => 'No characteristics data found for the provided Plant, Work Center, and Job Number!',
+ 'status_description' => 'No characteristics data found for the provided Plant Code, Work Center, and Job Number!',
], 404);
}
- $serials = ClassCharacteristic::where('plant_id', $plantId)
- ->where('machine_id', $machineId)
- ->where('aufnr', $jobNumber)
- ->orderBy('gernr')
- // ->get(array_merge(['gernr'], $columnsToShow));
- ->get(array_merge(['gernr', 'item_id'], $columnsToShow));
+ $serials = ClassCharacteristic::where('aufnr', $jobNumber)->where('machine_id', $machineId)->where('plant_id', $plantId)->orderBy('gernr')->get(array_merge(['gernr', 'item_id'], $columnsToShow)); // ->get(array_merge(['gernr'], $columnsToShow));
$itemId = $serials->first()->item_id;
$itemcode = Item::where('id', $itemId)->value('code') ?? '';
- $markedSerials = ClassCharacteristic::where('plant_id', $plantId)
- ->where('machine_id', $machineId)
- ->where('aufnr', $jobNumber)
- ->get(['gernr', 'mark_status']);
+ $markedSerials = ClassCharacteristic::where('aufnr', $jobNumber)->where('machine_id', $machineId)->where('plant_id', $plantId)->get(['gernr', 'mark_status']);
$allMarked = $markedSerials->every(function ($serial) {
return strtolower($serial->mark_status) == 'marked';
@@ -2053,30 +2182,30 @@ class CharacteristicsController extends Controller
if ($allMarked) {
return response()->json([
'status_code' => 'ERROR',
- 'status_description' => 'All serial numbers are already marked.',
+ 'status_description' => 'All serial numbers are already marked!',
], 404);
}
$serialNumbers = $serials->map(function ($serial) use ($columnsToShow) {
$otherData = [];
foreach ($columnsToShow as $col) {
- $otherData[$col] = (string) $serial->$col ?? '';
+ $otherData[strtoupper($col)] = (string) $serial->$col ?? '';
}
- $otherData['marked_by'] = ($otherData['marked_by'] == 'Admin') ? 'jothi' : $otherData['marked_by'] ?? '';
- $otherData['man_marked_by'] = ($otherData['man_marked_by'] == 'Admin') ? 'jothi' : $otherData['man_marked_by'] ?? '';
- $otherData['motor_marked_by'] = ($otherData['motor_marked_by'] == 'Admin') ? 'jothi' : $otherData['motor_marked_by'] ?? '';
- $otherData['pump_marked_by'] = ($otherData['pump_marked_by'] == 'Admin') ? 'jothi' : $otherData['pump_marked_by'] ?? '';
- $otherData['name_plate_marked_by'] = ($otherData['name_plate_marked_by'] == 'Admin') ? 'jothi' : $otherData['name_plate_marked_by'] ?? '';
+ $otherData['MARKED_BY'] = ($otherData['MARKED_BY'] == 'Admin') ? 'jothi' : $otherData['MARKED_BY'] ?? ''; // marked_by
+ $otherData['MAN_MARKED_BY'] = ($otherData['MAN_MARKED_BY'] == 'Admin') ? 'jothi' : $otherData['MAN_MARKED_BY'] ?? ''; // man_marked_by
+ $otherData['MOTOR_MARKED_BY'] = ($otherData['MOTOR_MARKED_BY'] == 'Admin') ? 'jothi' : $otherData['MOTOR_MARKED_BY'] ?? ''; // motor_marked_by
+ $otherData['PUMP_MARKED_BY'] = ($otherData['PUMP_MARKED_BY'] == 'Admin') ? 'jothi' : $otherData['PUMP_MARKED_BY'] ?? ''; // pump_marked_by
+ $otherData['NAME_PLATE_MARKED_BY'] = ($otherData['NAME_PLATE_MARKED_BY'] == 'Admin') ? 'jothi' : $otherData['NAME_PLATE_MARKED_BY'] ?? ''; // name_plate_marked_by
// $otherData['pending_released_status'] = (string)$otherData['pending_released_status'] ?? '';
- return array_merge(['gernr' => $serial->gernr], $otherData);
+ return array_merge(['GERNR' => $serial->gernr], $otherData);
});
$characteristics = $characteristicsData->map(function ($char) use ($characteristicsColumns) {
$data = [];
foreach ($characteristicsColumns as $col) {
- $data[$col] = $char->$col ?? '';
+ $data[strtoupper($col)] = $char->$col ?? '';
}
return $data;
@@ -2091,6 +2220,13 @@ class CharacteristicsController extends Controller
return response()->json($response);
} elseif (($itemCode != '' && $itemCode != null) || ($serialNumber != '' && $serialNumber != null)) {
+ if ($modelType != 'MOTOR' && $modelType != 'PUMP' && $modelType != 'NAME_PLATE') {
+ return response()->json([
+ 'status_code' => 'ERROR',
+ 'status_description' => "Unknown model type '{$modelType}' found!",
+ ], 404);
+ }
+
if (Str::length($serialNumber) < 9) {
return response()->json([
'status_code' => 'ERROR',
@@ -2130,18 +2266,16 @@ class CharacteristicsController extends Controller
if (! $item) {
return response()->json([
'status_code' => 'ERROR',
- 'status_description' => "Item code '{$itemCode}' not found!",
+ 'status_description' => "Item code '{$itemCode}' not found in items table!",
], 404);
}
- $itemPlant = Item::where('code', $itemCode)
- ->where('plant_id', $plantId)
- ->first();
+ $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}'!",
+ 'status_description' => "Item code '{$itemCode}' not found for the plant code '{$plantCode}' in items table!",
], 404);
}
@@ -2156,9 +2290,7 @@ class CharacteristicsController extends Controller
], 404);
}
- $serialExists = ClassCharacteristic::where('plant_id', $plantId)
- ->where('gernr', $serialNumber)
- ->first();
+ $serialExists = ClassCharacteristic::where('gernr', $serialNumber)->where('plant_id', $plantId)->first();
if (! $serialExists) {
return response()->json([
@@ -2167,28 +2299,21 @@ class CharacteristicsController extends Controller
], 404);
}
- $serialExists = ClassCharacteristic::where('plant_id', $plantId)
- ->where('gernr', $serialNumber)
- ->where('item_id', $itemId)
- ->first();
+ $serialExists = ClassCharacteristic::where('gernr', $serialNumber)->where('item_id', $itemId)->where('plant_id', $plantId)->first();
if (! $serialExists) {
return response()->json([
'status_code' => 'ERROR',
- 'status_description' => "Serial number '{$serialNumber}' with item code '{$itemCode}' not found for plant code '{$plantCode}'!",
+ 'status_description' => "Serial number '{$serialNumber}' not found with the item code '{$itemCode}'!",
], 404);
}
- $serialExists = ClassCharacteristic::where('plant_id', $plantId)
- ->where('machine_id', $machineId)
- ->where('gernr', $serialNumber)
- ->where('item_id', $itemId)
- ->first();
+ $serialExists = ClassCharacteristic::where('gernr', $serialNumber)->where('item_id', $itemId)->where('machine_id', $machineId)->where('plant_id', $plantId)->first();
if (! $serialExists) {
return response()->json([
'status_code' => 'ERROR',
- 'status_description' => "Serial number '{$serialNumber}' with item code '{$itemCode}' not found for work center '{$workCenter}'!",
+ 'status_description' => "Serial number '{$serialNumber}' not found for work center '{$workCenter}'!",
], 404);
}
@@ -2200,30 +2325,28 @@ class CharacteristicsController extends Controller
if (! $stick) {
return response()->json([
'status_code' => 'ERROR',
- 'status_description' => "Item code '{$itemCode}' not found in sticker master!",
+ 'status_description' => "Item code '{$itemCode}' not found in sticker masters table!",
], 404);
}
- $stickPlant = StickerMaster::where('item_id', $itemId)
- ->where('plant_id', $plantId)
- ->first();
+ $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 in sticker master for the plant code '{$plantCode}'!",
+ '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 master!',
+ '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!"
+ '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);
}
}
@@ -2239,11 +2362,11 @@ class CharacteristicsController extends Controller
'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 ($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') {
@@ -2251,11 +2374,11 @@ class CharacteristicsController extends Controller
'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 ($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, 'PUMPSET', ignoreCase: true)) {
return response()->json([
@@ -2285,11 +2408,11 @@ class CharacteristicsController extends Controller
'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);
+ // } elseif ($modelType == 'PUMPSET' && $curMarkStat != 'Marked') {
+ // return response()->json([
+ // 'status_code' => 'ERROR',
+ // 'status_description' => "Pumpset serial number '{$serialNumber}' doesn't marked in auto mode!",
+ // ], 404);
}
if ($serialExists->mark_status != 'Marked' && $serialExists->motor_marked_status != 'Marked' && $serialExists->pump_marked_status != 'Marked') {
@@ -2300,15 +2423,9 @@ class CharacteristicsController extends Controller
], 404);
}
- $characteristicsData = ClassCharacteristic::where('plant_id', $plantId)
- ->where('machine_id', $machineId)
- ->where('gernr', $serialNumber)
- ->where('item_id', $itemId)
- ->get();
+ $characteristicsData = ClassCharacteristic::where('gernr', $serialNumber)->where('item_id', $itemId)->where('machine_id', $machineId)->where('plant_id', $plantId)->get();
- $remFields = [
- 'id', 'plant_id', 'machine_id', 'item_id', 'gernr', 'zmm_beenote', 'zmm_beenumber', 'zmm_beestar', 'zmm_codeclass', 'zmm_colour', 'zmm_grade', 'zmm_grwt_pset', 'zmm_grwt_cable', 'zmm_grwt_motor', 'zmm_grwt_pf', 'zmm_grwt_pump', 'zmm_isivalve', 'zmm_isi_wc', 'zmm_labelperiod', 'zmm_length', 'zmm_license_cml_no', 'zmm_mfgmonyr', 'zmm_modelyear', 'zmm_motoridentification', 'zmm_newt_pset', 'zmm_newt_cable', 'zmm_newt_motor', 'zmm_newt_pf', 'zmm_newt_pump', 'zmm_packtype', 'zmm_panel', 'zmm_performance_factor', 'zmm_pumpidentification', 'zmm_psettype', 'zmm_size', 'zmm_eff_ttl', 'zmm_type', 'zmm_usp', 'created_at', 'updated_at', 'created_by', 'updated_by', 'deleted_at',
- ];
+ $remFields = ['id', 'plant_id', 'machine_id', 'item_id', 'gernr', 'zmm_codeclass', 'zmm_colour', 'zmm_grade', 'zmm_grwt_cable', 'zmm_grwt_pf', 'zmm_isivalve', 'zmm_isi_wc', 'zmm_length', 'zmm_license_cml_no', 'zmm_mfgmonyr', 'zmm_motoridentification', 'zmm_newt_cable', 'zmm_newt_pf', 'zmm_packtype', 'zmm_panel', 'zmm_pumpidentification', 'zmm_psettype', 'zmm_size', 'zmm_type', 'zmm_usp', 'created_at', 'updated_at', 'created_by', 'updated_by', 'deleted_at'];
$filteredData = $characteristicsData->map(function ($char) use ($remFields) {
$charArray = $char->toArray();
@@ -2342,7 +2459,8 @@ class CharacteristicsController extends Controller
}
}
- return $charArray;
+ // return $charArray;
+ return array_change_key_case($charArray, CASE_UPPER);
});
// $response = [
@@ -2381,31 +2499,51 @@ class CharacteristicsController extends Controller
$serialNumber = $request->header('serial-number');
- if (! $userName) {
+ if (! $userName || $userName == null || $userName == '') {
return response()->json([
'status_code' => 'ERROR',
- 'status_description' => "User Name can't be empty!",
+ 'status_description' => "User name can't be empty!",
], 404);
} elseif ($userName == 'jothi') {
$userName = 'Admin';
}
- if (! $plantCode || $plantCode == null || $plantCode == '') {
+ if ($plantCode == null || $plantCode == '' || ! $plantCode) {
return response()->json([
'status_code' => 'ERROR',
'status_description' => "Plant code can't be empty!",
- ], 404);
- } elseif (! is_numeric($plantCode) || Str::length($plantCode) < 4 || ! preg_match('/^[1-9]\d{3,}$/', $plantCode)) { // !ctype_digit($data['plant_code'])
+ ], 400);
+ } elseif (! is_numeric($plantCode)) {
return response()->json([
'status_code' => 'ERROR',
- 'status_description' => 'Invalid plant code found!',
- ], 404);
+ '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 || $workCenter == null || $workCenter == '') {
+ if ($workCenter == null || $workCenter == '' || ! $workCenter) {
return response()->json([
'status_code' => 'ERROR',
- 'status_description' => "Work Center can't be empty!",
+ '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);
}
@@ -2414,7 +2552,7 @@ class CharacteristicsController extends Controller
if (! $plant) {
return response()->json([
'status_code' => 'ERROR',
- 'status_description' => "Plant Code '{$plantCode}' not found!",
+ 'status_description' => "Plant code '{$plantCode}' not found in plants table!",
], 404);
}
@@ -2427,17 +2565,17 @@ class CharacteristicsController extends Controller
if (! $user) {
return response()->json([
'status_code' => 'ERROR',
- 'status_description' => 'User Name not found!',
+ '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 not found for the plant!',
+ '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 does not have rights!',
+ 'status_description' => "User '{$userName}' does not have rights!",
], 403);
}
@@ -2446,7 +2584,7 @@ class CharacteristicsController extends Controller
if (! $work) {
return response()->json([
'status_code' => 'ERROR',
- 'status_description' => "Work Center '{$workCenter}' not found!",
+ 'status_description' => "Work center '{$workCenter}' not found in machines table!",
], 404);
}
@@ -2455,7 +2593,7 @@ class CharacteristicsController extends Controller
if (! $machine) {
return response()->json([
'status_code' => 'ERROR',
- 'status_description' => "Work Center '{$workCenter}' not found for the plant code '{$plantCode}'!",
+ 'status_description' => "Work center '{$workCenter}' not found for the plant code '{$plantCode}' in machines table!",
], 404);
}
@@ -2489,13 +2627,11 @@ class CharacteristicsController extends Controller
if (! $job) {
return response()->json([
'status_code' => 'ERROR',
- 'status_description' => "Job number '{$jobNumber}' not found!",
+ 'status_description' => "Job number '{$jobNumber}' not found!", // skip
], 404);
}
- $jobPlant = ClassCharacteristic::where('aufnr', $jobNumber)
- ->where('plant_id', $plantId)
- ->first();
+ $jobPlant = ClassCharacteristic::where('aufnr', $jobNumber)->where('plant_id', $plantId)->first();
if (! $jobPlant) {
return response()->json([
@@ -2504,10 +2640,7 @@ class CharacteristicsController extends Controller
], 404);
}
- $jobWorkCenter = ClassCharacteristic::where('aufnr', $jobNumber)
- ->where('plant_id', $plantId)
- ->where('machine_id', $machineId)
- ->first();
+ $jobWorkCenter = ClassCharacteristic::where('aufnr', $jobNumber)->where('machine_id', $machineId)->where('plant_id', $plantId)->first();
if (! $jobWorkCenter) {
return response()->json([
@@ -2527,7 +2660,7 @@ class CharacteristicsController extends Controller
if (! $stick) {
return response()->json([
'status_code' => 'ERROR',
- 'status_description' => "Item code '{$itemCode}' not found in sticker master!",
+ 'status_description' => "Item code '{$itemCode}' not found in sticker masters table!",
], 404);
}
@@ -2536,57 +2669,44 @@ class CharacteristicsController extends Controller
if (! $stickPlant) {
return response()->json([
'status_code' => 'ERROR',
- 'status_description' => "Item code '{$itemCode}' not found in sticker master for the plant code '{$plantCode}'!",
+ '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 master!',
+ '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.',
+ 'status_description' => 'The MVHS master count should be between 1 to 9!',
], 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', 'pumpset_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_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'];
- $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'];
+ $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'];
- $characteristicsData = ClassCharacteristic::where('aufnr', $jobNumber)
- ->where('plant_id', $plantId)
- ->where('machine_id', $machineId)
- // ->get();
- ->distinct()
- ->get($characteristicsColumns);
+ $characteristicsData = ClassCharacteristic::where('aufnr', $jobNumber)->where('machine_id', $machineId)->where('plant_id', $plantId)->distinct()->get($characteristicsColumns); // ->get();
if ($characteristicsData->isEmpty()) {
return response()->json([
'status_code' => 'ERROR',
- 'status_description' => 'No characteristics data found for the provided Plant, Work Center, and Job Number!',
+ 'status_description' => 'No characteristics data found for the provided Plant Code, Work Center, and Job Number!',
], 404);
}
- // $serials = ClassCharacteristic::where('plant_id', $plantId)
- // ->where('machine_id', $machineId)
- // ->where('aufnr', $jobNumber)
- // ->orderBy('gernr')
- // //->get(array_merge(['gernr'], $columnsToShow));
- // ->get(array_merge(['gernr', 'item_id'], $columnsToShow));
+ // $serials = ClassCharacteristic::where('aufnr', $jobNumber)->where('machine_id', $machineId)->where('plant_id', $plantId)->orderBy('gernr')->get(array_merge(['gernr', 'item_id'], $columnsToShow)); //->get(array_merge(['gernr'], $columnsToShow));
// $itemId = $serials->first()->item_id;
// $itemcode = Item::where('id', $itemId)->value('code') ?? '';
- $markedSerials = ClassCharacteristic::where('plant_id', $plantId)
- ->where('machine_id', $machineId)
- ->where('aufnr', $jobNumber)
- ->get(['gernr', 'mark_status']);
+ $markedSerials = ClassCharacteristic::where('aufnr', $jobNumber)->where('machine_id', $machineId)->where('plant_id', $plantId)->get(['gernr', 'mark_status']);
$allMarked = $markedSerials->every(function ($serial) {
return strtolower($serial->mark_status) == 'marked';
@@ -2595,12 +2715,12 @@ class CharacteristicsController extends Controller
if ($allMarked) {
return response()->json([
'status_code' => 'ERROR',
- 'status_description' => 'All serial numbers are already marked!',
+ 'status_description' => 'All serial numbers are already marked!', // skip
], 404);
} else {
return response()->json([
'status_code' => 'SUCCESS',
- 'status_description' => 'Has some pending serial numbers to mark.',
+ 'status_description' => 'Has some pending serial numbers to mark!',
], 200);
}
} elseif ((($itemCode != '' && $itemCode != null) || ($serialNumber != '' && $serialNumber != null)) && $jobNumber != '' && $jobNumber != null) {
@@ -2669,13 +2789,11 @@ class CharacteristicsController extends Controller
if (! $job) {
return response()->json([
'status_code' => 'ERROR',
- 'status_description' => "Job number '{$jobNumber}' not found!",
+ 'status_description' => "Job number '{$jobNumber}' not found!", // skip
], 404);
}
- $jobPlant = ClassCharacteristic::where('aufnr', $jobNumber)
- ->where('plant_id', $plantId)
- ->first();
+ $jobPlant = ClassCharacteristic::where('aufnr', $jobNumber)->where('plant_id', $plantId)->first();
if (! $jobPlant) {
return response()->json([
@@ -2684,10 +2802,7 @@ class CharacteristicsController extends Controller
], 404);
}
- $jobWorkCenter = ClassCharacteristic::where('aufnr', $jobNumber)
- ->where('plant_id', $plantId)
- ->where('machine_id', $machineId)
- ->first();
+ $jobWorkCenter = ClassCharacteristic::where('aufnr', $jobNumber)->where('machine_id', $machineId)->where('plant_id', $plantId)->first();
if (! $jobWorkCenter) {
return response()->json([
@@ -2701,18 +2816,16 @@ class CharacteristicsController extends Controller
if (! $item) {
return response()->json([
'status_code' => 'ERROR',
- 'status_description' => "Item code '{$itemCode}' not found!",
+ 'status_description' => "Item code '{$itemCode}' not found in items table!",
], 404);
}
- $itemPlant = Item::where('code', $itemCode)
- ->where('plant_id', $plantId)
- ->first();
+ $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}'!",
+ 'status_description' => "Item code '{$itemCode}' not found for the plant code '{$plantCode}' in items table!",
], 404);
}
@@ -2727,9 +2840,7 @@ class CharacteristicsController extends Controller
], 404);
}
- $serialExists = ClassCharacteristic::where('plant_id', $plantId)
- ->where('gernr', $serialNumber)
- ->first();
+ $serialExists = ClassCharacteristic::where('gernr', $serialNumber)->where('plant_id', $plantId)->first();
if (! $serialExists) {
return response()->json([
@@ -2738,42 +2849,30 @@ class CharacteristicsController extends Controller
], 404);
}
- $serialExists = ClassCharacteristic::where('plant_id', $plantId)
- ->where('gernr', $serialNumber)
- ->where('item_id', $itemId)
- ->first();
+ $serialExists = ClassCharacteristic::where('gernr', $serialNumber)->where('item_id', $itemId)->where('plant_id', $plantId)->first();
if (! $serialExists) {
return response()->json([
'status_code' => 'ERROR',
- 'status_description' => "Serial number '{$serialNumber}' with item code '{$itemCode}' not found for plant code '{$plantCode}'!",
+ 'status_description' => "Serial number '{$serialNumber}' not found with the item code '{$itemCode}'!",
], 404);
}
- $serialExists = ClassCharacteristic::where('plant_id', $plantId)
- ->where('machine_id', $machineId)
- ->where('gernr', $serialNumber)
- ->where('item_id', $itemId)
- ->first();
+ $serialExists = ClassCharacteristic::where('gernr', $serialNumber)->where('item_id', $itemId)->where('machine_id', $machineId)->where('plant_id', $plantId)->first();
if (! $serialExists) {
return response()->json([
'status_code' => 'ERROR',
- 'status_description' => "Serial number '{$serialNumber}' with item code '{$itemCode}' not found for work center '{$workCenter}'!",
+ 'status_description' => "Serial number '{$serialNumber}' not found for work center '{$workCenter}'!",
], 404);
}
- $serialExists = ClassCharacteristic::where('plant_id', $plantId)
- ->where('machine_id', $machineId)
- ->where('aufnr', $jobNumber)
- ->where('gernr', $serialNumber)
- ->where('item_id', $itemId)
- ->first();
+ $serialExists = ClassCharacteristic::where('gernr', $serialNumber)->where('item_id', $itemId)->where('aufnr', $jobNumber)->where('machine_id', $machineId)->where('plant_id', $plantId)->first();
if (! $serialExists) {
return response()->json([
'status_code' => 'ERROR',
- 'status_description' => "Serial number '{$serialNumber}' with item code '{$itemCode}' not found for job number '{$jobNumber}'!",
+ 'status_description' => "Serial number '{$serialNumber}' not found for job number '{$jobNumber}'!",
], 404);
} else {
if (Str::contains($serialExists?->zmm_heading, 'PRESSURE BOOSTER SYSTEM', ignoreCase: true)) {
@@ -2782,40 +2881,35 @@ class CharacteristicsController extends Controller
if (! $stick) {
return response()->json([
'status_code' => 'ERROR',
- 'status_description' => "Item code '{$itemCode}' not found in sticker master!",
+ 'status_description' => "Item code '{$itemCode}' not found in sticker masters table!",
], 404);
}
- $stickPlant = StickerMaster::where('item_id', $itemId)
- ->where('plant_id', $plantId)
- ->first();
+ $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 in sticker master for the plant code '{$plantCode}'!",
+ '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 master!',
+ '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.',
+ 'status_description' => 'The MVHS master count should be between 1 to 9!',
], 404);
}
}
}
}
- $markedSerials = ClassCharacteristic::where('plant_id', $plantId)
- ->where('machine_id', $machineId)
- ->where('aufnr', $jobNumber)
- ->get(['gernr', 'mark_status']);
+ $markedSerials = ClassCharacteristic::where('aufnr', $jobNumber)->where('machine_id', $machineId)->where('plant_id', $plantId)->get(['gernr', 'mark_status']);
$allMarked = $markedSerials->every(function ($serial) {
return strtolower($serial->mark_status) == 'marked';
@@ -2824,7 +2918,7 @@ class CharacteristicsController extends Controller
if ($allMarked) {
return response()->json([
'status_code' => 'ERROR',
- 'status_description' => 'All serial numbers are already marked!',
+ 'status_description' => 'All serial numbers are already marked!', // skip
], 404);
}
@@ -2836,21 +2930,16 @@ 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', 'pumpset_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_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'];
- // $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_beenote', 'zmm_beenumber', 'zmm_beestar', 'zmm_codeclass', 'zmm_colour', 'zmm_grade', 'zmm_grwt_pset', 'zmm_grwt_cable', 'zmm_grwt_motor', 'zmm_grwt_pf', 'zmm_grwt_pump', 'zmm_isivalve', 'zmm_isi_wc', 'zmm_labelperiod', 'zmm_length', 'zmm_license_cml_no', 'zmm_mfgmonyr', 'zmm_modelyear', 'zmm_motoridentification', 'zmm_newt_pset', 'zmm_newt_cable', 'zmm_newt_motor', 'zmm_newt_pf', 'zmm_newt_pump', 'zmm_packtype', 'zmm_panel', 'zmm_performance_factor', 'zmm_pumpidentification', 'zmm_psettype', 'zmm_size', 'zmm_eff_ttl', 'zmm_type', 'zmm_usp'];
+ // $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_beenote', 'zmm_beenumber', 'zmm_beestar', 'zmm_codeclass', 'zmm_colour', 'zmm_grade', 'zmm_grwt_pset', 'zmm_grwt_cable', 'zmm_grwt_motor', 'zmm_grwt_pf', 'zmm_grwt_pump', 'zmm_isivalve', 'zmm_isi_wc', 'zmm_labelperiod', 'zmm_length', 'zmm_license_cml_no', 'zmm_mfgmonyr', 'zmm_modelyear', 'zmm_motoridentification', 'zmm_newt_pset', 'zmm_newt_cable', 'zmm_newt_motor', 'zmm_newt_pf', 'zmm_newt_pump', 'zmm_packtype', 'zmm_panel', 'zmm_performance_factor', 'zmm_pumpidentification', 'zmm_psettype', 'zmm_size', 'zmm_eff_ttl', 'zmm_type', 'zmm_usp', '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', 'zqmm_qty'];
- // $characteristicsData = ClassCharacteristic::where('aufnr', $jobNumber)
- // ->where('plant_id', $plantId)
- // ->where('machine_id', $machineId)
- // //->get();
- // ->distinct()
- // ->get($characteristicsColumns);
+ // $characteristicsData = ClassCharacteristic::where('aufnr', $jobNumber)->where('machine_id', $machineId)->where('plant_id', $plantId)->distinct()->get($characteristicsColumns); // ->get();
// if ($characteristicsData->isEmpty()) {
// return response()->json([
// 'status_code' => "ERROR",
- // 'status_description' => 'No characteristics data found for the provided Plant, Work Center, and Job Number!'
+ // 'status_description' => 'No characteristics data found for the provided Plant Code, Work Center, and Job Number!'
// ], 404);
// }
@@ -2880,7 +2969,6 @@ class CharacteristicsController extends Controller
'MOTOR_MACHINE_NAME' => $serialExists->motor_machine_name ?? '',
'PUMP_MACHINE_NAME' => $serialExists->pump_machine_name ?? '',
'NAME_PLATE_MACHINE_NAME' => $serialExists->name_plate_machine_name ?? '',
- 'PUMPSET_MACHINE_NAME' => $serialExists->pumpset_machine_name ?? '',
'PART_VALIDATION_1' => $serialExists->part_validation_1 ?? '',
'PART_VALIDATION_2' => $serialExists->part_validation_2 ?? '',
'PENDING_RELEASED_STATUS' => (string) $serialExists->pending_released_status ?? '0',
@@ -2909,36 +2997,66 @@ class CharacteristicsController extends Controller
$lineName = $request->header('line-name');
$workCenter = $request->header('work-center');
- if ($plantCode == null || $plantCode == '') {
+ if ($plantCode == null || $plantCode == '' || ! $plantCode) {
return response()->json([
'status_code' => 'ERROR',
'status_description' => "Plant code can't be empty!",
- ], 404);
- } elseif (Str::length($plantCode) < 4 || ! is_numeric($plantCode) || ! preg_match('/^[1-9]\d{3,}$/', $plantCode)) {
+ ], 400);
+ } elseif (! is_numeric($plantCode)) {
return response()->json([
'status_code' => 'ERROR',
- 'status_description' => 'Invalid plant code found!',
- ], 404);
- } elseif ($itemCode == null || $itemCode == '') {
+ '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' => "Item Code can't be empty!",
- ], 404);
- } elseif (Str::length($itemCode) < 6 || ! ctype_alnum($itemCode)) {
+ '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 item code found!',
+ 'status_description' => "Invalid plant code '{$plantCode}' found!",
+ ], 400);
+ } elseif ($itemCode == null || $itemCode == '' || ! $itemCode) {
+ return response()->json([
+ 'status_code' => 'ERROR',
+ 'status_description' => "Item code can't be empty!",
], 404);
- } elseif ($lineName == null || $lineName == '') {
+ } 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);
+ } elseif ($lineName == null || $lineName == '' || ! $lineName) {
return response()->json([
'status_code' => 'ERROR',
'status_description' => "Line name can't be empty!",
], 404);
- } elseif ($workCenter == null || $workCenter == '') {
+ } elseif ($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);
}
$plant = Plant::where('code', $plantCode)->first();
@@ -2946,47 +3064,48 @@ class CharacteristicsController extends Controller
if (! $plant) {
return response()->json([
'status_code' => 'ERROR',
- 'status_description' => 'Plant not found!',
+ 'status_description' => "Plant code '{$plantCode}' not found in plants table!",
], 404);
}
$plantId = $plant->id;
+ $plantName = $plant->name;
$item = Item::where('code', $itemCode)->first();
if (! $item) {
return response()->json([
'status_code' => 'ERROR',
- 'status_description' => 'Item Code not found in item table!',
+ 'status_description' => "Item Code '{$itemCode}' not found in items table!",
], 404);
}
- $item = Item::where('plant_id', $plantId)->where('code', $itemCode)->first();
+ $item = Item::where('code', $itemCode)->where('plant_id', $plantId)->first();
if (! $item) {
return response()->json([
'status_code' => 'ERROR',
- 'status_description' => "Item Code not found in item table for the plant : '$plant->name'!",
+ 'status_description' => "Item Code '{$itemCode}' not found for the plant name '{$plantName}' in items table!",
], 404);
}
- $ItemId = $item->id;
+ $itemId = $item->id;
$line = Line::where('name', $lineName)->first();
if (! $line) {
return response()->json([
'status_code' => 'ERROR',
- 'status_description' => 'Line not found in lines table!',
+ 'status_description' => "Line name '{$lineName}' not found in lines table!",
], 404);
}
- $line = Line::where('plant_id', $plantId)->where('name', $lineName)->first();
+ $line = Line::where('name', $lineName)->where('plant_id', $plantId)->first();
if (! $line) {
return response()->json([
'status_code' => 'ERROR',
- 'status_description' => "Line Name not found in lines table for the plant : '$plant->name'!",
+ 'status_description' => "Line name '{$lineName}' not found for the plant name '{$plantName}' in lines table!",
], 404);
}
@@ -2997,25 +3116,25 @@ class CharacteristicsController extends Controller
if (! $machine) {
return response()->json([
'status_code' => 'ERROR',
- 'status_description' => 'Work Center not found in machines table!',
+ 'status_description' => "Work center '{$workCenter}' not found in machines table!",
], 404);
}
- $machine = Machine::where('plant_id', $plantId)->where('work_center', $workCenter)->first();
+ $machine = Machine::where('work_center', $workCenter)->where('plant_id', $plantId)->first();
if (! $machine) {
return response()->json([
'status_code' => 'ERROR',
- 'status_description' => "Work center not found in machines table for the plant : '$plant->name'!",
+ 'status_description' => "Work center '{$workCenter}' not found for the plant name '{$plantName}' in machines table!",
], 404);
}
- $machine = Machine::where('plant_id', $plantId)->where('line_id', $lineId)->where('work_center', $workCenter)->first();
+ $machine = Machine::where('line_id', $lineId)->where('work_center', $workCenter)->where('plant_id', $plantId)->first();
if (! $machine) {
return response()->json([
'status_code' => 'ERROR',
- 'status_description' => 'Work center is not mapped for the given line!',
+ 'status_description' => "Work center '{$workCenter}' is not mapped for the given line name '{$lineName}' in machines table!",
], 404);
}
@@ -3027,16 +3146,16 @@ class CharacteristicsController extends Controller
// $category = $item ? $item->category : '';
- $charMasters = ProductCharacteristicsMaster::with('workGroupMaster')->where('plant_id', $plantId)->where('item_id', $ItemId)->where('line_id', $lineId)->where('machine_id', $machineId)->get(); // ->select(['name', 'characteristics_type', 'inspection_type', 'lower', 'middle', 'upper', 'work_group_master_id'])
+ $charMasters = ProductCharacteristicsMaster::with('workGroupMaster')->where('item_id', $itemId)->where('line_id', $lineId)->where('machine_id', $machineId)->where('plant_id', $plantId)->get(); // ->select(['name', 'characteristics_type', 'inspection_type', 'lower', 'middle', 'upper', 'work_group_master_id'])
if ($charMasters->count() <= 0) {
return response()->json([
'status_code' => 'ERROR',
- 'status_description' => "Characteristics not found in product master table for the plant : '$plant->name'!",
+ 'status_description' => "Characteristics not found for the plant name '{$plantName}' in product master table!",
], 404);
} else {
if ($charMasters->count() == 1) {
- $charMasters = ProductCharacteristicsMaster::with('workGroupMaster')->where('plant_id', $plantId)->where('item_id', $ItemId)->where('line_id', $lineId)->where('machine_id', $machineId)->first();
+ $charMasters = ProductCharacteristicsMaster::with('workGroupMaster')->where('item_id', $itemId)->where('line_id', $lineId)->where('machine_id', $machineId)->where('plant_id', $plantId)->first();
// $workGroup = WorkGroupMaster::find($charMasters->work_group_master_id);
// $workGroupName = $workGroup?->name ?? '';
@@ -3093,25 +3212,36 @@ class CharacteristicsController extends Controller
return response()->json([
'status_code' => 'ERROR',
'status_description' => "Plant code can't be empty!",
- ], 404);
- } elseif (! is_numeric($plantCode) || Str::length($plantCode) < 4 || ! preg_match('/^[1-9]\d{3,}$/', $plantCode)) { // !ctype_digit($data['plant_code'])
+ ], 400);
+ } elseif (! is_numeric($plantCode)) {
return response()->json([
'status_code' => 'ERROR',
- 'status_description' => 'Invalid plant code found!',
- ], 404);
+ '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);
}
$plant = Plant::where('code', $plantCode)->first();
if (! $plant) {
return response()->json([
'status_code' => 'ERROR',
- 'status_description' => "Plant code '{$plantCode}' not found!",
+ 'status_description' => "Plant code '{$plantCode}' not found in plants table!",
], 404);
}
$plantId = $plant->id;
+ $plantName = $plant->name;
- if ($lineName == null || $lineName == '') {
+ if ($lineName == null || $lineName == '' || ! $lineName) {
return response()->json([
'status_code' => 'ERROR',
'status_description' => "Line name can't be empty!",
@@ -3122,21 +3252,21 @@ class CharacteristicsController extends Controller
if (! $line) {
return response()->json([
'status_code' => 'ERROR',
- 'status_description' => "Line '{$lineName}' not found!",
+ 'status_description' => "Line '{$lineName}' not found in lines table!",
], 404);
}
- $line = Line::where('plant_id', $plantId)->where('name', $lineName)->first();
+ $line = Line::where('name', $lineName)->where('plant_id', $plantId)->first();
if (! $line) {
return response()->json([
'status_code' => 'ERROR',
- 'status_description' => "Line '{$lineName}' not found against plant code '$plantCode'!",
+ 'status_description' => "Line '{$lineName}' not found for the plant name '{$plantName}' in lines table!",
], 404);
}
$lineId = $line->id;
- if ($itemCode == null || $itemCode == '') {
+ if ($itemCode == null || $itemCode == '' || ! $itemCode) {
return response()->json([
'status_code' => 'ERROR',
'status_description' => "Item code can't be empty!",
@@ -3147,48 +3277,58 @@ class CharacteristicsController extends Controller
if (! $item) {
return response()->json([
'status_code' => 'ERROR',
- 'status_description' => "Item Code '{$itemCode}' not found!",
+ 'status_description' => "Item Code '{$itemCode}' not found in items table!",
], 404);
}
- $item = Item::where('plant_id', $plantId)->where('code', $itemCode)->first();
+ $item = Item::where('code', $itemCode)->where('plant_id', $plantId)->first();
if (! $item) {
return response()->json([
'status_code' => 'ERROR',
- 'status_description' => "Item code '{$itemCode}' not found against plant code '$plantCode'!",
+ 'status_description' => "Item code '{$itemCode}' not found for the plant name '{$plantName}' in items table!",
], 404);
}
$itemId = $item->id;
- if ($workCenter == null || $workCenter == '') {
+ 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);
}
$machine = Machine::where('work_center', $workCenter)->first();
if (! $machine) {
return response()->json([
'status_code' => 'ERROR',
- 'status_description' => "Work center '{$workCenter}' not found!",
+ 'status_description' => "Work center '{$workCenter}' not found in machines table!",
], 404);
}
- $machine = Machine::where('plant_id', $plantId)->where('work_center', $workCenter)->first();
+ $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 against plant code '$plantCode'!",
+ 'status_description' => "Work center '{$workCenter}' not found for the plant name '{$plantName}' in machines table!",
], 404);
}
- $machine = Machine::where('plant_id', $plantId)->where('line_id', $lineId)->where('work_center', $workCenter)->first();
+ $machine = Machine::where('line_id', $lineId)->where('work_center', $workCenter)->where('plant_id', $plantId)->first();
if (! $machine) {
return response()->json([
'status_code' => 'ERROR',
- 'status_description' => "Work center '{$workCenter}' not found against plant code '$plantCode' and line name '$lineName'!",
+ 'status_description' => "Work center '{$workCenter}' is not mapped for the given line name '{$lineName}' in machines table!",
], 404);
}
@@ -3210,7 +3350,7 @@ class CharacteristicsController extends Controller
} elseif (Str::length($processOrder) < 9) {
return response()->json([
'status_code' => 'ERROR',
- 'status_description' => 'Process order should contain minimum 9 digits!',
+ 'status_description' => "Process order '{$processOrder}' should contain minimum 9 digits!",
], 404);
}
@@ -3222,7 +3362,7 @@ class CharacteristicsController extends Controller
} elseif (! is_numeric($coilNo)) {
return response()->json([
'status_code' => 'ERROR',
- 'status_description' => 'Coil number should contain only numeric values!',
+ 'status_description' => "Coil number '{$coilNo}' should contain only numeric values!",
], 404);
} elseif (Str::length($coilNo) > 1 && ! Str::contains($coilNo, '.') && ! preg_match('/^[1-9][0-9]*$/', $coilNo)) {
return response()->json([
@@ -3257,27 +3397,21 @@ class CharacteristicsController extends Controller
], 404);
}
- $existing = CharacteristicValue::where('plant_id', $plantId)
- ->where('process_order', $processOrder)
- ->where('item_id', '!=', $itemId)
- ->first();
+ $existing = CharacteristicValue::where('process_order', $processOrder)->where('item_id', '!=', $itemId)->where('plant_id', $plantId)->first();
if ($existing) {
return response()->json([
'status_code' => 'ERROR',
- 'status_description' => "Process order '{$processOrder}' already has item_code '{$existing->item->code}' for the plant code '{$plantCode}'!",
+ 'status_description' => "Process order '{$processOrder}' already has item_code '{$existing->item->code}' for the plant name '{$plantName}'!",
], 404);
}
- $existing = CharacteristicValue::where('plant_id', $plantId)
- ->where('process_order', $processOrder)
- ->where('coil_number', $coilNo)
- ->first();
+ $existing = CharacteristicValue::where('process_order', $processOrder)->where('coil_number', $coilNo)->where('plant_id', $plantId)->first();
if ($existing) {
return response()->json([
'status_code' => 'ERROR',
- 'status_description' => "Process order '{$processOrder}' with coil number '{$coilNo}' already exist for the plant code '{$plantCode}'!",
+ 'status_description' => "Process order '{$processOrder}' with coil number '{$coilNo}' already exist for the plant name '{$plantName}'!",
], 404);
}
@@ -3327,6 +3461,7 @@ class CharacteristicsController extends Controller
$charField = $request->header('characteristic-field');
+ $file = $request->file('file');
$json = $request->input('data');
$data = json_decode($json, true);
@@ -3336,12 +3471,15 @@ class CharacteristicsController extends Controller
$jobNo = $data['aufnr'] ?? '';
$itemCode = $data['item_code'] ?? '';
$characteristics = $data['requested_characteristics'] ?? [];
+ $templateCharacteristics = $data['template_characteristics'] ?? [];
// $requested = $data['requested_characteristics'][0] ?? [];
+ $modelType = strtoupper($request->header('model-type'));
+ $modelHeading = $request->header('model-heading');
$requestType = $request->header('request-type');
Log::info("Request {$requestType} POST API >>", ['user-name' => $userName, 'characteristic-field' => $charField, 'post-data' => $data]);
- if (! $userName) {
+ if (! $userName || $userName == null || $userName == '') {
return response()->json([
'status_code' => 'ERROR',
'status_description' => "User name can't be empty!",
@@ -3375,6 +3513,16 @@ class CharacteristicsController extends Controller
'status_code' => 'ERROR',
'status_description' => "Machine name can't be empty!",
], 404);
+ } elseif (! $modelType || $modelType == null || $modelType == '') {
+ return response()->json([
+ 'status_code' => 'ERROR',
+ 'status_description' => "Model type can't be empty!",
+ ], 404);
+ } elseif (! $modelHeading || $modelHeading == null || $modelHeading == '') {
+ return response()->json([
+ 'status_code' => 'ERROR',
+ 'status_description' => "Model heading can't be empty!",
+ ], 404);
} elseif (! $requestType || $requestType == null || $requestType == '') {
return response()->json([
'status_code' => 'ERROR',
@@ -3386,17 +3534,49 @@ class CharacteristicsController extends Controller
$charField = 'NIL';
}
- if (! is_numeric($plantCode) || Str::length($plantCode) < 4 || ! preg_match('/^[1-9]\d{3,}$/', $plantCode)) { // !ctype_digit($data['plant_code'])
+ if (! is_numeric($plantCode)) {
return response()->json([
'status_code' => 'ERROR',
- 'status_description' => 'Invalid plant code found!',
+ '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 (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);
}
- if (Str::length($itemCode) < 6 || ! ctype_alnum($itemCode)) {
+ if (Str::length($workCenter) < 6) {
return response()->json([
'status_code' => 'ERROR',
- 'status_description' => 'Invalid item code found!',
+ '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);
}
@@ -3415,7 +3595,75 @@ class CharacteristicsController extends Controller
if ($requestType != 'Characteristic' && $requestType != 'Quality') {
return response()->json([
'status_code' => 'ERROR',
- 'status_description' => 'Unknown request type found!',
+ 'status_description' => "Unknown request type '{$requestType}' found!",
+ ], 404);
+ } elseif ($requestType == 'Characteristic') {
+ if ($request->hasFile('file')) {
+ $extension = strtolower($file->getClientOriginalExtension());
+
+ if ($extension != 'pdf' && $extension != 'PDF') {
+ return response()->json([
+ 'status' => 'ERROR',
+ 'status_description' => "Only .PDF files are allowed for request type '{$requestType}'!",
+ ], 404);
+ } elseif ($file && $file->getSize() > 1024 * 1024) { // 1 MB in bytes
+ return response()->json([
+ 'status' => 'ERROR',
+ 'status_description' => 'File size must not exceed 1 MB (Megabyte).',
+ ], 404);
+ }
+ }
+ } elseif ($requestType == 'Quality') {
+ if ($request->hasFile('file')) {
+ $extension = strtolower($file->getClientOriginalExtension());
+
+ if ($extension != 'png' && $extension != 'PNG') {
+ return response()->json([
+ 'status' => 'ERROR',
+ 'status_description' => "Only .PNG files are allowed for request type '{$requestType}'!",
+ ], 404);
+ } elseif ($file && $file->getSize() > 50 * 1024) {
+ return response()->json([
+ 'status' => 'ERROR',
+ 'status_description' => 'File size must not exceed 50 KB (Kilobyte).',
+ ], 404);
+ }
+ } else {
+ return response()->json([
+ 'status' => 'ERROR',
+ 'status_description' => 'Quality approval image (.png) not found!',
+ ], 404);
+ }
+ }
+
+ if ($modelType != 'MOTOR' && $modelType != 'PUMP' && $modelType != 'NAME_PLATE') {
+ return response()->json([
+ 'status_code' => 'ERROR',
+ 'status_description' => "Unknown model type '{$modelType}' found!",
+ ], 404);
+ }
+
+ $typesToCreate = [];
+
+ if (Str::contains($modelHeading, 'PRESSURE BOOSTER SYSTEM', ignoreCase: true)) {
+ $typesToCreate = ['MOTOR', 'PUMP', 'NAME_PLATE'];
+ } elseif (Str::contains($modelHeading, 'PUMPSET', 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)) {
+ $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);
}
@@ -3423,7 +3671,7 @@ class CharacteristicsController extends Controller
if (! $plant) {
return response()->json([
'status_code' => 'ERROR',
- 'status_description' => "Plant code '{$plantCode}' not found!",
+ 'status_description' => "Plant code '{$plantCode}' not found in plants table!",
], 404);
}
@@ -3434,7 +3682,7 @@ class CharacteristicsController extends Controller
if (! $user) {
return response()->json([
'status_code' => 'ERROR',
- 'status_description' => "User name '{$userName}' not found!",
+ 'status_description' => "User name '{$userName}' not found in users table!",
], 403);
}
@@ -3443,12 +3691,12 @@ class CharacteristicsController extends Controller
if (! $userPlant && ! $user->hasRole('Super Admin')) {
return response()->json([
'status_code' => 'ERROR',
- 'status_description' => "User name '{$userName}' not found for the plant code '{$plantCode}'!",
+ '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 does not have rights!',
+ 'status_description' => "User name '{$userName}' does not have rights!",
], 403);
}
@@ -3456,7 +3704,7 @@ class CharacteristicsController extends Controller
if (! $machine) {
return response()->json([
'status_code' => 'ERROR',
- 'status_description' => "Work center '{$workCenter}' not found in master!",
+ 'status_description' => "Work center '{$workCenter}' not found in machines table!",
], 404);
}
@@ -3464,17 +3712,17 @@ class CharacteristicsController extends Controller
if (! $machine) {
return response()->json([
'status_code' => 'ERROR',
- 'status_description' => "Work center '{$workCenter}' not found for the plant code '{$plantCode}' in master!",
+ 'status_description' => "Work center '{$workCenter}' not found for the plant code '{$plantCode}' in machines table!",
], 404);
}
- $MachineId = $machine->id;
+ $machineId = $machine->id;
$iCode = Item::where('code', $itemCode)->first();
if (! $iCode) {
return response()->json([
'status_code' => 'ERROR',
- 'status_description' => "Item code '{$itemCode}' not found!",
+ 'status_description' => "Item code '{$itemCode}' not found in items table!",
], 404);
}
@@ -3482,11 +3730,11 @@ class CharacteristicsController extends Controller
if (! $item) {
return response()->json([
'status_code' => 'ERROR',
- 'status_description' => "Item code '{$itemCode}' not found for the plant code '{$plantCode}'!",
+ 'status_description' => "Item code '{$itemCode}' not found for the plant code '{$plantCode}' in items table!",
], 404);
}
- $ItemId = $item->id;
+ $itemId = $item->id;
$pCode = CharacteristicApproverMaster::where('plant_id', $plantId)->first();
if (! $pCode) {
@@ -3496,7 +3744,7 @@ class CharacteristicsController extends Controller
], 404);
}
- $wCenter = CharacteristicApproverMaster::where('machine_id', $MachineId)->first();
+ $wCenter = CharacteristicApproverMaster::where('machine_id', $machineId)->first();
if (! $wCenter) {
return response()->json([
'status_code' => 'ERROR',
@@ -3504,7 +3752,7 @@ class CharacteristicsController extends Controller
], 404);
}
- $wCenterAgaPlant = CharacteristicApproverMaster::where('machine_id', $MachineId)->where('plant_id', $plantId)->first();
+ $wCenterAgaPlant = CharacteristicApproverMaster::where('machine_id', $machineId)->where('plant_id', $plantId)->first();
if (! $wCenterAgaPlant) {
return response()->json([
'status_code' => 'ERROR',
@@ -3544,7 +3792,7 @@ class CharacteristicsController extends Controller
], 404);
}
- $mNameAndWorkCenter = CharacteristicApproverMaster::where('machine_name', $machineName)->where('machine_id', $MachineId)->first();
+ $mNameAndWorkCenter = CharacteristicApproverMaster::where('machine_name', $machineName)->where('machine_id', $machineId)->first();
if (! $mNameAndWorkCenter) {
return response()->json([
'status_code' => 'ERROR',
@@ -3552,7 +3800,7 @@ class CharacteristicsController extends Controller
], 404);
}
- $mNameAndWorkCenterAgaPlant = CharacteristicApproverMaster::where('machine_name', $machineName)->where('machine_id', $MachineId)->where('plant_id', $plantId)->first();
+ $mNameAndWorkCenterAgaPlant = CharacteristicApproverMaster::where('machine_name', $machineName)->where('machine_id', $machineId)->where('plant_id', $plantId)->first();
if (! $mNameAndWorkCenterAgaPlant) {
return response()->json([
'status_code' => 'ERROR',
@@ -3560,7 +3808,7 @@ class CharacteristicsController extends Controller
], 404);
}
- $cFieldAndWorkCent = CharacteristicApproverMaster::where('characteristic_field', $charField)->where('machine_id', $MachineId)->first();
+ $cFieldAndWorkCent = CharacteristicApproverMaster::where('characteristic_field', $charField)->where('machine_id', $machineId)->first();
if (! $cFieldAndWorkCent) {
return response()->json([
'status_code' => 'ERROR',
@@ -3568,7 +3816,7 @@ class CharacteristicsController extends Controller
], 404);
}
- $cFieldAndWorkCentAgaPlant = CharacteristicApproverMaster::where('characteristic_field', $charField)->where('machine_id', $MachineId)->where('plant_id', $plantId)->first();
+ $cFieldAndWorkCentAgaPlant = CharacteristicApproverMaster::where('characteristic_field', $charField)->where('machine_id', $machineId)->where('plant_id', $plantId)->first();
if (! $cFieldAndWorkCentAgaPlant) {
return response()->json([
'status_code' => 'ERROR',
@@ -3584,7 +3832,15 @@ class CharacteristicsController extends Controller
], 404);
}
- $cFieldAndWorkCentAndMachAgaPlant = CharacteristicApproverMaster::where('characteristic_field', $charField)->where('machine_id', $MachineId)->where('machine_name', $machineName)->where('plant_id', $plantId)->first();
+ $cFieldAndMachAgaPlant = CharacteristicApproverMaster::where('characteristic_field', $charField)->where('machine_name', $machineName)->where('plant_id', $plantId)->first();
+ if (! $cFieldAndMachAgaPlant) {
+ return response()->json([
+ 'status_code' => 'ERROR',
+ 'status_description' => "Master characteristic field value '{$charField}' and machine name '{$machineName}' not found for the plant code '{$plantCode}' in approver master!",
+ ], 404);
+ }
+
+ $cFieldAndWorkCentAndMachAgaPlant = CharacteristicApproverMaster::where('characteristic_field', $charField)->where('machine_name', $machineName)->where('machine_id', $machineId)->where('plant_id', $plantId)->first();
if (! $cFieldAndWorkCentAndMachAgaPlant) {
return response()->json([
'status_code' => 'ERROR',
@@ -3592,156 +3848,158 @@ class CharacteristicsController extends Controller
], 404);
}
- // ..completed Logic and pending logic for characteristics and quality
-
- $classRow = ClassCharacteristic::where('plant_id', $plantId)
- ->where('machine_id', $MachineId)
- ->where('aufnr', $jobNo)
- ->first();
+ $classRow = ClassCharacteristic::where('aufnr', $jobNo)->where('machine_id', $machineId)->where('plant_id', $plantId)->latest()->first();
if ($classRow) {
- if (! empty($characteristics)) {
- $requestChars = RequestCharacteristic::where('plant_id', $plantId)
- ->where('machine_id', $MachineId)
- ->where('aufnr', $jobNo)
- ->get();
+ $requestChars = RequestCharacteristic::where('aufnr', $jobNo)
+ ->whereHas('approver', function ($query) {
+ $query->where('approver_type', 'Characteristic');
+ })->where('machine_id', $machineId)->where('plant_id', $plantId)->get();
- if (! $requestChars->isEmpty()) {
- $hasPending = false;
- $allApproved = true;
+ $tempClassChars = TempClassCharacteristic::where('aufnr', $jobNo)->where('machine_id', $machineId)->where('plant_id', $plantId)->get();
- foreach ($requestChars as $row) {
+ if (! $requestChars->isEmpty()) {
+ $hasCharPending = false;
+ $hasQualPending = false;
+ $allCharApproved = true;
+ $allQualApproved = true;
- $isApproved = (
- $row->approver_status1 == 'Approved' || $row->approver_status1 == 'Rejected' ||
- $row->approver_status2 == 'Approved' || $row->approver_status2 == 'Rejected' ||
- $row->approver_status3 == 'Approved' || $row->approver_status2 == 'Rejected'
- );
+ foreach ($requestChars as $row) {
+ $isApproved = ($row->approver_status1 == 'Approved' || $row->approver_status1 == 'Rejected' || $row->approver_status2 == 'Approved' || $row->approver_status2 == 'Rejected' || $row->approver_status3 == 'Approved' || $row->approver_status3 == 'Rejected');
- if (! $isApproved) {
- $isPending = ! empty($row->mail_status) &&
- (
- empty($row->approver_status1) || $row->approver_status1 == 'Hold' ||
- empty($row->approver_status2) || $row->approver_status2 == 'Hold' ||
- empty($row->approver_status3) || $row->approver_status3 == 'Hold'
- );
- if ($isPending) {
- $hasPending = true;
- $allApproved = false;
- break;
- }
-
- $allApproved = false;
- }
+ if (! $isApproved) {
+ $allCharApproved = false;
+ $hasCharPending = true;
+ break;
}
+ }
- $current = $classRow->has_work_flow_id ?? '0';
-
- if ($hasPending) {
- if ($current == '0') {
- $newValue = '1';
- } elseif ($current == '1') {
- $newValue = '1';
- } elseif ($current == '2') {
- $newValue = '3';
- } elseif ($current == '3') {
- $newValue = '3';
- }
- } elseif ($allApproved) {
- if ($current == '0') {
- $newValue = '0';
- } elseif ($current == '1') {
- $newValue = '0';
- } elseif ($current == '2') {
- $newValue = '2';
- } elseif ($current == '3') {
- $newValue = '2';
- }
- }
-
- ClassCharacteristic::where('plant_id', $plantId)
- ->where('machine_id', $MachineId)
- ->where('aufnr', $jobNo)
- ->update([
- 'has_work_flow_id' => $newValue,
- 'updated_at' => now(),
+ if ($hasCharPending) {
+ $newValue = '3';
+ TempClassCharacteristic::where('aufnr', $jobNo)->where('machine_id', $machineId)->where('plant_id', $plantId)->forceDelete();
+ foreach ($typesToCreate as $type) {
+ TempClassCharacteristic::create([
+ 'plant_id' => $plantId,
+ 'machine_id' => $machineId,
+ 'item_id' => $itemId,
+ 'aufnr' => $jobNo,
+ 'model_type' => $type,
+ 'has_work_flow_id' => '2',
+ 'created_by' => $userName,
'updated_by' => $userName,
]);
- }
- } elseif (empty($characteristics)) {
-
- $requestChar = RequestCharacteristic::where('plant_id', $plantId)
- ->where('machine_id', $MachineId)
- ->where('aufnr', $jobNo)
- ->latest()
- ->first();
-
- if ($requestChar) {
-
- $current = $requestChar->has_work_flow_id ?? '0';
-
- $isApproved =
- $requestChar->approver_status1 == 'Approved' ||
- $requestChar->approver_status2 == 'Approved' ||
- $requestChar->approver_status3 == 'Approved';
-
- if ($isApproved) {
- if ($current == '0') {
- $newValue = '0';
- } elseif ($current == '1') {
- $newValue = '1';
- } elseif ($current == '2') {
- $newValue = '0';
- } elseif ($current == '3') {
- $newValue = '1';
+ }
+ } elseif (! $tempClassChars->isEmpty()) {
+ foreach ($tempClassChars as $temp) {
+ if ($temp->has_work_flow_id == '1' || $temp->has_work_flow_id == '2') {
+ $hasQualPending = true;
+ $allQualApproved = false;
+ break;
}
- } elseif (
- $requestChar->approver_status1 == 'Hold' || $requestChar->approver_status1 == 'Rejected' || $requestChar->approver_status1 == null || $requestChar->approver_status1 == '' ||
- $requestChar->approver_status2 == 'Hold' || $requestChar->approver_status2 == 'Rejected' || $requestChar->approver_status2 == null || $requestChar->approver_status2 == '' ||
- $requestChar->approver_status3 == 'Hold' || $requestChar->approver_status3 == 'Rejected' || $requestChar->approver_status3 == null || $requestChar->approver_status3 == ''
- ) {
- if ($current == '0') {
- $newValue = '2';
- } elseif ($current == '1') {
- $newValue = '3';
- } elseif ($current == '2') {
- $newValue = '2';
- } elseif ($current == '3') {
- $newValue = '3';
+
+ if ($temp->has_work_flow_id == '0') {
+ $allQualApproved = true;
}
}
+
+ if ($hasQualPending) {
+ $newValue = '2';
+ } elseif ($allQualApproved) {
+ $newValue = '0';
+ }
+ } elseif ($allCharApproved) {
+ $newValue = '0';
}
- ClassCharacteristic::where('plant_id', $plantId)
- ->where('machine_id', $MachineId)
- ->where('aufnr', $jobNo)
+ ClassCharacteristic::where('aufnr', $jobNo)->where('machine_id', $machineId)->where('plant_id', $plantId)
->update([
'has_work_flow_id' => $newValue,
'updated_at' => now(),
'updated_by' => $userName,
]);
+
+ if ($requestType == 'Quality' && $hasCharPending) {
+ return response()->json([
+ 'status_code' => 'ERROR',
+ 'status_description' => "Characteristic approval is already pending for the job number '{$jobNo}'!",
+ ], 404);
+ }
+ } elseif (! $tempClassChars->isEmpty()) {
+ $hasQualPending = false;
+ $allQualApproved = true;
+
+ foreach ($tempClassChars as $temp) {
+ if ($temp->has_work_flow_id == '1' || $temp->has_work_flow_id == '2') {
+ $hasQualPending = true;
+ $allQualApproved = false;
+ break;
+ }
+
+ if ($temp->has_work_flow_id == '0') {
+ $allQualApproved = true;
+ }
+ }
+
+ if ($hasQualPending) {
+ $newValue = '2';
+ } elseif ($allQualApproved) {
+ $newValue = '0';
+ }
+
+ ClassCharacteristic::where('aufnr', $jobNo)->where('machine_id', $machineId)->where('plant_id', $plantId)
+ ->update([
+ 'has_work_flow_id' => $newValue,
+ 'updated_at' => now(),
+ 'updated_by' => $userName,
+ ]);
+ } else {
+ ClassCharacteristic::where('aufnr', $jobNo)->where('machine_id', $machineId)->where('plant_id', $plantId)
+ ->update([
+ 'has_work_flow_id' => '0',
+ 'updated_at' => now(),
+ 'updated_by' => $userName,
+ ]);
}
- }
+ } else {
+ $requestChars = RequestCharacteristic::where('aufnr', $jobNo)
+ ->whereHas('approver', function ($query) {
+ $query->where('approver_type', 'Characteristic');
+ })->where('machine_id', $machineId)->where('plant_id', $plantId)->get();
- foreach ($characteristics as $char) {
- $charNameUpp = strtoupper($char['characteristic_name']) ?? null;
- $charNameLow = strtolower($char['characteristic_name']) ?? null;
- $pendingExists = RequestCharacteristic::where('plant_id', $plantId)->where('aufnr', $jobNo)->where('characteristic_name', $charNameUpp)->latest()->first();
+ if (! $requestChars->isEmpty()) {
+ $hasCharPending = false;
- $columns = Schema::getColumnListing('class_characteristics');
+ foreach ($requestChars as $row) {
+ $isApproved = ($row->approver_status1 == 'Approved' || $row->approver_status1 == 'Rejected' || $row->approver_status2 == 'Approved' || $row->approver_status2 == 'Rejected' || $row->approver_status3 == 'Approved' || $row->approver_status3 == 'Rejected');
- if (! in_array($charNameLow, $columns, true)) {
- $unknownCharacteristics[] = strtoupper($charNameUpp);
- }
+ if (! $isApproved) {
+ $hasCharPending = true;
+ break;
+ }
+ }
- if ($pendingExists) {
+ if ($hasCharPending) {
+ TempClassCharacteristic::where('aufnr', $jobNo)->where('machine_id', $machineId)->where('plant_id', $plantId)->forceDelete();
- $app1 = $pendingExists->approver_status1 ?? null;
- $app2 = $pendingExists->approver_status2 ?? null;
- $app3 = $pendingExists->approver_status3 ?? null;
+ foreach ($typesToCreate as $type) {
+ TempClassCharacteristic::create([
+ 'plant_id' => $plantId,
+ 'machine_id' => $machineId,
+ 'item_id' => $itemId,
+ 'aufnr' => $jobNo,
+ 'model_type' => $type,
+ 'has_work_flow_id' => '2',
+ 'created_by' => $userName,
+ 'updated_by' => $userName,
+ ]);
+ }
- if ($app1 != 'Approved' && $app2 != 'Approved' && $app3 != 'Approved' && $app1 != 'Rejected' && $app2 != 'Rejected' && $app3 != 'Rejected') {
- $pendingCharacteristics[] = strtoupper($charNameUpp);
+ if ($requestType == 'Quality') {
+ return response()->json([
+ 'status_code' => 'ERROR',
+ 'status_description' => "Characteristic approval is already pending for the job number '{$jobNo}'!",
+ ], 404);
+ }
}
}
}
@@ -3751,7 +4009,8 @@ class CharacteristicsController extends Controller
$appTypExist = null;
if (! empty($characteristics)) {
- $appTypExist = CharacteristicApproverMaster::where('characteristic_field', $charField)->where('machine_id', $MachineId)->where('machine_name', $machineName)->where('plant_id', $plantId)->where('approver_type', 'Characteristic')->first();
+ $appTypExist = CharacteristicApproverMaster::where('characteristic_field', $charField)->where('approver_type', $requestType)->where('machine_name', $machineName)->where('machine_id', $machineId)->where('plant_id', $plantId)->latest()->first();
+
if (! $appTypExist) {
return response()->json([
'status_code' => 'ERROR',
@@ -3760,16 +4019,18 @@ class CharacteristicsController extends Controller
}
$charId = $appTypExist->id;
+ $columns = Schema::getColumnListing('class_characteristics');
foreach ($characteristics as $char) {
$charNameUpp = strtoupper($char['characteristic_name']) ?? null;
$charNameLow = strtolower($char['characteristic_name']) ?? null;
- $pendingExists = RequestCharacteristic::where('plant_id', $plantId)->where('aufnr', $jobNo)->where('characteristic_name', $charNameUpp)->latest()->first();
-
- $columns = Schema::getColumnListing('class_characteristics');
+ $pendingExists = RequestCharacteristic::where('aufnr', $jobNo)->where('characteristic_name', $charNameUpp)
+ ->whereHas('approver', function ($query) use ($requestType) {
+ $query->where('approver_type', $requestType);
+ })->where('machine_id', $machineId)->where('plant_id', $plantId)->latest()->first();
if (! in_array($charNameLow, $columns, true)) {
- $unknownCharacteristics[] = strtoupper($charNameUpp);
+ $unknownCharacteristics[] = $charNameUpp;
}
if ($pendingExists) {
@@ -3779,7 +4040,7 @@ class CharacteristicsController extends Controller
$app3 = $pendingExists->approver_status3 ?? null;
if ($app1 != 'Approved' && $app2 != 'Approved' && $app3 != 'Approved' && $app1 != 'Rejected' && $app2 != 'Rejected' && $app3 != 'Rejected') {
- $pendingCharacteristics[] = strtoupper($charNameUpp);
+ $pendingCharacteristics[] = $charNameUpp;
}
}
}
@@ -3789,7 +4050,7 @@ class CharacteristicsController extends Controller
if (! empty($uniquePendChars)) {
return response()->json([
'status_code' => 'ERROR',
- 'status_description' => 'Characteristic approval is already pending for the following request characteristics : '.implode(', ', $uniquePendChars),
+ 'status_description' => 'Characteristic approval is already pending for the following request characteristics : '.implode(', ', $uniquePendChars).'.', // skip
], 404);
}
@@ -3798,12 +4059,11 @@ class CharacteristicsController extends Controller
if (! empty($uniqueUnkChars)) {
return response()->json([
'status_code' => 'ERROR',
- 'status_description' => 'Unknown characteristic fields found : '.implode(', ', $uniqueUnkChars),
+ 'status_description' => 'Unknown characteristic fields found : '.implode(', ', $uniqueUnkChars).'.',
], 404);
}
try {
-
$workFlowIds = [];
$year = now()->format('y');
@@ -3811,21 +4071,7 @@ class CharacteristicsController extends Controller
$date = now()->format('d');
$prefix = "WF-{$year}{$month}{$date}-";
- // $existingWorkflowId = RequestCharacteristic::where('plant_id', $plantId)
- // ->where('machine_id', $MachineId)
- // ->where('aufnr', $jobNo)
- // ->value('work_flow_id');
-
- // if ($existingWorkflowId) {
- // $workflowId = $existingWorkflowId;
-
- // }
-
- $lastWorkflow = RequestCharacteristic::where('work_flow_id', 'like', "{$prefix}%")
- // ->where('plant_id', $plantId)
- // ->where('machine_id', $MachineId)
- ->orderByDesc('work_flow_id')
- ->first();
+ $lastWorkflow = RequestCharacteristic::where('work_flow_id', 'like', "{$prefix}%")->orderByDesc('work_flow_id')->first(); // ->where('machine_id', $machineId)->where('plant_id', $plantId)
if ($lastWorkflow) {
$lastSerial = substr($lastWorkflow->work_flow_id, strlen($prefix));
@@ -3841,50 +4087,66 @@ class CharacteristicsController extends Controller
$workflowId = "{$prefix}{$nextSerial}";
- $file = $request->file('file');
-
- // if (! $request->hasFile('file')) {
- // return response()->json([
- // 'status_code' => 'ERROR',
- // 'status_description' => 'No PDF file provided!',
- // ], 404);
- // }
-
foreach ($characteristics as $char) {
-
- $record = RequestCharacteristic::create([
+ $charNameUpp = strtoupper($char['characteristic_name']) ?? null;
+ RequestCharacteristic::create([
'plant_id' => $plantId,
- 'machine_id' => $MachineId,
- 'item_id' => $ItemId,
+ 'machine_id' => $machineId,
+ 'item_id' => $itemId,
+ 'model_type' => $modelType,
'characteristic_approver_master_id' => $charId,
'aufnr' => $jobNo,
- 'characteristic_name' => strtoupper($char['characteristic_name']), // strtolower
+ 'characteristic_name' => $charNameUpp, // strtolower
'current_value' => $char['current_value'],
'update_value' => $char['update_value'],
'created_by' => $userName,
'work_flow_id' => $workflowId,
]);
- $workFlowIds[strtoupper($char['characteristic_name'])] = (string) $record->work_flow_id;
+ $workFlowIds[$charNameUpp] = (string) $workflowId; // $record->work_flow_id;
+ }
+
+ TempClassCharacteristic::where('aufnr', $jobNo)->where('machine_id', $machineId)->where('plant_id', $plantId)->forceDelete();
+
+ foreach ($typesToCreate as $type) {
+ TempClassCharacteristic::create([
+ 'plant_id' => $plantId,
+ 'machine_id' => $machineId,
+ 'item_id' => $itemId,
+ 'aufnr' => $jobNo,
+ 'model_type' => $type,
+ 'has_work_flow_id' => '2',
+ 'created_by' => $userName,
+ 'updated_by' => $userName,
+ ]);
+ }
+
+ $classChar = ClassCharacteristic::where('aufnr', $jobNo)->where('machine_id', $machineId)->where('plant_id', $plantId)->latest()->first();
+
+ if ($classChar) {
+ ClassCharacteristic::where('aufnr', $jobNo)->where('machine_id', $machineId)->where('plant_id', $plantId)
+ ->update([
+ 'has_work_flow_id' => '3',
+ 'updated_at' => now(),
+ 'updated_by' => $userName,
+ ]);
}
if ($request->hasFile('file')) {
$extension = strtolower($file->getClientOriginalExtension());
$filename = $workflowId.'.'.$extension;
- if ($extension != 'pdf' && $extension != 'PDF') {
- return response()->json([
- 'status' => 'ERROR',
- 'status_description' => 'Only .PDF files are allowed.',
- ], 404);
- }
-
- if ($file && $file->getSize() > 1024 * 1024) { // 1 MB in bytes
- return response()->json([
- 'status' => 'ERROR',
- 'status_description' => 'File size must not exceed 1 MB',
- ], 404);
- }
+ // if ($extension != 'pdf' && $extension != 'PDF') {
+ // return response()->json([
+ // 'status' => 'ERROR',
+ // 'status_description' => 'Only .PDF files are allowed.',
+ // ], 404);
+ // } elseif ($file && $file->getSize() > 1024 * 1024) { // 1 MB in bytes
+ // return response()->json([
+ // 'status' => 'ERROR',
+ // 'status_description' => 'File size must not exceed 1 MB',
+ // ], 404);
+ // }
$filePath = $file->storeAs(
'uploads/LaserDocs',
@@ -3904,40 +4166,6 @@ class CharacteristicsController extends Controller
}
}
- // ..
-
- $classChar = ClassCharacteristic::where('plant_id', $plantId)->where('machine_id', $MachineId)->where('aufnr', $jobNo)->first();
-
- $hasWorkFlowId = $classChar?->has_work_flow_id;
-
- $updatedWorkId = null;
-
- if ($classChar) {
-
- if ($hasWorkFlowId == '' || $hasWorkFlowId == null) {
- $hasWorkFlowId = '0';
- }
-
- if ($hasWorkFlowId == '0') {
- $updatedWorkId = '1';
- } elseif ($hasWorkFlowId == '1') {
- $updatedWorkId = '1';
- } elseif ($hasWorkFlowId == '2') {
- $updatedWorkId = '3';
- } elseif ($hasWorkFlowId == '3') {
- $updatedWorkId = '3';
- }
-
- ClassCharacteristic::where('plant_id', $plantId)
- ->where('machine_id', $MachineId)
- ->where('aufnr', $jobNo)
- ->update([
- 'has_work_flow_id' => $updatedWorkId,
- 'updated_at' => now(),
- 'updated_by' => $userName,
- ]);
- }
-
return response()->json([
'work_flow_ids' => [$workFlowIds],
], 200);
@@ -3949,7 +4177,8 @@ class CharacteristicsController extends Controller
], 500);
}
} else {
- $appTypExist = CharacteristicApproverMaster::where('characteristic_field', $charField)->where('machine_id', $MachineId)->where('machine_name', $machineName)->where('plant_id', $plantId)->where('approver_type', 'Quality')->first();
+ $appTypExist = CharacteristicApproverMaster::where('characteristic_field', $charField)->where('approver_type', $requestType)->where('machine_name', $machineName)->where('machine_id', $machineId)->where('plant_id', $plantId)->latest()->first();
+
if (! $appTypExist) {
return response()->json([
'status_code' => 'ERROR',
@@ -3959,12 +4188,15 @@ class CharacteristicsController extends Controller
$charId = $appTypExist->id;
- $pendingExists = RequestCharacteristic::where('plant_id', $plantId)->where('aufnr', $jobNo)->where(function ($query) {
- $query->whereNull('characteristic_name')->orWhere('characteristic_name', '');
- })->latest()->first();
+ $pendingExists = RequestCharacteristic::where('aufnr', $jobNo)->where('model_type', $modelType)
+ ->whereHas('approver', function ($query) use ($requestType) {
+ $query->where('approver_type', $requestType);
+ })->where('machine_id', $machineId)->where('plant_id', $plantId)->latest()->first();
+ // ->where(function ($query) {
+ // $query->whereNull('characteristic_name')->orWhere('characteristic_name', '');
+ // })
if ($pendingExists) {
-
$app1 = $pendingExists->approver_status1 ?? null;
$app2 = $pendingExists->approver_status2 ?? null;
$app3 = $pendingExists->approver_status3 ?? null;
@@ -3972,13 +4204,124 @@ class CharacteristicsController extends Controller
if ($app1 != 'Approved' && $app2 != 'Approved' && $app3 != 'Approved' && $app1 != 'Rejected' && $app2 != 'Rejected' && $app3 != 'Rejected') {
return response()->json([
'status_code' => 'ERROR',
- 'status_description' => "Quality Approval is already pending for the Job Number : '{$jobNo}'",
+ 'status_description' => "Quality Approval is already pending for the job number : '{$jobNo}' and Model Type : '{$modelType}'", // skip
// 'status_error' => $pendingExists,
], 404);
}
}
+ if (empty($templateCharacteristics)) {
+ return response()->json([
+ 'status_code' => 'ERROR',
+ 'status_description' => "Template characteristics can't be empty!",
+ ], 404);
+ }
+
+ $tempCharacteristics = TempClassCharacteristic::where('aufnr', $jobNo)->where('model_type', $modelType)->where('machine_id', $machineId)->where('plant_id', $plantId)->latest()->first();
+
+ $columns = Schema::getColumnListing('temp_class_characteristics');
+
+ if (! $tempCharacteristics) {
+ $templateData = [];
+ $unknownCharacteristics = [];
+
+ TempClassCharacteristic::where('aufnr', $jobNo)->where('machine_id', $machineId)->where('plant_id', $plantId)->forceDelete();
+
+ foreach ($templateCharacteristics as $item) {
+ foreach ($item as $key => $value) {
+ $key = strtolower($key) ?? null;
+ // if (Schema::hasColumn('temp_class_characteristics', $key)) {
+ // $templateData[$key] = $value;
+ // }
+ if (in_array($key, $columns, true)) {
+ $templateData[$key] = $value;
+ } else {
+ $unknownCharacteristics[] = $key;
+ }
+ }
+ }
+
+ $uniqueUnkChars = array_unique($unknownCharacteristics);
+
+ if (! empty($uniqueUnkChars)) {
+ return response()->json([
+ 'status_code' => 'ERROR',
+ 'status_description' => 'Unknown characteristic fields found : '.implode(', ', $uniqueUnkChars).'.',
+ ], 404);
+ }
+
+ foreach ($typesToCreate as $type) {
+ if ($modelType == $type) {
+ TempClassCharacteristic::create(array_merge([
+ 'plant_id' => $plantId,
+ 'machine_id' => $machineId,
+ 'item_id' => $itemId,
+ 'aufnr' => $jobNo,
+ 'model_type' => $type,
+ 'has_work_flow_id' => '1',
+ 'created_by' => $userName,
+ 'updated_by' => $userName,
+ ], $templateData));
+ } else {
+ TempClassCharacteristic::create([
+ 'plant_id' => $plantId,
+ 'machine_id' => $machineId,
+ 'item_id' => $itemId,
+ 'aufnr' => $jobNo,
+ 'model_type' => $type,
+ 'has_work_flow_id' => '2',
+ 'created_by' => $userName,
+ 'updated_by' => $userName,
+ ]);
+ }
+ }
+ } else {
+ $templateData = [];
+ $unknownCharacteristics = [];
+
+ foreach ($templateCharacteristics as $item) {
+ foreach ($item as $key => $value) {
+ $key = strtolower($key) ?? null;
+ if (in_array($key, $columns, true)) {
+ $templateData[$key] = $value;
+ } else {
+ $unknownCharacteristics[] = $key;
+ }
+ }
+ }
+
+ $uniqueUnkChars = array_unique($unknownCharacteristics);
+
+ if (! empty($uniqueUnkChars)) {
+ return response()->json([
+ 'status_code' => 'ERROR',
+ 'status_description' => 'Unknown characteristic fields found : '.implode(', ', $uniqueUnkChars).'.',
+ ], 404);
+ }
+
+ $fixedColumns = ['id', 'plant_id', 'item_id', 'machine_id', 'aufnr', 'model_type', 'has_work_flow_id', 'created_at', 'created_by', 'updated_at', 'updated_by', 'deleted_at'];
+ $dynamicColumns = array_diff($columns, $fixedColumns);
+
+ $incomingKeys = array_keys($templateData);
+ $columnsToClear = array_diff($dynamicColumns, $incomingKeys);
+
+ $clearData = [];
+ foreach ($columnsToClear as $col) {
+ $clearData[$col] = null;
+ }
+
+ $finalData = array_merge($clearData, $templateData);
+
+ TempClassCharacteristic::where('aufnr', $jobNo)->where('model_type', $modelType)->where('machine_id', $machineId)->where('plant_id', $plantId)
+ ->update(array_merge([
+ 'has_work_flow_id' => '1',
+ 'updated_by' => $userName,
+ ], $finalData)); // ->where('item_id', $itemId)
+ }
+
try {
+ $approvalId = [];
+
$year = now()->format('y');
$month = now()->format('m');
$date = now()->format('d');
@@ -4002,36 +4345,11 @@ class CharacteristicsController extends Controller
$workflowId = "{$prefix}{$nextSerial}";
- $file = $request->file('file');
- if (! $request->hasFile('file')) {
- return response()->json([
- 'status' => 'ERROR',
- 'status_description' => 'Quality approval image (.png) not found!',
- ], 404);
- }
-
- $extension = strtolower($file->getClientOriginalExtension());
-
- $filename = $workflowId.'.'.$extension;
-
- if ($extension != 'png' && $extension != 'PNG') {
- return response()->json([
- 'status' => 'ERROR',
- 'status_description' => 'Only .PNG files are allowed.',
- ], 404);
- }
-
- if ($file && $file->getSize() > 50 * 1024) {
- return response()->json([
- 'status' => 'ERROR',
- 'status_description' => 'File size must not exceed 50 KB',
- ], 404);
- }
-
- $record = RequestCharacteristic::create([
+ RequestCharacteristic::create([
'plant_id' => $plantId,
- 'machine_id' => $MachineId,
- 'item_id' => $ItemId,
+ 'machine_id' => $machineId,
+ 'item_id' => $itemId,
+ 'model_type' => $modelType,
'characteristic_approver_master_id' => $charId,
'aufnr' => $jobNo,
'characteristic_name' => '',
@@ -4041,72 +4359,118 @@ class CharacteristicsController extends Controller
'work_flow_id' => $workflowId,
]);
- $approvalId = [];
+ $approvalId["{$modelType}_APPROVAL_ID"] = $workflowId;
- if ($request->hasFile('file')) {
- $filePath = $file->storeAs(
- 'uploads/LaserDocs',
- $filename,
- 'local'
- );
+ $classRow = ClassCharacteristic::where('aufnr', $jobNo)->where('machine_id', $machineId)->where('plant_id', $plantId)->latest()->first();
- $approvalId['Approval_ID'] = $workflowId;
+ if ($classRow) {
+ $requestChars = RequestCharacteristic::where('aufnr', $jobNo)
+ ->whereHas('approver', function ($query) {
+ $query->where('approver_type', 'Characteristic');
+ })->where('machine_id', $machineId)->where('plant_id', $plantId)->get();
- $filePath = "uploads/LaserDocs/{$filename}";
+ $hasCharPending = false;
+ if (! $requestChars->isEmpty()) {
+ foreach ($requestChars as $row) {
+ $isApproved = ($row->approver_status1 == 'Approved' || $row->approver_status1 == 'Rejected' || $row->approver_status2 == 'Approved' || $row->approver_status2 == 'Rejected' || $row->approver_status3 == 'Approved' || $row->approver_status3 == 'Rejected');
+
+ if (! $isApproved) {
+ $hasCharPending = true;
+ break;
+ }
+ }
+ }
+
+ if ($hasCharPending) {
+ $newValue = '3';
+ TempClassCharacteristic::where('aufnr', $jobNo)->where('machine_id', $machineId)->where('plant_id', $plantId)->forceDelete();
+
+ foreach ($typesToCreate as $type) {
+ TempClassCharacteristic::create([
+ 'plant_id' => $plantId,
+ 'machine_id' => $machineId,
+ 'item_id' => $itemId,
+ 'aufnr' => $jobNo,
+ 'model_type' => $type,
+ 'has_work_flow_id' => '2',
+ 'created_by' => $userName,
+ 'updated_by' => $userName,
+ ]);
+ }
+
+ RequestCharacteristic::where('work_flow_id', $workflowId)->where('plant_id', $plantId)->forceDelete();
+ } else {
+ $newValue = '2';
+ }
+
+ ClassCharacteristic::where('aufnr', $jobNo)->where('machine_id', $machineId)->where('plant_id', $plantId)
+ ->update([
+ 'has_work_flow_id' => $newValue,
+ 'updated_at' => now(),
+ 'updated_by' => $userName,
+ ]);
+
+ if ($hasCharPending) {
+ return response()->json([
+ 'status_code' => 'ERROR',
+ 'status_description' => "Characteristic approval is already pending for the job number '{$jobNo}'!",
+ ], 404);
+ }
+ } else {
+ $requestChars = RequestCharacteristic::where('aufnr', $jobNo)
+ ->whereHas('approver', function ($query) {
+ $query->where('approver_type', 'Characteristic');
+ })->where('machine_id', $machineId)->where('plant_id', $plantId)->get();
+
+ $hasCharPending = false;
+ if (! $requestChars->isEmpty()) {
+ foreach ($requestChars as $row) {
+ $isApproved = ($row->approver_status1 == 'Approved' || $row->approver_status1 == 'Rejected' || $row->approver_status2 == 'Approved' || $row->approver_status2 == 'Rejected' || $row->approver_status3 == 'Approved' || $row->approver_status3 == 'Rejected');
+
+ if (! $isApproved) {
+ $hasCharPending = true;
+ break;
+ }
+ }
+ }
+
+ if ($hasCharPending) {
+ TempClassCharacteristic::where('aufnr', $jobNo)->where('machine_id', $machineId)->where('plant_id', $plantId)->forceDelete();
+
+ foreach ($typesToCreate as $type) {
+ TempClassCharacteristic::create([
+ 'plant_id' => $plantId,
+ 'machine_id' => $machineId,
+ 'item_id' => $itemId,
+ 'aufnr' => $jobNo,
+ 'model_type' => $type,
+ 'has_work_flow_id' => '2',
+ 'created_by' => $userName,
+ 'updated_by' => $userName,
+ ]);
+ }
- if (! Storage::disk('local')->exists($filePath)) {
RequestCharacteristic::where('work_flow_id', $workflowId)->where('plant_id', $plantId)->forceDelete();
return response()->json([
- 'status' => 'ERROR',
- 'status_description' => "Document upload failed for Quality Work Flow ID : '{$workflowId}'",
+ 'status_code' => 'ERROR',
+ 'status_description' => "Characteristic approval is already pending for the job number '{$jobNo}'!",
], 404);
}
+ }
- $classChar = ClassCharacteristic::where('plant_id', $plantId)->where('machine_id', $MachineId)->where('aufnr', $jobNo)->latest()->first();
+ $extension = strtolower($file->getClientOriginalExtension());
+ $filename = $workflowId.'.'.$extension;
- $hasWorkFlowId = $classChar?->has_work_flow_id ?? null;
+ $filePath = $file->storeAs(
+ 'uploads/LaserDocs',
+ $filename,
+ 'local'
+ );
- $updatedWorkId = null;
+ $filePath = "uploads/LaserDocs/{$filename}";
- if ($classChar) {
-
- if ($hasWorkFlowId == '' || $hasWorkFlowId == null) {
- $hasWorkFlowId = '0';
- }
-
- if ($hasWorkFlowId == '0') {
-
- $updatedWorkId = '2';
-
- } elseif ($hasWorkFlowId == '1') {
-
- $updatedWorkId = '3';
-
- } elseif ($hasWorkFlowId == '2') {
-
- $updatedWorkId = '2';
-
- } elseif ($hasWorkFlowId == '3') {
-
- $updatedWorkId = '3';
-
- }
-
- ClassCharacteristic::where('plant_id', $plantId)
- ->where('machine_id', $MachineId)
- ->where('aufnr', $jobNo)
- ->update([
- 'has_work_flow_id' => $updatedWorkId,
- 'updated_at' => now(),
- 'updated_by' => $userName,
- ]);
- }
-
- return response()->json([
- 'work_flow_ids' => [$approvalId],
- ], 200);
- } else {
+ if (! Storage::disk('local')->exists($filePath)) {
RequestCharacteristic::where('work_flow_id', $workflowId)->where('plant_id', $plantId)->forceDelete();
return response()->json([
@@ -4115,6 +4479,9 @@ class CharacteristicsController extends Controller
], 404);
}
+ return response()->json([
+ 'work_flow_ids' => [$approvalId],
+ ], 200);
} catch (\Exception $e) {
return response()->json([
'status_code' => 'ERROR',
@@ -4148,11 +4515,13 @@ class CharacteristicsController extends Controller
$itemCode = $request->header('item-code');
$workFlowId = $request->header('work-flow-id');
$workFlowId = strtoupper($workFlowId);
+ $modelType = strtoupper($request->header('model-type'));
+ $modelHeading = $request->header('model-heading');
$requestType = $request->header('request-type');
Log::info("Request {$requestType} POST API >>", ['user-name' => $userName, 'characteristic-field' => $charField, 'plant-code' => $plantCode, 'work-center' => $workCenter, 'machine-name' => $machineName, 'aufnr' => $jobNo, 'item-code' => $itemCode, 'work-flow-id' => $workFlowId]);
- if (! $userName) {
+ if (! $userName || $userName == null || $userName == '') {
return response()->json([
'status_code' => 'ERROR',
'status_description' => "User name can't be empty!",
@@ -4186,6 +4555,16 @@ class CharacteristicsController extends Controller
'status_code' => 'ERROR',
'status_description' => "Machine name can't be empty!",
], 404);
+ } elseif (! $modelType || $modelType == null || $modelType == '') {
+ return response()->json([
+ 'status_code' => 'ERROR',
+ 'status_description' => "Model type can't be empty!",
+ ], 404);
+ } elseif (! $modelHeading || $modelHeading == null || $modelHeading == '') {
+ return response()->json([
+ 'status_code' => 'ERROR',
+ 'status_description' => "Model heading can't be empty!",
+ ], 404);
} elseif (! $requestType || $requestType == null || $requestType == '') {
return response()->json([
'status_code' => 'ERROR',
@@ -4197,17 +4576,49 @@ class CharacteristicsController extends Controller
$charField = 'NIL';
}
- if (! is_numeric($plantCode) || Str::length($plantCode) < 4 || ! preg_match('/^[1-9]\d{3,}$/', $plantCode)) { // !ctype_digit($data['plant_code'])
+ if (! is_numeric($plantCode)) {
return response()->json([
'status_code' => 'ERROR',
- 'status_description' => 'Invalid plant code found!',
+ '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 (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);
}
- if (Str::length($itemCode) < 6 || ! ctype_alnum($itemCode)) {
+ if (Str::length($workCenter) < 6) {
return response()->json([
'status_code' => 'ERROR',
- 'status_description' => 'Invalid item code found!',
+ '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);
}
@@ -4226,7 +4637,38 @@ class CharacteristicsController extends Controller
if ($requestType != 'Characteristic' && $requestType != 'Quality') {
return response()->json([
'status_code' => 'ERROR',
- 'status_description' => 'Unknown request type found!',
+ 'status_description' => "Unknown request type '{$requestType}' found!",
+ ], 404);
+ }
+
+ if ($modelType != 'MOTOR' && $modelType != 'PUMP' && $modelType != 'NAME_PLATE') {
+ return response()->json([
+ 'status_code' => 'ERROR',
+ 'status_description' => "Unknown model type '{$modelType}' found!",
+ ], 404);
+ }
+
+ $typesToCreate = [];
+
+ if (Str::contains($modelHeading, 'PRESSURE BOOSTER SYSTEM', ignoreCase: true)) {
+ $typesToCreate = ['MOTOR', 'PUMP', 'NAME_PLATE'];
+ } elseif (Str::contains($modelHeading, 'PUMPSET', 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)) {
+ $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);
}
@@ -4234,7 +4676,7 @@ class CharacteristicsController extends Controller
if (! $plant) {
return response()->json([
'status_code' => 'ERROR',
- 'status_description' => "Plant code '{$plantCode}' not found!",
+ 'status_description' => "Plant code '{$plantCode}' not found in plants table!",
], 404);
}
@@ -4245,7 +4687,7 @@ class CharacteristicsController extends Controller
if (! $user) {
return response()->json([
'status_code' => 'ERROR',
- 'status_description' => "User name '{$userName}' not found!",
+ 'status_description' => "User name '{$userName}' not found in users table!",
], 404);
}
@@ -4254,12 +4696,12 @@ class CharacteristicsController extends Controller
if (! $userPlant && ! $user->hasRole('Super Admin')) {
return response()->json([
'status_code' => 'ERROR',
- 'status_description' => "User name '{$userName}' not found for the plant code '{$plantCode}'!",
+ 'status_description' => "User name '{$userName}' not found for the plant code '{$plantCode}' in users table!",
], 404);
} elseif (! $user->hasRole(['Super Admin', 'Laser Manager', 'Laser Supervisor', 'Laser Employee'])) {
return response()->json([
'status_code' => 'ERROR',
- 'status_description' => 'User does not have rights!',
+ 'status_description' => "User '{$userName}' does not have rights!",
], 404);
}
@@ -4267,7 +4709,7 @@ class CharacteristicsController extends Controller
if (! $machine) {
return response()->json([
'status_code' => 'ERROR',
- 'status_description' => "Work center '{$workCenter}' not found in master!",
+ 'status_description' => "Work center '{$workCenter}' not found in machines table!",
], 404);
}
@@ -4275,17 +4717,17 @@ class CharacteristicsController extends Controller
if (! $machine) {
return response()->json([
'status_code' => 'ERROR',
- 'status_description' => "Work center '{$workCenter}' not found for the plant code '{$plantCode}' in master!",
+ 'status_description' => "Work center '{$workCenter}' not found for the plant code '{$plantCode}' in machines table!",
], 404);
}
- $MachineId = $machine->id;
+ $machineId = $machine->id;
$iCode = Item::where('code', $itemCode)->first();
if (! $iCode) {
return response()->json([
'status_code' => 'ERROR',
- 'status_description' => "Item code '{$itemCode}' not found!",
+ 'status_description' => "Item code '{$itemCode}' not found in items table!",
], 404);
}
@@ -4293,11 +4735,11 @@ class CharacteristicsController extends Controller
if (! $item) {
return response()->json([
'status_code' => 'ERROR',
- 'status_description' => "Item code '{$itemCode}' not found for the plant code '{$plantCode}'!",
+ 'status_description' => "Item code '{$itemCode}' not found for the plant code '{$plantCode}' in items table!",
], 404);
}
- $ItemId = $item->id;
+ $itemId = $item->id;
$pCode = CharacteristicApproverMaster::where('plant_id', $plantId)->first();
if (! $pCode) {
@@ -4307,7 +4749,7 @@ class CharacteristicsController extends Controller
], 404);
}
- $wCenter = CharacteristicApproverMaster::where('machine_id', $MachineId)->first();
+ $wCenter = CharacteristicApproverMaster::where('machine_id', $machineId)->first();
if (! $wCenter) {
return response()->json([
'status_code' => 'ERROR',
@@ -4315,7 +4757,7 @@ class CharacteristicsController extends Controller
], 404);
}
- $wCenterAgaPlant = CharacteristicApproverMaster::where('machine_id', $MachineId)->where('plant_id', $plantId)->first();
+ $wCenterAgaPlant = CharacteristicApproverMaster::where('machine_id', $machineId)->where('plant_id', $plantId)->first();
if (! $wCenterAgaPlant) {
return response()->json([
'status_code' => 'ERROR',
@@ -4347,6 +4789,7 @@ class CharacteristicsController extends Controller
], 404);
}
+ // Master characteristic field value 'NIL' not found in approver master!
$cFieldAgaPlant = CharacteristicApproverMaster::where('characteristic_field', $charField)->where('plant_id', $plantId)->first();
if (! $cFieldAgaPlant) {
return response()->json([
@@ -4355,7 +4798,7 @@ class CharacteristicsController extends Controller
], 404);
}
- $mNameAndWorkCenter = CharacteristicApproverMaster::where('machine_name', $machineName)->where('machine_id', $MachineId)->first();
+ $mNameAndWorkCenter = CharacteristicApproverMaster::where('machine_name', $machineName)->where('machine_id', $machineId)->first();
if (! $mNameAndWorkCenter) {
return response()->json([
'status_code' => 'ERROR',
@@ -4363,7 +4806,7 @@ class CharacteristicsController extends Controller
], 404);
}
- $mNameAndWorkCenterAgaPlant = CharacteristicApproverMaster::where('machine_name', $machineName)->where('machine_id', $MachineId)->where('plant_id', $plantId)->first();
+ $mNameAndWorkCenterAgaPlant = CharacteristicApproverMaster::where('machine_name', $machineName)->where('machine_id', $machineId)->where('plant_id', $plantId)->first();
if (! $mNameAndWorkCenterAgaPlant) {
return response()->json([
'status_code' => 'ERROR',
@@ -4371,7 +4814,7 @@ class CharacteristicsController extends Controller
], 404);
}
- $cFieldAndWorkCent = CharacteristicApproverMaster::where('characteristic_field', $charField)->where('machine_id', $MachineId)->first();
+ $cFieldAndWorkCent = CharacteristicApproverMaster::where('characteristic_field', $charField)->where('machine_id', $machineId)->first();
if (! $cFieldAndWorkCent) {
return response()->json([
'status_code' => 'ERROR',
@@ -4379,7 +4822,7 @@ class CharacteristicsController extends Controller
], 404);
}
- $cFieldAndWorkCentAgaPlant = CharacteristicApproverMaster::where('characteristic_field', $charField)->where('machine_id', $MachineId)->where('plant_id', $plantId)->first();
+ $cFieldAndWorkCentAgaPlant = CharacteristicApproverMaster::where('characteristic_field', $charField)->where('machine_id', $machineId)->where('plant_id', $plantId)->first();
if (! $cFieldAndWorkCentAgaPlant) {
return response()->json([
'status_code' => 'ERROR',
@@ -4395,7 +4838,15 @@ class CharacteristicsController extends Controller
], 404);
}
- $cFieldAndWorkCentAndMachAgaPlant = CharacteristicApproverMaster::where('characteristic_field', $charField)->where('machine_id', $MachineId)->where('machine_name', $machineName)->where('plant_id', $plantId)->first();
+ $cFieldAndMachAgaPlant = CharacteristicApproverMaster::where('characteristic_field', $charField)->where('machine_name', $machineName)->where('plant_id', $plantId)->first();
+ if (! $cFieldAndMachAgaPlant) {
+ return response()->json([
+ 'status_code' => 'ERROR',
+ 'status_description' => "Master characteristic field value '{$charField}' and machine name '{$machineName}' not found for the plant code '{$plantCode}' in approver master!",
+ ], 404);
+ }
+
+ $cFieldAndWorkCentAndMachAgaPlant = CharacteristicApproverMaster::where('characteristic_field', $charField)->where('machine_name', $machineName)->where('machine_id', $machineId)->where('plant_id', $plantId)->first();
if (! $cFieldAndWorkCentAndMachAgaPlant) {
return response()->json([
'status_code' => 'ERROR',
@@ -4407,7 +4858,7 @@ class CharacteristicsController extends Controller
if (! $job) {
return response()->json([
'status_code' => 'ERROR',
- 'status_description' => "Job number '{$jobNo}' not found!",
+ 'status_description' => "Job number '{$jobNo}' not found in request approval table!",
], 404);
}
@@ -4415,38 +4866,28 @@ class CharacteristicsController extends Controller
if (! $jobAgaPlant) {
return response()->json([
'status_code' => 'ERROR',
- 'status_description' => "Job number '{$jobNo}' not found for the plant code '{$plantCode}'!",
+ 'status_description' => "Job number '{$jobNo}' not found for the plant code '{$plantCode}' in request approval table!",
], 404);
}
- $jobAgaPlantMachine = RequestCharacteristic::where('aufnr', $jobNo)->where('plant_id', $plantId)->where('item_id', $ItemId)->first();
+ $jobAgaPlantItem = RequestCharacteristic::where('aufnr', $jobNo)->where('item_id', $itemId)->where('plant_id', $plantId)->first();
+ if (! $jobAgaPlantItem) {
+ return response()->json([
+ 'status_code' => 'ERROR',
+ 'status_description' => "Job number '{$jobNo}' not found with the item code '{$itemCode}' in request approval table!",
+ ], 404);
+ }
+
+ $jobAgaPlantMachine = RequestCharacteristic::where('aufnr', $jobNo)->where('item_id', $itemId)->where('machine_id', $machineId)->where('plant_id', $plantId)->first();
if (! $jobAgaPlantMachine) {
return response()->json([
'status_code' => 'ERROR',
- 'status_description' => "Job number '{$jobNo}' and item code '{$itemCode}' records not found for the plant code '{$plantCode}'!",
+ 'status_description' => "Job number '$jobNo' not found for the work center '$workCenter' in request approval table!",
], 404);
}
- $jobAgaPlantMachine = RequestCharacteristic::where('aufnr', $jobNo)->where('plant_id', $plantId)->where('item_id', $ItemId)->where('machine_id', $MachineId)->first();
- if (! $jobAgaPlantMachine) {
- return response()->json([
- 'status_code' => 'ERROR',
- 'status_description' => "Job number '$jobNo', item code '$itemCode' and work center '$workCenter' records not found for the plant code '{$plantCode}'",
- ], 404);
- }
-
- $reqCharExist = RequestCharacteristic::where('aufnr', $jobNo)
- ->where('plant_id', $plantId)
- ->where('item_id', $ItemId)
- ->where('machine_id', $MachineId)
- ->whereHas('approver', function ($query) use ($requestType) {
- $query->where('approver_type', $requestType);
- })
- ->with('approver') // Optional: eager load for later use
- ->first();
-
if ($requestType == 'Characteristic') {
- $appTypExist = CharacteristicApproverMaster::where('characteristic_field', $charField)->where('machine_id', $MachineId)->where('machine_name', $machineName)->where('plant_id', $plantId)->where('approver_type', 'Characteristic')->first();
+ $appTypExist = CharacteristicApproverMaster::where('characteristic_field', $charField)->where('approver_type', $requestType)->where('machine_name', $machineName)->where('machine_id', $machineId)->where('plant_id', $plantId)->first();
if (! $appTypExist) {
return response()->json([
'status_code' => 'ERROR',
@@ -4454,10 +4895,15 @@ class CharacteristicsController extends Controller
], 404);
}
+ $reqCharExist = RequestCharacteristic::where('aufnr', $jobNo)->where('item_id', $itemId)
+ ->whereHas('approver', function ($query) use ($requestType) {
+ $query->where('approver_type', $requestType);
+ })->where('machine_id', $machineId)->where('plant_id', $plantId)->first();
+
if (! $reqCharExist) {
return response()->json([
'status_code' => 'ERROR',
- 'status_description' => "Request characteristic approvals not found for the Job number '{$jobNo}', item code '{$itemCode}', work center '{$workCenter}' and plant code '{$plantCode}'!",
+ 'status_description' => "Request characteristic approvals not found for the Job number '{$jobNo}', item code '{$itemCode}', work center '{$workCenter}', model type '{$modelType}' and plant code '{$plantCode}'!",
], 404);
}
@@ -4471,8 +4917,8 @@ class CharacteristicsController extends Controller
}
$charWfIdExist = RequestCharacteristic::where('work_flow_id', $workFlowId)
- ->whereHas('approver', function ($query) {
- $query->where('approver_type', 'Characteristic');
+ ->whereHas('approver', function ($query) use ($requestType) {
+ $query->where('approver_type', $requestType);
})
->first();
if (! $charWfIdExist) {
@@ -4483,7 +4929,7 @@ class CharacteristicsController extends Controller
}
}
} else {
- $appTypExist = CharacteristicApproverMaster::where('characteristic_field', $charField)->where('machine_id', $MachineId)->where('machine_name', $machineName)->where('plant_id', $plantId)->where('approver_type', 'Quality')->first();
+ $appTypExist = CharacteristicApproverMaster::where('characteristic_field', $charField)->where('approver_type', $requestType)->where('machine_name', $machineName)->where('machine_id', $machineId)->where('plant_id', $plantId)->first();
if (! $appTypExist) {
return response()->json([
'status_code' => 'ERROR',
@@ -4491,10 +4937,15 @@ class CharacteristicsController extends Controller
], 404);
}
+ $reqCharExist = RequestCharacteristic::where('aufnr', $jobNo)->where('item_id', $itemId)->where('model_type', $modelType)
+ ->whereHas('approver', function ($query) use ($requestType) {
+ $query->where('approver_type', $requestType);
+ })->where('machine_id', $machineId)->where('plant_id', $plantId)->first();
+
if (! $reqCharExist) {
return response()->json([
'status_code' => 'ERROR',
- 'status_description' => "Request quality approvals not found for the Job number '{$jobNo}', item code '{$itemCode}', work center '{$workCenter}' and plant code '{$plantCode}'!",
+ 'status_description' => "Request quality approvals not found for the Job number '{$jobNo}', item code '{$itemCode}', work center '{$workCenter}', model type '{$modelType}' and plant code '{$plantCode}'!",
], 404);
}
@@ -4508,8 +4959,8 @@ class CharacteristicsController extends Controller
}
$qualWfIdExist = RequestCharacteristic::where('work_flow_id', $workFlowId)
- ->whereHas('approver', function ($query) {
- $query->where('approver_type', 'Quality');
+ ->whereHas('approver', function ($query) use ($requestType) {
+ $query->where('approver_type', $requestType);
})
->first();
if (! $qualWfIdExist) {
@@ -4521,149 +4972,169 @@ class CharacteristicsController extends Controller
}
}
- // ..
-
- $classRow = ClassCharacteristic::where('plant_id', $plantId)
- ->where('machine_id', $MachineId)
- ->where('aufnr', $jobNo)
- ->first();
+ $classRow = ClassCharacteristic::where('aufnr', $jobNo)->where('machine_id', $machineId)->where('plant_id', $plantId)->latest()->first();
if ($classRow) {
- if ($requestType == 'Characteristic') {
- $requestChars = RequestCharacteristic::where('plant_id', $plantId)
- ->where('machine_id', $MachineId)
- ->where('aufnr', $jobNo)
- ->get();
+ $requestChars = RequestCharacteristic::where('aufnr', $jobNo)
+ ->whereHas('approver', function ($query) {
+ $query->where('approver_type', 'Characteristic');
+ })->where('machine_id', $machineId)->where('plant_id', $plantId)->get();
- if (! $requestChars->isEmpty()) {
- $hasPending = false;
- $allApproved = true;
+ $tempClassChars = TempClassCharacteristic::where('aufnr', $jobNo)->where('machine_id', $machineId)->where('plant_id', $plantId)->get();
- foreach ($requestChars as $row) {
+ if (! $requestChars->isEmpty()) {
+ $hasCharPending = false;
+ $hasQualPending = false;
+ $allCharApproved = true;
+ $allQualApproved = true;
- $isApproved = (
- $row->approver_status1 == 'Approved' || $row->approver_status1 == 'Rejected' ||
- $row->approver_status2 == 'Approved' || $row->approver_status2 == 'Rejected' ||
- $row->approver_status3 == 'Approved' || $row->approver_status2 == 'Rejected'
- );
+ foreach ($requestChars as $row) {
+ $isApproved = ($row->approver_status1 == 'Approved' || $row->approver_status1 == 'Rejected' || $row->approver_status2 == 'Approved' || $row->approver_status2 == 'Rejected' || $row->approver_status3 == 'Approved' || $row->approver_status3 == 'Rejected');
- if (! $isApproved) {
- $isPending = ! empty($row->mail_status) &&
- (
- empty($row->approver_status1) || $row->approver_status1 == 'Hold' ||
- empty($row->approver_status2) || $row->approver_status2 == 'Hold' ||
- empty($row->approver_status3) || $row->approver_status3 == 'Hold'
- );
- if ($isPending) {
- $hasPending = true;
- $allApproved = false;
- break;
- }
-
- $allApproved = false;
- }
+ if (! $isApproved) {
+ $allCharApproved = false;
+ $hasCharPending = true;
+ break;
}
+ }
- $current = $classRow->has_work_flow_id ?? '0';
+ if ($hasCharPending) {
+ $newValue = '3';
+ TempClassCharacteristic::where('aufnr', $jobNo)->where('machine_id', $machineId)->where('plant_id', $plantId)->forceDelete();
- if ($hasPending) {
- if ($current == '0') {
- $newValue = '1';
- } elseif ($current == '1') {
- $newValue = '1';
- } elseif ($current == '2') {
- $newValue = '3';
- } elseif ($current == '3') {
- $newValue = '3';
- }
- } elseif ($allApproved) {
- if ($current == '0') {
- $newValue = '0';
- } elseif ($current == '1') {
- $newValue = '0';
- } elseif ($current == '2') {
- $newValue = '2';
- } elseif ($current == '3') {
- $newValue = '2';
- }
- }
-
- ClassCharacteristic::where('plant_id', $plantId)
- ->where('machine_id', $MachineId)
- ->where('aufnr', $jobNo)
- ->update([
- 'has_work_flow_id' => $newValue,
- 'updated_at' => now(),
+ foreach ($typesToCreate as $type) {
+ TempClassCharacteristic::create([
+ 'plant_id' => $plantId,
+ 'machine_id' => $machineId,
+ 'item_id' => $itemId,
+ 'aufnr' => $jobNo,
+ 'model_type' => $type,
+ 'has_work_flow_id' => '2',
+ 'created_by' => $userName,
'updated_by' => $userName,
]);
- }
- } elseif ($requestType == 'Quality') {
-
- $requestChar = RequestCharacteristic::where('plant_id', $plantId)
- ->where('machine_id', $MachineId)
- ->where('aufnr', $jobNo)
- ->latest()
- ->first();
-
- if ($requestChar) {
-
- $current = $requestChar->has_work_flow_id ?? '0';
-
- $isApproved =
- $requestChar->approver_status1 == 'Approved' ||
- $requestChar->approver_status2 == 'Approved' ||
- $requestChar->approver_status3 == 'Approved';
-
- if ($isApproved) {
- if ($current == '0') {
- $newValue = '0';
- } elseif ($current == '1') {
- $newValue = '1';
- } elseif ($current == '2') {
- $newValue = '0';
- } elseif ($current == '3') {
- $newValue = '1';
+ }
+ } elseif (! $tempClassChars->isEmpty()) {
+ foreach ($tempClassChars as $temp) {
+ if ($temp->has_work_flow_id == '1' || $temp->has_work_flow_id == '2') {
+ $hasQualPending = true;
+ $allQualApproved = false;
+ break;
}
- } elseif (
- $requestChar->approver_status1 == 'Hold' || $requestChar->approver_status1 == 'Rejected' || $requestChar->approver_status1 == null || $requestChar->approver_status1 == '' ||
- $requestChar->approver_status2 == 'Hold' || $requestChar->approver_status2 == 'Rejected' || $requestChar->approver_status2 == null || $requestChar->approver_status2 == '' ||
- $requestChar->approver_status3 == 'Hold' || $requestChar->approver_status3 == 'Rejected' || $requestChar->approver_status3 == null || $requestChar->approver_status3 == ''
- ) {
- if ($current == '0') {
- $newValue = '2';
- } elseif ($current == '1') {
- $newValue = '3';
- } elseif ($current == '2') {
- $newValue = '2';
- } elseif ($current == '3') {
- $newValue = '3';
+
+ if ($temp->has_work_flow_id == '0') {
+ $allQualApproved = true;
}
}
+
+ if ($hasQualPending) {
+ $newValue = '2';
+ } elseif ($allQualApproved) {
+ $newValue = '0';
+ }
+ } elseif ($allCharApproved) {
+ $newValue = '0';
}
- ClassCharacteristic::where('plant_id', $plantId)
- ->where('machine_id', $MachineId)
- ->where('aufnr', $jobNo)
+ ClassCharacteristic::where('aufnr', $jobNo)->where('machine_id', $machineId)->where('plant_id', $plantId)
->update([
'has_work_flow_id' => $newValue,
'updated_at' => now(),
'updated_by' => $userName,
]);
+ } elseif (! $tempClassChars->isEmpty()) {
+ $hasQualPending = false;
+ $allQualApproved = true;
+
+ foreach ($tempClassChars as $temp) {
+ if ($temp->has_work_flow_id == '1' || $temp->has_work_flow_id == '2') {
+ $hasQualPending = true;
+ $allQualApproved = false;
+ break;
+ }
+
+ if ($temp->has_work_flow_id == '0') {
+ $allQualApproved = true;
+ }
+ }
+
+ if ($hasQualPending) {
+ $newValue = '2';
+ } elseif ($allQualApproved) {
+ $newValue = '0';
+ }
+
+ ClassCharacteristic::where('aufnr', $jobNo)->where('machine_id', $machineId)->where('plant_id', $plantId)
+ ->update([
+ 'has_work_flow_id' => $newValue,
+ 'updated_at' => now(),
+ 'updated_by' => $userName,
+ ]);
+ } else {
+ ClassCharacteristic::where('aufnr', $jobNo)->where('machine_id', $machineId)->where('plant_id', $plantId)
+ ->update([
+ 'has_work_flow_id' => '0',
+ 'updated_at' => now(),
+ 'updated_by' => $userName,
+ ]);
+ }
+ } else {
+ $requestChars = RequestCharacteristic::where('aufnr', $jobNo)
+ ->whereHas('approver', function ($query) {
+ $query->where('approver_type', 'Characteristic');
+ })->where('machine_id', $machineId)->where('plant_id', $plantId)->get();
+
+ if (! $requestChars->isEmpty()) {
+ $hasCharPending = false;
+
+ foreach ($requestChars as $row) {
+ $isApproved = ($row->approver_status1 == 'Approved' || $row->approver_status1 == 'Rejected' || $row->approver_status2 == 'Approved' || $row->approver_status2 == 'Rejected' || $row->approver_status3 == 'Approved' || $row->approver_status3 == 'Rejected');
+
+ if (! $isApproved) {
+ $hasCharPending = true;
+ break;
+ }
+ }
+
+ if ($hasCharPending) {
+ TempClassCharacteristic::where('aufnr', $jobNo)->where('machine_id', $machineId)->where('plant_id', $plantId)->forceDelete();
+
+ foreach ($typesToCreate as $type) {
+ TempClassCharacteristic::create([
+ 'plant_id' => $plantId,
+ 'machine_id' => $machineId,
+ 'item_id' => $itemId,
+ 'aufnr' => $jobNo,
+ 'model_type' => $type,
+ 'has_work_flow_id' => '2',
+ 'created_by' => $userName,
+ 'updated_by' => $userName,
+ ]);
+ }
+ }
}
}
if (! $workFlowId) {
- $records = RequestCharacteristic::with('approver')->where('aufnr', $jobNo)->where('plant_id', $plantId)->where('item_id', $ItemId)->where('machine_id', $MachineId)->whereHas('approver', function ($query) use ($requestType) {
- $query->where('approver_type', $requestType);
- })->orderBy('id')->get();
+ $records = null;
+
+ if ($requestType == 'Characteristic') {
+ $records = RequestCharacteristic::where('aufnr', $jobNo)->where('item_id', $itemId)
+ ->whereHas('approver', function ($query) use ($requestType) {
+ $query->where('approver_type', $requestType);
+ })->where('machine_id', $machineId)->where('plant_id', $plantId)->orderBy('id')->get();
+ } else {
+ $records = RequestCharacteristic::where('aufnr', $jobNo)->where('item_id', $itemId)->where('model_type', $modelType)
+ ->whereHas('approver', function ($query) use ($requestType) {
+ $query->where('approver_type', $requestType);
+ })->where('machine_id', $machineId)->where('plant_id', $plantId)->orderBy('id')->get();
+ }
$response = [];
foreach ($records as $row) {
if ($requestType == 'Characteristic') {
- $workFlowStatus = (
- ($row->approver_status1 == 'Approved') || ($row->approver_status2 == 'Approved') || ($row->approver_status3 == 'Approved') || ($row->approver_status1 == 'Rejected') || ($row->approver_status2 == 'Rejected') || ($row->approver_status3 == 'Rejected')
- ) ? '0' : '1';
+ $workFlowStatus = ($row->approver_status1 == 'Approved' || $row->approver_status2 == 'Approved' || $row->approver_status3 == 'Approved' || $row->approver_status1 == 'Rejected' || $row->approver_status2 == 'Rejected' || $row->approver_status3 == 'Rejected') ? '0' : '1';
// if ($row->approver?->approver_type != 'Characteristic' || ! $row->characteristic_name) {
// continue;
@@ -4672,6 +5143,7 @@ class CharacteristicsController extends Controller
$response[] = [
'work_flow_id' => (string) $row->work_flow_id,
'work_flow_status' => $workFlowStatus,
+ 'model_type' => strtoupper($row->model_type) ?? '',
'characteristic_name' => strtoupper($row->characteristic_name) ?? '',
'current_value' => $row->current_value ?? '',
'update_value' => $row->update_value ?? '',
@@ -4694,6 +5166,10 @@ class CharacteristicsController extends Controller
} else {
$workFlowStatus = ($row->approver_status1 == 'Approved' || $row->approver_status2 == 'Approved' || $row->approver_status3 == 'Approved') ? '0' : '1';
+ if ($workFlowStatus == '1') {
+ $workFlowStatus = ($row->approver_status1 == 'Rejected' || $row->approver_status2 == 'Rejected' || $row->approver_status3 == 'Rejected') ? '2' : '1';
+ }
+
// if ($row->approver?->approver_type != 'Quality' || $row->characteristic_name) {
// continue;
// }
@@ -4701,7 +5177,8 @@ class CharacteristicsController extends Controller
$response[] = [
'work_flow_id' => (string) $row->work_flow_id,
'work_flow_status' => $workFlowStatus,
- // 'approver_name_1' => $row->approver_name1 ?? '',
+ 'model_type' => strtoupper($row->model_type) ?? '',
+ // 'approver_name_1' => $row->approver_name1 ?? '',
'approver_name_1' => $row->approver?->name1 ?? '',
'approver_status_1' => $row->approver_status1 ?? '',
'approver_remark_1' => $row->approver_remark1 ?? '',
@@ -4733,7 +5210,7 @@ class CharacteristicsController extends Controller
if (! $workFlowIdExist) {
return response()->json([
'status_code' => 'ERROR',
- 'status_description' => "Work Flow ID '{$workFlowId}' not found in database!",
+ 'status_description' => "Work Flow ID '{$workFlowId}' not found in request approval table!",
], 404);
}
diff --git a/app/Mail/CharacteristicApprovalMail.php b/app/Mail/CharacteristicApprovalMail.php
index 88f4cc6..54a8f55 100644
--- a/app/Mail/CharacteristicApprovalMail.php
+++ b/app/Mail/CharacteristicApprovalMail.php
@@ -29,6 +29,8 @@ class CharacteristicApprovalMail extends Mailable
public $subjectLine;
+ public $characteristics;
+
/**
* Create a new message instance.
*/
diff --git a/resources/views/mail/characteristic-approval.blade.php b/resources/views/mail/characteristic-approval.blade.php
index a58549f..f5495bd 100644
--- a/resources/views/mail/characteristic-approval.blade.php
+++ b/resources/views/mail/characteristic-approval.blade.php
@@ -33,6 +33,10 @@
Job Number |
{{ $request->aufnr }} |
+
+ | Model Type |
+ {{ $request->model_type }} |
+
| Work Flow ID |
{{ $request->work_flow_id }} |
@@ -103,8 +107,8 @@
Approve
|
- Hold
- |
+ {{-- Hold
+ | --}}
Reject
|
@@ -123,6 +127,30 @@
@endif
@elseif($approverNameFromMaster && $approverNameFromMaster->approver_type == 'Quality')
+{{-- --}}
+
+
+
+ |
+ TEMPLATE CHARACTERISTICS
+ |
+
+
+ | Name |
+ Value |
+
+
+ @forelse ($tableData as $key => $value)
+
+ | {{ strtoupper($key) }} |
+ {{ $value }} |
+
+ @empty
+
+ | No Characteristics Found |
+
+ @endforelse
+