İlk temizlik tamamlandı bir önceki projeden
This commit is contained in:
@@ -0,0 +1,200 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Api;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Models\Spool;
|
||||
use App\Models\Element;
|
||||
use App\Models\Joint;
|
||||
use App\Models\Welder;
|
||||
use App\Models\WelderAssignment;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
|
||||
class PdfmController extends Controller
|
||||
{
|
||||
// Spools CRUD
|
||||
public function getSpools(): JsonResponse
|
||||
{
|
||||
$spools = Spool::orderBy('spool_no')->get();
|
||||
return response()->json([
|
||||
'success' => true,
|
||||
'data' => $spools
|
||||
]);
|
||||
}
|
||||
|
||||
public function createSpool(Request $request): JsonResponse
|
||||
{
|
||||
$request->validate([
|
||||
'spool_no' => 'required|string|unique:spools',
|
||||
'description' => 'nullable|string',
|
||||
'material' => 'nullable|string',
|
||||
'diameter' => 'nullable|string',
|
||||
'thickness' => 'nullable|string',
|
||||
'length' => 'nullable|string',
|
||||
'classification' => 'nullable|string'
|
||||
]);
|
||||
|
||||
$spool = Spool::create($request->all());
|
||||
return response()->json([
|
||||
'success' => true,
|
||||
'data' => $spool,
|
||||
'message' => 'Spool created successfully!'
|
||||
], 201);
|
||||
}
|
||||
|
||||
// Elements CRUD
|
||||
public function getElements(): JsonResponse
|
||||
{
|
||||
$elements = Element::orderBy('element_code')->get();
|
||||
return response()->json([
|
||||
'success' => true,
|
||||
'data' => $elements
|
||||
]);
|
||||
}
|
||||
|
||||
public function createElement(Request $request): JsonResponse
|
||||
{
|
||||
$request->validate([
|
||||
'element_code' => 'required|string|unique:elements',
|
||||
'element_name' => 'required|string',
|
||||
'element_type' => 'required|string',
|
||||
'material' => 'nullable|string',
|
||||
'diameter' => 'nullable|string',
|
||||
'thickness' => 'nullable|string',
|
||||
'classification' => 'nullable|string',
|
||||
'weight' => 'nullable|numeric'
|
||||
]);
|
||||
|
||||
$element = Element::create($request->all());
|
||||
return response()->json([
|
||||
'success' => true,
|
||||
'data' => $element,
|
||||
'message' => 'Element created successfully!'
|
||||
], 201);
|
||||
}
|
||||
|
||||
// Joints CRUD
|
||||
public function getJoints(): JsonResponse
|
||||
{
|
||||
$joints = Joint::with(['spool', 'elementFrom', 'elementTo', 'welderAssignments.welder'])
|
||||
->orderBy('joint_no')
|
||||
->get();
|
||||
return response()->json([
|
||||
'success' => true,
|
||||
'data' => $joints
|
||||
]);
|
||||
}
|
||||
|
||||
public function createJoint(Request $request): JsonResponse
|
||||
{
|
||||
$request->validate([
|
||||
'joint_no' => 'required|string|unique:joints',
|
||||
'spool_no' => 'required|string|exists:spools,spool_no',
|
||||
'element_from' => 'nullable|string|exists:elements,element_code',
|
||||
'element_to' => 'nullable|string|exists:elements,element_code',
|
||||
'joint_type' => 'nullable|string',
|
||||
'welding_type' => 'nullable|string',
|
||||
'classification' => 'nullable|string'
|
||||
]);
|
||||
|
||||
$joint = Joint::create($request->all());
|
||||
return response()->json([
|
||||
'success' => true,
|
||||
'data' => $joint,
|
||||
'message' => 'Joint created successfully!'
|
||||
], 201);
|
||||
}
|
||||
|
||||
// Welders CRUD
|
||||
public function getWelders(): JsonResponse
|
||||
{
|
||||
$welders = Welder::orderBy('welder_name')->get();
|
||||
return response()->json([
|
||||
'success' => true,
|
||||
'data' => $welders
|
||||
]);
|
||||
}
|
||||
|
||||
public function createWelder(Request $request): JsonResponse
|
||||
{
|
||||
$request->validate([
|
||||
'welder_code' => 'required|string|unique:welders',
|
||||
'name' => 'required|string',
|
||||
'certification' => 'nullable|string',
|
||||
'specialization' => 'nullable|string'
|
||||
]);
|
||||
|
||||
$welder = Welder::create($request->all());
|
||||
return response()->json([
|
||||
'success' => true,
|
||||
'data' => $welder,
|
||||
'message' => 'Welder created successfully!'
|
||||
], 201);
|
||||
}
|
||||
|
||||
// Welder Assignments
|
||||
public function assignWelder(Request $request): JsonResponse
|
||||
{
|
||||
$request->validate([
|
||||
'joint_no' => 'required|string|exists:joints,joint_no',
|
||||
'welder_code' => 'required|string|exists:welders,welder_code',
|
||||
'assigned_date' => 'nullable|date'
|
||||
]);
|
||||
|
||||
$assignment = WelderAssignment::create($request->all());
|
||||
return response()->json([
|
||||
'success' => true,
|
||||
'data' => $assignment,
|
||||
'message' => 'Welder assigned successfully!'
|
||||
], 201);
|
||||
}
|
||||
|
||||
// Auto Generate Spool Number
|
||||
public function generateSpoolNumber(): JsonResponse
|
||||
{
|
||||
$lastSpool = Spool::orderBy('id', 'desc')->first();
|
||||
$nextNumber = $lastSpool ? (int)substr($lastSpool->spool_no, 3) + 1 : 1;
|
||||
$spoolNumber = 'SP-' . str_pad($nextNumber, 3, '0', STR_PAD_LEFT);
|
||||
|
||||
// Auto-create the spool in database so it persists
|
||||
$spool = Spool::create([
|
||||
'spool_no' => $spoolNumber,
|
||||
'description' => 'Generated from PDF Editor'
|
||||
]);
|
||||
|
||||
return response()->json([
|
||||
'success' => true,
|
||||
'data' => ['spool_no' => $spoolNumber, 'id' => $spool->id]
|
||||
]);
|
||||
}
|
||||
|
||||
// Auto Generate Joint Number
|
||||
public function generateJointNumber(Request $request): JsonResponse
|
||||
{
|
||||
// Make spool_no optional with nullable validation
|
||||
$validated = $request->validate(['spool_no' => 'nullable|string']);
|
||||
|
||||
$spoolNo = $validated['spool_no'] ?? 'SP-001'; // Default spool if not provided
|
||||
|
||||
$lastJoint = Joint::where('spool_no', $spoolNo)
|
||||
->orderBy('id', 'desc')
|
||||
->first();
|
||||
|
||||
$nextNumber = $lastJoint ? (int)substr($lastJoint->joint_no, 3) + 1 : 1;
|
||||
$jointNumber = 'J-' . str_pad($nextNumber, 3, '0', STR_PAD_LEFT);
|
||||
|
||||
// Auto-create the joint in database so it persists
|
||||
$joint = Joint::create([
|
||||
'joint_no' => $jointNumber,
|
||||
'spool_no' => $spoolNo,
|
||||
'joint_type' => 'Auto-generated',
|
||||
'description' => 'Generated from PDF Editor'
|
||||
]);
|
||||
|
||||
return response()->json([
|
||||
'success' => true,
|
||||
'data' => ['joint_no' => $jointNumber, 'id' => $joint->id]
|
||||
]);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user