1
0
forked from poc/pds

Enhance MachineController with detailed validation and Machine Data Retrieval against plant and line

This commit is contained in:
dhanabalan
2025-11-15 17:07:25 +05:30
parent b2ad2ef6ce
commit 7c773f2cca

View File

@@ -2,8 +2,12 @@
namespace App\Http\Controllers; namespace App\Http\Controllers;
use App\Models\Line;
use App\Models\Machine; use App\Models\Machine;
use App\Models\Plant;
use App\Models\WorkGroupMaster;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Str;
class MachineController extends Controller class MachineController extends Controller
{ {
@@ -24,7 +28,7 @@ class MachineController extends Controller
} }
/** /**
* Display the specified resource. * Display the all available resource.
*/ */
public function get_all_data(Request $request) public function get_all_data(Request $request)
{ {
@@ -41,18 +45,160 @@ class MachineController extends Controller
], 403); ], 403);
} }
$machines = Machine::with('plant')->with('workGroupMaster')->orderBy('plant_id')->get(); $machines = Machine::with('plant')->with('workGroupMaster')->orderBy('plant_id')->get();
$machinesData = $machines->map(function($machine) { $machinesData = $machines->map(function($machine) {
return [ return [
'plant_code' => $machine->plant ? (String)$machine->plant->code : "", 'plant_code' => $machine->plant ? (String)$machine->plant->code : "",
'group_work_center' => $machine->workGroupMaster ? (String)$machine->workGroupMaster->name : "", 'group_work_center' => $machine->workGroupMaster ? (String)$machine->workGroupMaster->name : "",
'work_center' => $machine->work_center ?? "", 'work_center' => $machine->work_center ?? "",
]; ];
}); });
return response()->json([ return response()->json([
'machines' => $machinesData 'machines' => $machinesData
]); ]);
}
/**
* Display the specified resource.
*/
public function get_data(Request $request)
{
$expectedUser = env('API_AUTH_USER');
$expectedPw = env('API_AUTH_PW');
$header_auth = $request->header('Authorization');
$expectedToken = $expectedUser . ':' . $expectedPw;
if ("Bearer " . $expectedToken != $header_auth)
{
return response()->json([
'status_code' => 'ERROR',
'status_description' => 'Invalid authorization token!'
], 403);
}
$plantCode = $request->header('plant-code');
$lineName = $request->header('line-name');
if ($plantCode == null || $plantCode == '')
{
return response()->json([
'status_code' => 'ERROR',
'status_description' => "Plant code can't be empty!"
], 400);
}
else if (Str::length($plantCode) < 4 || !is_numeric($plantCode) || !preg_match('/^[1-9]\d{3,}$/', $plantCode))
{
return response()->json([
'status_code' => 'ERROR',
'status_description' => "Invalid plant code found!"
], 400);
}
else if ($lineName == null || $lineName == '' || Str::length($lineName) <= 0)
{
return response()->json([
'status_code' => 'ERROR',
'status_description' => "Line name can't be empty!"
], 400);
}
$plant = Plant::where('code', $plantCode)->first();
if (!$plant)
{
return response()->json([
'status_code' => 'ERROR',
'status_description' => "Plant Code '{$plantCode}' not found!"
], 400);
}
$plantId = $plant->id;
$line = Line::where('name', $lineName)->first();
if (!$line)
{
return response()->json([
'status_code' => 'ERROR',
'status_description' => "Line Name '{$lineName}' not found!"
], 400);
}
$line = Line::where('name', $lineName)->where('plant_id', $plantId)->first();
if (!$line)
{
return response()->json([
'status_code' => 'ERROR',
'status_description' => "Line Name '{$lineName}' not found for the plant!"
], 400);
}
$lineId = $line->id;//no_of_operation
$lineWorkGroup1Id = $line->work_group1_id;
$lineWorkGroup2Id = $line->work_group2_id;
if ($line->no_of_operation == null || $line->no_of_operation == '' || $line->no_of_operation == 0 || !is_numeric($line->no_of_operation))
{
return response()->json([
'status_code' => 'ERROR',
'status_description' => "Group work center not found for the plant & line!"
], 400);
}
$test = [];
$lineWorkGroupIds = [];
for ($i = 1; $i <= $line->no_of_operation; $i++) {
$curWorkGroupId = $line->{"work_group{$i}_id"};
if (in_array($curWorkGroupId, $lineWorkGroupIds))
{
continue;
}
else
{
$lineWorkGroupIds[] = $curWorkGroupId;
}
$test[] = [
'group_work_center' => WorkGroupMaster::where('id', $curWorkGroupId)->first()->name ?? "",
'operation_number' => WorkGroupMaster::where('id', $curWorkGroupId)->first()->operation_number ?? "",
'work_centers' => Machine::where('plant_id', $plantId)->where('work_group_master_id', $curWorkGroupId)->pluck('work_center')->toArray() ?? [],
];
}
if($lineWorkGroupIds)
{
return response()->json([
'machines' => $test
]);
}
// $machines = Machine::with('plant')->with('workGroupMaster')->orderBy('plant_id')->get();
// $machinesData = $machines->map(function($machine) use ($lineId, $plantId) {
// $test = [];
// for ($i = 1; $i <= 10; $i++) {
// $workGroupName = $this->data["work_group{$i}_id"] ?? null;
// if (!$workGroupName) {
// continue;
// }
// $workGroupRecord = WorkGroupMaster::where('name', $workGroupName)
// ->where('plant_id', $plant->id)
// ->first();
// $existsInLines = Line::where('plant_id', $plantId)
// ->where('i', '!=', $lineId)
// ->where("work_group{$i}_id", $workGroupRecord->id)
// ->first();
// $test[] = $existsInLines;
// if ($existsInLines) {
// $warnMsg[] = "Work group '{$workGroupName}' is already assigned to another line in plant '{$this->data['plant']}'";
// }
// $this->data["work_group{$i}_id"] = $workGroupRecord->id;
// }
// return $test[];
// });
// return response()->json([
// 'machines' => $machinesData
// ]);
} }
/** /**