feat: refactor featured variants to group items, including new controller and resource implementations
This commit is contained in:
@@ -6,23 +6,23 @@ use App\Domains\Bundle\Models\Bundle;
|
|||||||
use App\Domains\Catalog\Models\FeaturedGroup;
|
use App\Domains\Catalog\Models\FeaturedGroup;
|
||||||
use App\Domains\Catalog\Models\GroupItem;
|
use App\Domains\Catalog\Models\GroupItem;
|
||||||
use App\Domains\Catalog\Models\ProductVariant;
|
use App\Domains\Catalog\Models\ProductVariant;
|
||||||
use App\Domains\Catalog\Requests\StoreFeaturedVariantRequest;
|
use App\Domains\Catalog\Requests\StoreGroupItemRequest;
|
||||||
use App\Domains\Catalog\Requests\UpdateFeaturedVariantRequest;
|
use App\Domains\Catalog\Requests\UpdateGroupItemRequest;
|
||||||
use App\Domains\Catalog\Resources\FeaturedVariantResource;
|
use App\Domains\Catalog\Resources\GroupItemResource;
|
||||||
use Illuminate\Http\JsonResponse;
|
use Illuminate\Http\JsonResponse;
|
||||||
use Illuminate\Http\Resources\Json\AnonymousResourceCollection;
|
use Illuminate\Http\Resources\Json\AnonymousResourceCollection;
|
||||||
use Illuminate\Routing\Controller;
|
use Illuminate\Routing\Controller;
|
||||||
|
|
||||||
class FeaturedVariantController extends Controller
|
class GroupItemController extends Controller
|
||||||
{
|
{
|
||||||
public function index(string $tenant, FeaturedGroup $featuredGroup): AnonymousResourceCollection
|
public function index(string $tenant, FeaturedGroup $featuredGroup): AnonymousResourceCollection
|
||||||
{
|
{
|
||||||
abort_if($featuredGroup->tenant_codigo !== $tenant, 404);
|
abort_if($featuredGroup->tenant_codigo !== $tenant, 404);
|
||||||
|
|
||||||
return FeaturedVariantResource::collection($featuredGroup->groupItems);
|
return GroupItemResource::collection($featuredGroup->groupItems);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function store(StoreFeaturedVariantRequest $request, string $tenant, FeaturedGroup $featuredGroup): FeaturedVariantResource
|
public function store(StoreGroupItemRequest $request, string $tenant, FeaturedGroup $featuredGroup): GroupItemResource
|
||||||
{
|
{
|
||||||
abort_if($featuredGroup->tenant_codigo !== $tenant, 404);
|
abort_if($featuredGroup->tenant_codigo !== $tenant, 404);
|
||||||
|
|
||||||
@@ -41,21 +41,21 @@ class FeaturedVariantController extends Controller
|
|||||||
'order' => $request->validated('order'),
|
'order' => $request->validated('order'),
|
||||||
]);
|
]);
|
||||||
|
|
||||||
return new FeaturedVariantResource($groupItem);
|
return new GroupItemResource($groupItem);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function update(UpdateFeaturedVariantRequest $request, string $tenant, FeaturedGroup $featuredGroup, GroupItem $featuredVariant): FeaturedVariantResource
|
public function update(UpdateGroupItemRequest $request, string $tenant, FeaturedGroup $featuredGroup, GroupItem $groupItem): GroupItemResource
|
||||||
{
|
{
|
||||||
abort_if($featuredGroup->tenant_codigo !== $tenant || $featuredVariant->featured_group_id !== $featuredGroup->id, 404);
|
abort_if($featuredGroup->tenant_codigo !== $tenant || $groupItem->featured_group_id !== $featuredGroup->id, 404);
|
||||||
$featuredVariant->update($request->validated());
|
$groupItem->update($request->validated());
|
||||||
|
|
||||||
return new FeaturedVariantResource($featuredVariant);
|
return new GroupItemResource($groupItem);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function destroy(string $tenant, FeaturedGroup $featuredGroup, GroupItem $featuredVariant): JsonResponse
|
public function destroy(string $tenant, FeaturedGroup $featuredGroup, GroupItem $groupItem): JsonResponse
|
||||||
{
|
{
|
||||||
abort_if($featuredGroup->tenant_codigo !== $tenant || $featuredVariant->featured_group_id !== $featuredGroup->id, 404);
|
abort_if($featuredGroup->tenant_codigo !== $tenant || $groupItem->featured_group_id !== $featuredGroup->id, 404);
|
||||||
$featuredVariant->delete();
|
$groupItem->delete();
|
||||||
|
|
||||||
return response()->json(null, 204);
|
return response()->json(null, 204);
|
||||||
}
|
}
|
||||||
@@ -7,7 +7,7 @@ use App\Domains\Catalog\Models\ProductVariant;
|
|||||||
use Illuminate\Foundation\Http\FormRequest;
|
use Illuminate\Foundation\Http\FormRequest;
|
||||||
use Illuminate\Validation\Rule;
|
use Illuminate\Validation\Rule;
|
||||||
|
|
||||||
class StoreFeaturedVariantRequest extends FormRequest
|
class StoreGroupItemRequest extends FormRequest
|
||||||
{
|
{
|
||||||
public function authorize(): bool
|
public function authorize(): bool
|
||||||
{
|
{
|
||||||
@@ -4,7 +4,7 @@ namespace App\Domains\Catalog\Requests;
|
|||||||
|
|
||||||
use Illuminate\Foundation\Http\FormRequest;
|
use Illuminate\Foundation\Http\FormRequest;
|
||||||
|
|
||||||
class UpdateFeaturedVariantRequest extends FormRequest
|
class UpdateGroupItemRequest extends FormRequest
|
||||||
{
|
{
|
||||||
public function authorize(): bool
|
public function authorize(): bool
|
||||||
{
|
{
|
||||||
@@ -15,7 +15,7 @@ class FeaturedGroupResource extends JsonResource
|
|||||||
'group_name' => $this->group_name,
|
'group_name' => $this->group_name,
|
||||||
'product_layout' => $this->product_layout,
|
'product_layout' => $this->product_layout,
|
||||||
'group_order' => $this->group_order,
|
'group_order' => $this->group_order,
|
||||||
'featured_variants' => FeaturedVariantResource::collection($this->whenLoaded('groupItems')),
|
'group_items' => GroupItemResource::collection($this->whenLoaded('groupItems')),
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ use App\Domains\Catalog\Models\ProductVariant;
|
|||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
use Illuminate\Http\Resources\Json\JsonResource;
|
use Illuminate\Http\Resources\Json\JsonResource;
|
||||||
|
|
||||||
class FeaturedVariantResource extends JsonResource
|
class GroupItemResource extends JsonResource
|
||||||
{
|
{
|
||||||
public function toArray(Request $request): array
|
public function toArray(Request $request): array
|
||||||
{
|
{
|
||||||
@@ -1,13 +1,13 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
use App\Domains\Catalog\Controllers\AttributeController;
|
||||||
use App\Domains\Catalog\Controllers\BrandController;
|
use App\Domains\Catalog\Controllers\BrandController;
|
||||||
use App\Domains\Catalog\Controllers\CatalogController;
|
use App\Domains\Catalog\Controllers\CatalogController;
|
||||||
use App\Domains\Catalog\Controllers\CategoryController;
|
use App\Domains\Catalog\Controllers\CategoryController;
|
||||||
use App\Domains\Catalog\Controllers\ProductController;
|
|
||||||
use App\Domains\Catalog\Controllers\AttributeController;
|
|
||||||
use App\Domains\Catalog\Controllers\ProductVariantController;
|
|
||||||
use App\Domains\Catalog\Controllers\FeaturedGroupController;
|
use App\Domains\Catalog\Controllers\FeaturedGroupController;
|
||||||
use App\Domains\Catalog\Controllers\FeaturedVariantController;
|
use App\Domains\Catalog\Controllers\GroupItemController;
|
||||||
|
use App\Domains\Catalog\Controllers\ProductController;
|
||||||
|
use App\Domains\Catalog\Controllers\ProductVariantController;
|
||||||
use Illuminate\Support\Facades\Route;
|
use Illuminate\Support\Facades\Route;
|
||||||
|
|
||||||
Route::prefix('tenants/{tenant:codigo}')->group(function (): void {
|
Route::prefix('tenants/{tenant:codigo}')->group(function (): void {
|
||||||
@@ -22,10 +22,10 @@ Route::prefix('tenants/{tenant:codigo}')->group(function (): void {
|
|||||||
'variants' => 'productVariant',
|
'variants' => 'productVariant',
|
||||||
]);
|
]);
|
||||||
Route::apiResource('featured-groups', FeaturedGroupController::class);
|
Route::apiResource('featured-groups', FeaturedGroupController::class);
|
||||||
Route::apiResource('featured-groups.variants', FeaturedVariantController::class)
|
Route::apiResource('featured-groups.items', GroupItemController::class)
|
||||||
->only(['index', 'store', 'update', 'destroy'])
|
->only(['index', 'store', 'update', 'destroy'])
|
||||||
->parameters([
|
->parameters([
|
||||||
'featured-groups' => 'featuredGroup',
|
'featured-groups' => 'featuredGroup',
|
||||||
'variants' => 'featuredVariant',
|
'items' => 'groupItem',
|
||||||
]);
|
]);
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user