select(['id', 'title', 'content', 'department_id', 'enrollment_year', 'created_by', 'created_at']) ->with(['department:id,name', 'creator.profile']) ->when($search, fn ($q) => $q->where('title', 'like', "%{$search}%")) ->orderBy($sort, $direction) ->paginate($perPage); } public function create(array $data): Announcement { return Announcement::create([ 'title' => $data['title'], 'content' => $data['content'], 'department_id' => $data['department_id'] ?? null, 'enrollment_year' => $data['enrollment_year'] ?? null, 'created_by' => auth()->id(), ]); } public function update(Announcement $announcement, array $data): Announcement { $announcement->title = $data['title']; $announcement->content = $data['content']; $announcement->department_id = $data['department_id'] ?? null; $announcement->enrollment_year = $data['enrollment_year'] ?? null; $announcement->update(); return $announcement; } public function delete(Announcement $announcement): bool { return $announcement->delete(); } }