FAQS index api with sorting

PHOTO EMBED

Fri May 03 2024 10:43:25 GMT+0000 (Coordinated Universal Time)

Saved by @zeinrahmad99

  public function index(Request $request)
    {
        $request->validate([
            'per_page' => ['integer', 'min:1'],
            'sort_by' => ['string', 'in:question,answer'],
            'sort_order' => ['string', 'in:asc,desc'],
        ]);

        $q = FAQ::query();

        if ($request->q) {
            $searchTerm = $request->q;
            $q->where('question', 'like', "%{$searchTerm}%")
                ->orWhere('answer', 'like', "%{$searchTerm}%");
        }

        $sortBy = $request->sort_by ?? 'question';
        $sortOrder = $request->sort_order ?? 'asc';

        $q->orderBy($sortBy, $sortOrder);

        $faqs = $q->paginate($request->per_page ?? 10);
        return FAQResource::collection($faqs);
    }
content_copyCOPY