feat: rename featured_variants to group_items and update related references

This commit is contained in:
ncoronel 2026-07-17 14:31:05 -03:00
parent 84c9fa4c9d
commit 615eacea91
8 changed files with 40 additions and 18 deletions

View File

@ -12,9 +12,9 @@ class CatalogController extends Controller
public function index(string $tenant): JsonResponse
{
$featuredGroups = FeaturedGroup::where('tenant_codigo', $tenant)
->with(['featuredVariants' => function ($query) {
->with(['groupItems' => function ($query) {
$query->orderBy('order');
}, 'featuredVariants.variant.product', 'featuredVariants.variant.attachments', 'featuredVariants.variant.product.attachments'])
}, 'groupItems.variant.product', 'groupItems.variant.attachments', 'groupItems.variant.product.attachments'])
->orderBy('group_order')
->get();

View File

@ -32,7 +32,7 @@ class FeaturedGroupController extends Controller
public function show(string $tenant, FeaturedGroup $featuredGroup): FeaturedGroupResource
{
abort_if($featuredGroup->tenant_codigo !== $tenant, 404);
return new FeaturedGroupResource($featuredGroup->load('featuredVariants'));
return new FeaturedGroupResource($featuredGroup->load('groupItems'));
}
public function update(UpdateFeaturedGroupRequest $request, string $tenant, FeaturedGroup $featuredGroup): FeaturedGroupResource

View File

@ -3,7 +3,7 @@
namespace App\Domains\Catalog\Controllers;
use App\Domains\Catalog\Models\FeaturedGroup;
use App\Domains\Catalog\Models\FeaturedVariant;
use App\Domains\Catalog\Models\GroupItem;
use App\Domains\Catalog\Requests\StoreFeaturedVariantRequest;
use App\Domains\Catalog\Requests\UpdateFeaturedVariantRequest;
use App\Domains\Catalog\Resources\FeaturedVariantResource;
@ -16,24 +16,24 @@ class FeaturedVariantController extends Controller
public function index(string $tenant, FeaturedGroup $featuredGroup): AnonymousResourceCollection
{
abort_if($featuredGroup->tenant_codigo !== $tenant, 404);
return FeaturedVariantResource::collection($featuredGroup->featuredVariants);
return FeaturedVariantResource::collection($featuredGroup->groupItems);
}
public function store(StoreFeaturedVariantRequest $request, string $tenant, FeaturedGroup $featuredGroup): FeaturedVariantResource
{
abort_if($featuredGroup->tenant_codigo !== $tenant, 404);
$variant = $featuredGroup->featuredVariants()->create($request->validated());
$variant = $featuredGroup->groupItems()->create($request->validated());
return new FeaturedVariantResource($variant);
}
public function update(UpdateFeaturedVariantRequest $request, string $tenant, FeaturedGroup $featuredGroup, FeaturedVariant $featuredVariant): FeaturedVariantResource
public function update(UpdateFeaturedVariantRequest $request, string $tenant, FeaturedGroup $featuredGroup, GroupItem $featuredVariant): FeaturedVariantResource
{
abort_if($featuredGroup->tenant_codigo !== $tenant || $featuredVariant->featured_group_id !== $featuredGroup->id, 404);
$featuredVariant->update($request->validated());
return new FeaturedVariantResource($featuredVariant);
}
public function destroy(string $tenant, FeaturedGroup $featuredGroup, FeaturedVariant $featuredVariant): JsonResponse
public function destroy(string $tenant, FeaturedGroup $featuredGroup, GroupItem $featuredVariant): JsonResponse
{
abort_if($featuredGroup->tenant_codigo !== $tenant || $featuredVariant->featured_group_id !== $featuredGroup->id, 404);
$featuredVariant->delete();

View File

@ -14,8 +14,8 @@ class FeaturedGroup extends Model
'group_order',
];
public function featuredVariants(): HasMany
public function groupItems(): HasMany
{
return $this->hasMany(FeaturedVariant::class);
return $this->hasMany(GroupItem::class);
}
}

View File

@ -2,13 +2,12 @@
namespace App\Domains\Catalog\Models;
use App\Domains\Catalog\Models\ProductVariant;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
class FeaturedVariant extends Model
class GroupItem extends Model
{
protected $table = 'featured_variants';
protected $table = 'group_items';
protected $fillable = [
'featured_group_id',

View File

@ -4,7 +4,7 @@ namespace App\Domains\Catalog\Resources;
use Illuminate\Http\Request;
use Illuminate\Http\Resources\Json\JsonResource;
use App\Domains\Catalog\Models\FeaturedVariant;
use App\Domains\Catalog\Models\GroupItem;
class CatalogFeaturedGroupResource extends JsonResource
{
@ -15,9 +15,9 @@ class CatalogFeaturedGroupResource extends JsonResource
'title' => $this->group_name,
'layout' => $this->product_layout,
'group_order' => $this->group_order,
'items' => $this->whenLoaded('featuredVariants', function () use ($request) {
return $this->featuredVariants->map(function (FeaturedVariant $featuredVariant) use ($request) {
$variant = $featuredVariant->variant;
'items' => $this->whenLoaded('groupItems', function () use ($request) {
return $this->groupItems->map(function (GroupItem $groupItem) use ($request) {
$variant = $groupItem->variant;
$variantResource = (new ProductVariantResource($variant))->toArray($request);
if ($this->product_layout === 'row' || $this->product_layout === 'column_with_cart' || $this->product_layout === 'vertical_with_cart') {

View File

@ -15,7 +15,7 @@ class FeaturedGroupResource extends JsonResource
'group_name' => $this->group_name,
'product_layout' => $this->product_layout,
'group_order' => $this->group_order,
'featured_variants' => FeaturedVariantResource::collection($this->whenLoaded('featuredVariants')),
'featured_variants' => FeaturedVariantResource::collection($this->whenLoaded('groupItems')),
];
}
}

View File

@ -0,0 +1,23 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::rename('featured_variants', 'group_items');
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::rename('group_items', 'featured_variants');
}
};