where(function ($q) use ($search) { $q->where('plate_number', 'like', "%{$search}%") ->orWhere('model', 'like', "%{$search}%") ->orWhere('driver', 'like', "%{$search}%"); }); } if (! empty($filters['ownership_type'])) { $query->where('ownership_type', $filters['ownership_type']); } if (! empty($filters['status'])) { $query->where('status', $filters['status']); } $query->orderByDesc('id'); return $query->paginate($filters['per_page'] ?? 20); } public function show(int $id): CorporateVehicle { $vehicle = CorporateVehicle::find($id); if (! $vehicle) { throw new NotFoundHttpException('차량을 찾을 수 없습니다.'); } return $vehicle; } public function store(array $data): CorporateVehicle { return DB::transaction(function () use ($data) { $data['tenant_id'] = $this->tenantId(); return CorporateVehicle::create($data); }); } public function update(int $id, array $data): CorporateVehicle { return DB::transaction(function () use ($id, $data) { $vehicle = CorporateVehicle::find($id); if (! $vehicle) { throw new NotFoundHttpException('차량을 찾을 수 없습니다.'); } $vehicle->update($data); return $vehicle->fresh(); }); } public function destroy(int $id): bool { return DB::transaction(function () use ($id) { $vehicle = CorporateVehicle::find($id); if (! $vehicle) { throw new NotFoundHttpException('차량을 찾을 수 없습니다.'); } return $vehicle->delete(); }); } /** * 드롭다운 목록 (차량일지, 정비이력에서 사용) */ public function dropdown(): array { return CorporateVehicle::where('status', '!=', 'disposed') ->orderBy('plate_number') ->get(['id', 'plate_number', 'model']) ->toArray(); } }