paginate($limit); } return $baseQuery->get(); } public function storeDepartment(array $departmentData): Department { return DB::transaction(function () use ($departmentData) { $department = Department::create($departmentData); return $department; }); } public function getDepartmentById(int $id) { return Department::findOrFail($id); } public function updateDepartment(int $id, array $departmentData) { $department = $this->getDepartmentById($id); return DB::transaction(function () use ($department, $departmentData) { $department->update($departmentData); return $department; }); } public function deleteDepartment(int $id) { return DB::transaction(function () use ($id) { $department = $this->getDepartmentById($id); $department->delete(); return $department; }); } public function pluck(callable $query = null) { $baseQuery = Department::query(); if (is_callable($query)) { $query($baseQuery); } return $baseQuery->pluck('title', 'id'); } }