feat: implement product creation workflow with variants, attribute definitions, and validation logic

This commit is contained in:
2026-06-29 11:02:04 -03:00
parent 9d3ed17c00
commit 18504594eb
23 changed files with 774 additions and 146 deletions

View File

@@ -6,9 +6,9 @@ use Illuminate\Http\Request;
use Illuminate\Http\Resources\Json\JsonResource;
/**
* @mixin \App\Domains\Catalog\Models\ProductAttributeOption
* @mixin \App\Domains\Catalog\Models\AttributeOption
*/
class ProductAttributeOptionResource extends JsonResource
class AttributeOptionResource extends JsonResource
{
/**
* @return array<string, mixed>

View File

@@ -6,9 +6,9 @@ use Illuminate\Http\Request;
use Illuminate\Http\Resources\Json\JsonResource;
/**
* @mixin \App\Domains\Catalog\Models\ProductAttribute
* @mixin \App\Domains\Catalog\Models\Attribute
*/
class ProductAttributeResource extends JsonResource
class AttributeResource extends JsonResource
{
/**
* @return array<string, mixed>
@@ -23,7 +23,7 @@ class ProductAttributeResource extends JsonResource
'is_required' => $this->is_required,
'metadata_schema' => $this->metadata_schema,
'type' => $this->type?->value ?? $this->type,
'options' => ProductAttributeOptionResource::collection($this->whenLoaded('options')),
'options' => AttributeOptionResource::collection($this->whenLoaded('options')),
];
}
}

View File

@@ -23,6 +23,7 @@ class ProductResource extends JsonResource
'nombre' => $this->nombre,
'descripcion' => $this->descripcion,
'precio' => $this->precio,
'variants' => ProductVariantResource::collection($this->whenLoaded('variants')),
'created_at' => $this->created_at,
'updated_at' => $this->updated_at,
];

View File

@@ -20,7 +20,7 @@ class ProductVariantDefinitionResource extends JsonResource
'producto_variante_id' => $this->producto_variante_id,
'attribute_id' => $this->attribute_id,
'value' => $this->value,
'attribute' => ProductAttributeResource::make($this->whenLoaded('attribute')),
'attribute' => AttributeResource::make($this->whenLoaded('attribute')),
];
}
}