tenantId()) ->orderByDesc('id'); if ($request->filled('search')) { $s = $request->search; $query->where(function ($q) use ($s) { $q->where('work_type', 'like', "%{$s}%") ->orWhere('sub_work_type', 'like', "%{$s}%"); }); } $perPage = $request->integer('per_page', 15); $workVolumes = $query->paginate($perPage); return response()->json($workVolumes); } public function store(Request $request): JsonResponse { $validated = $request->validate([ 'work_type' => 'required|string|max:200', 'sub_work_type' => 'required|string|max:200', 'unit' => 'required|string|max:50', 'design_quantity' => 'nullable|numeric|min:0', 'daily_report_applied' => 'nullable|boolean', ]); $validated['tenant_id'] = $this->tenantId(); $validated['design_quantity'] = $validated['design_quantity'] ?? 0; $validated['daily_report_applied'] = $validated['daily_report_applied'] ?? false; $workVolume = PmisWorkVolume::create($validated); return response()->json($workVolume, 201); } public function update(Request $request, int $id): JsonResponse { $workVolume = PmisWorkVolume::tenant($this->tenantId())->findOrFail($id); $validated = $request->validate([ 'work_type' => 'sometimes|required|string|max:200', 'sub_work_type' => 'sometimes|required|string|max:200', 'unit' => 'sometimes|required|string|max:50', 'design_quantity' => 'nullable|numeric|min:0', 'daily_report_applied' => 'nullable|boolean', ]); $workVolume->update($validated); return response()->json($workVolume); } public function destroy(int $id): JsonResponse { $workVolume = PmisWorkVolume::tenant($this->tenantId())->findOrFail($id); $workVolume->delete(); return response()->json(['message' => '삭제되었습니다.']); } }