Skip to content

Commit 0caee59

Browse files
committed
Updated public routes
1 parent 02e68ec commit 0caee59

File tree

8 files changed

+68
-24
lines changed

8 files changed

+68
-24
lines changed

app/Http/Controllers/Public/BarController.php

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,19 @@
44

55
namespace Kami\Cocktail\Http\Controllers\Public;
66

7+
use Kami\Cocktail\Models\Bar;
78
use Kami\Cocktail\Http\Controllers\Controller;
9+
use Kami\Cocktail\Http\Resources\Public\BarResource;
810

911
class BarController extends Controller
1012
{
11-
public function show(string $barSlug, string $id): null
13+
public function show(int $barId): BarResource
1214
{
13-
return null;
15+
$bar = Bar::findOrFail($barId);
16+
if (!$bar->is_public) {
17+
abort(404);
18+
}
19+
20+
return new BarResource($bar);
1421
}
1522
}

app/Http/Controllers/Public/CocktailController.php

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,16 +12,14 @@
1212
use Illuminate\Http\Resources\Json\JsonResource;
1313
use Spatie\QueryBuilder\Exceptions\InvalidFilterQuery;
1414
use Kami\Cocktail\Http\Filters\PublicCocktailQueryFilter;
15-
use Kami\Cocktail\Http\Resources\ExploreCocktailResource;
1615
use Kami\Cocktail\Http\Resources\Public\CocktailResource;
1716

1817
class CocktailController extends Controller
1918
{
2019
public function index(Request $request, int $barId): JsonResource
2120
{
2221
$bar = Bar::findOrFail($barId);
23-
24-
if (!$bar->isPublic()) {
22+
if (!$bar->is_public) {
2523
abort(404);
2624
}
2725

@@ -62,10 +60,15 @@ public function index(Request $request, int $barId): JsonResource
6260
return CocktailResource::collection($cocktails->withQueryString());
6361
}
6462

65-
public function show(string $barSlug, string $id): ExploreCocktailResource
63+
public function show(int $barId, string $slug): CocktailResource
6664
{
67-
$cocktail = Cocktail::where('public_id', $id)->firstOrFail()->load('ingredients.ingredient');
65+
$bar = Bar::findOrFail($barId);
66+
if (!$bar->is_public) {
67+
abort(404);
68+
}
69+
70+
$cocktail = Cocktail::where('slug', $slug)->firstOrFail()->load('ingredients.ingredient');
6871

69-
return new ExploreCocktailResource($cocktail);
72+
return new CocktailResource($cocktail);
7073
}
7174
}

app/Http/Controllers/Public/MenuController.php

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,13 @@
1212

1313
class MenuController extends Controller
1414
{
15-
#[OAT\Get(path: '/public/{barId}/menu', tags: ['Public'], operationId: 'publicBarMenu', description: 'Show a public bar menu details', summary: 'Show public menu', parameters: [
16-
new OAT\Parameter(name: 'barId', in: 'path', required: true, description: 'Bar database id', schema: new OAT\Schema(type: 'number')),
17-
], security: [])]
18-
#[BAO\SuccessfulResponse(content: [
19-
new BAO\WrapObjectWithData(MenuPublicResource::class),
20-
])]
21-
#[BAO\NotFoundResponse]
15+
// #[OAT\Get(path: '/public/{barId}/menu', tags: ['Public'], operationId: 'publicBarMenu', description: 'Show a public bar menu details', summary: 'Show public menu', parameters: [
16+
// new OAT\Parameter(name: 'barId', in: 'path', required: true, description: 'Bar database id', schema: new OAT\Schema(type: 'number')),
17+
// ], security: [])]
18+
// #[BAO\SuccessfulResponse(content: [
19+
// new BAO\WrapObjectWithData(MenuPublicResource::class),
20+
// ])]
21+
// #[BAO\NotFoundResponse]
2222
public function show(string $barId): MenuPublicResource
2323
{
2424
$menu = Menu::select('menus.*')

app/Http/Resources/BarResource.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ public function toArray($request)
9999
$this->relationLoaded('images'),
100100
fn () => ImageResource::collection($this->images)
101101
),
102-
'is_public' => $this->isPublic(),
102+
'is_public' => (bool) $this->is_public,
103103
];
104104
}
105105
}
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace Kami\Cocktail\Http\Resources\Public;
6+
7+
use Kami\Cocktail\Models\Image;
8+
use Illuminate\Http\Resources\Json\JsonResource;
9+
10+
/**
11+
* @mixin \Kami\Cocktail\Models\Bar
12+
*/
13+
class BarResource extends JsonResource
14+
{
15+
/**
16+
* Transform the resource into an array.
17+
*
18+
* @param \Illuminate\Http\Request $request
19+
* @return array<string, mixed>
20+
*/
21+
public function toArray($request)
22+
{
23+
return [
24+
'id' => $this->id,
25+
'slug' => $this->slug,
26+
'name' => $this->name,
27+
'subtitle' => $this->subtitle,
28+
'description' => $this->description,
29+
'images' => $this->images->map(function (Image $image) {
30+
return [
31+
'sort' => $image->sort,
32+
'placeholder_hash' => $image->placeholder_hash,
33+
'url' => $image->getImageUrl(),
34+
'copyright' => $image->copyright,
35+
];
36+
}),
37+
];
38+
}
39+
}

app/Http/Resources/Public/CocktailResource.php

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66

77
use Kami\Cocktail\Models\Image;
88
use Kami\Cocktail\Models\CocktailIngredient;
9-
use Kami\Cocktail\Http\Resources\AmountFormats;
109
use Illuminate\Http\Resources\Json\JsonResource;
1110
use Kami\Cocktail\Models\CocktailIngredientSubstitute;
1211

@@ -24,8 +23,8 @@ class CocktailResource extends JsonResource
2423
public function toArray($request)
2524
{
2625
return [
27-
'name' => $this->name,
2826
'slug' => $this->slug,
27+
'name' => $this->name,
2928
'instructions' => e($this->instructions),
3029
'garnish' => e($this->garnish),
3130
'description' => e($this->description),

app/Models/Bar.php

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ class Bar extends Model implements UploadableInterface
2929

3030
protected $casts = [
3131
'settings' => 'array',
32+
'is_public' => 'boolean',
3233
];
3334

3435
public function getUploadPath(): string
@@ -199,9 +200,4 @@ public function getShelfCocktailsOnce(): array
199200
)->values()->toArray();
200201
});
201202
}
202-
203-
public function isPublic(): bool
204-
{
205-
return (bool) $this->is_public;
206-
}
207203
}

routes/api.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@
8989
Route::prefix('public')->group(function () {
9090
Route::get('/{barId}', [Public\BarController::class, 'show']);
9191
Route::get('/{barId}/cocktails', [Public\CocktailController::class, 'index']);
92-
Route::get('/{barId}/cocktails/{id}', [Public\CocktailController::class, 'show']);
92+
Route::get('/{barId}/cocktails/{slug}', [Public\CocktailController::class, 'show']);
9393
Route::get('/{barId}/menu', [Public\MenuController::class, 'show']);
9494
});
9595

0 commit comments

Comments
 (0)