tenantId()) ->orderByDesc('id'); if ($request->filled('company')) { $query->where('company_name', 'like', '%' . $request->company . '%'); } if ($request->filled('equipment_name')) { $query->where('equipment_name', 'like', '%' . $request->equipment_name . '%'); } if ($request->filled('search')) { $s = $request->search; $query->where(function ($q) use ($s) { $q->where('equipment_name', 'like', "%{$s}%") ->orWhere('equipment_code', 'like', "%{$s}%") ->orWhere('equipment_number', 'like', "%{$s}%") ->orWhere('operator', 'like', "%{$s}%"); }); } $perPage = $request->integer('per_page', 15); $equipments = $query->paginate($perPage); return response()->json($equipments); } public function store(Request $request): JsonResponse { $validated = $request->validate([ 'company_name' => 'required|string|max:200', 'equipment_code' => 'nullable|string|max:50', 'equipment_name' => 'required|string|max:200', 'specification' => 'nullable|string|max:300', 'unit' => 'nullable|string|max:50', 'equipment_number' => 'required|string|max:100', 'operator' => 'nullable|string|max:50', 'inspection_end_date' => 'nullable|date', 'inspection_not_applicable' => 'nullable|boolean', 'insurance_end_date' => 'nullable|date', 'insurance_not_applicable' => 'nullable|boolean', ]); $validated['tenant_id'] = $this->tenantId(); $validated['inspection_not_applicable'] = $validated['inspection_not_applicable'] ?? false; $validated['insurance_not_applicable'] = $validated['insurance_not_applicable'] ?? false; $equipment = PmisEquipment::create($validated); return response()->json($equipment, 201); } public function update(Request $request, int $id): JsonResponse { $equipment = PmisEquipment::tenant($this->tenantId())->findOrFail($id); $validated = $request->validate([ 'company_name' => 'sometimes|required|string|max:200', 'equipment_code' => 'nullable|string|max:50', 'equipment_name' => 'sometimes|required|string|max:200', 'specification' => 'nullable|string|max:300', 'unit' => 'nullable|string|max:50', 'equipment_number' => 'sometimes|required|string|max:100', 'operator' => 'nullable|string|max:50', 'inspection_end_date' => 'nullable|date', 'inspection_not_applicable' => 'nullable|boolean', 'insurance_end_date' => 'nullable|date', 'insurance_not_applicable' => 'nullable|boolean', ]); $equipment->update($validated); return response()->json($equipment); } public function destroy(int $id): JsonResponse { $equipment = PmisEquipment::tenant($this->tenantId())->findOrFail($id); $equipment->delete(); return response()->json(['message' => '삭제되었습니다.']); } }