Skip to content

Commit 404ff55

Browse files
authored
Merge pull request #86
development
2 parents 5b3372e + 865934e commit 404ff55

File tree

4 files changed

+38
-2
lines changed

4 files changed

+38
-2
lines changed

app/Http/Controllers/API/RecipeController.php

+14-2
Original file line numberDiff line numberDiff line change
@@ -42,8 +42,20 @@ public function index(RecipeFilterRequest $request)
4242
return $query->whereHas('tags', function ($query) use ($tags) {
4343
$query->whereIn('tag_id', $tags);
4444
});
45-
})
46-
->get();
45+
})->get();
46+
47+
switch ($request->sort) {
48+
case 'rating_asc':
49+
$recipes = $recipes->sortBy(function ($recipe) {
50+
return $recipe->countAverageRatingForRecipe();
51+
});
52+
break;
53+
case 'rating_desc':
54+
$recipes = $recipes->sortByDesc(function ($recipe) {
55+
return $recipe->countAverageRatingForRecipe();
56+
});
57+
break;
58+
}
4759

4860
return ShortRecipeResource::collection($recipes);
4961
}

app/Http/Controllers/Swagger/RecipeController.php

+10
Original file line numberDiff line numberDiff line change
@@ -379,6 +379,16 @@
379379
* ),
380380
* description="Filter recipes by tag IDs"
381381
* ),
382+
* @OA\Parameter(
383+
* name="sort",
384+
* in="query",
385+
* required=false,
386+
* @OA\Schema(
387+
* type="string",
388+
* enum={"rating_asc", "rating_desc"}
389+
* ),
390+
* description="Sort recipes by average rating in ascending or descending order"
391+
* ),
382392
* @OA\Response(
383393
* response=200,
384394
* description="List of recipes retrieved successfully",

app/Http/Requests/RecipeFilterRequest.php

+1
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ public function rules(): array
2525
'title' => 'nullable|string|max:255',
2626
'tags' => 'nullable|array',
2727
'tags.*' => 'integer|exists:tags,id',
28+
'sort' => 'nullable|string|in:rating_asc,rating_desc'
2829
];
2930
}
3031
}

storage/api-docs/api-docs.json

+13
Original file line numberDiff line numberDiff line change
@@ -852,6 +852,19 @@
852852
"type": "integer"
853853
}
854854
}
855+
},
856+
{
857+
"name": "sort",
858+
"in": "query",
859+
"description": "Sort recipes by average rating in ascending or descending order",
860+
"required": false,
861+
"schema": {
862+
"type": "string",
863+
"enum": [
864+
"rating_asc",
865+
"rating_desc"
866+
]
867+
}
855868
}
856869
],
857870
"responses": {

0 commit comments

Comments
 (0)