diff --git a/app/Http/Controllers/PlantController.php b/app/Http/Controllers/PlantController.php index f4175bda..740167ba 100644 --- a/app/Http/Controllers/PlantController.php +++ b/app/Http/Controllers/PlantController.php @@ -3,6 +3,7 @@ namespace App\Http\Controllers; use App\Models\Item; +use App\Models\Line; use App\Models\Plant; use Illuminate\Http\Request; @@ -129,6 +130,124 @@ class PlantController extends Controller ], 200); } + public function getItemLine(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'); + + $itemCode = $request->header('item-code'); + + if (! $plantCode) { + return response()->json([ + 'status_code' => 'ERROR', + 'status_description' => "Plant Code value can't be empty", + ], 404); + } + elseif (! $lineName) { + return response()->json([ + 'status_code' => 'ERROR', + 'status_description' => 'Line Name cannot be empty!', + ], 404); + } elseif (! $itemCode) { + return response()->json([ + 'status_code' => 'ERROR', + 'status_description' => 'Item code cannot be empty!', + ], 404); + } + + $plant = Plant::where('code', $plantCode)->first(); + $plantId = $plant->id; + + if (! $plant) { + return response()->json([ + 'status_code' => 'ERROR', + 'status_description' => "Plant Code '{$plantCode}' not found!", + ], 404); + } + + $itemCodeExist = Item::where('code', $itemCode)->first(); + + if (! $itemCodeExist) { + return response()->json([ + 'status_code' => 'ERROR', + 'status_description' => 'Item code not found', + ], 404); + } + + $itemCodePlantExist = Item::where('code', $itemCode)->where('plant_id', $plantId)->first(); + + if (! $itemCodePlantExist) { + return response()->json([ + 'status_code' => 'ERROR', + 'status_description' => "Item code not found against plant code '$plantCode'", + ], 404); + } + + $lineNameExist = Line::where('name', $lineName)->first(); + + if (! $lineNameExist) { + return response()->json([ + 'status_code' => 'ERROR', + 'status_description' => "Line Name '$lineName' not found", + ], 404); + } + + $lineNamePlantExist = Line::where('plant_id', $plantId)->where('name', $lineName)->first(); + + if (! $lineNamePlantExist) { + return response()->json([ + 'status_code' => 'ERROR', + 'status_description' => "Line Name '$lineName' not found against plant code '$plantCode'", + ], 404); + } + + $itemCodeLineExist = Item::where('code', $itemCode) + ->where('plant_id', $plantId) + ->whereNotNull('line_id') + ->where('line_id', '!=', $lineNamePlantExist->id) + ->first(); + + if ($itemCodeLineExist) { + + $mappedLine = Line::find($itemCodeLineExist->line_id); + + return response()->json([ + 'status_code' => 'ERROR', + 'status_description' => "Item code '$itemCode' is already mapped to line '{$mappedLine->name}'", + ], 404); + } + + $itemCodeLineMapped = Item::where('code', $itemCode) + ->where('plant_id', $plantId) + ->where('line_id', $lineNamePlantExist->id) + ->first(); + + if (! $itemCodeLineMapped) { + return response()->json([ + 'status_code' => 'ERROR', + 'status_description' => 'Not Ok' + ], 200); + } + else{ + return response()->json([ + 'status_code' => 'SUCCESS', + 'status_description' => 'Ok', + ], 200); + } + } + /** * Update the specified resource in storage. */