feat(tenant): separate admin and storefront website types

This commit is contained in:
2026-09-17 14:25:46 -03:00
parent b9b5f8ec9c
commit 6bc784519f
31 changed files with 325 additions and 143 deletions

View File

@@ -3,7 +3,7 @@
namespace App\Domains\Tenant\Models;
use App\Domains\Attachable\Models\Attachment;
use App\Domains\Integration\Models\WebsiteTypeIntegration;
use App\Domains\Integration\Models\AdminWebsiteTypeIntegration;
use Illuminate\Database\Eloquent\Attributes\Fillable;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
@@ -31,16 +31,16 @@ use Illuminate\Database\Eloquent\Relations\HasMany;
'footer_logo',
'favicon_id',
])]
class WebsiteType extends Model
class AdminWebsiteType extends Model
{
use HasFactory;
protected $table = 'website_type';
protected $table = 'admin_website_types';
/** @return HasMany<WebsiteTypeIntegration, $this> */
/** @return HasMany<AdminWebsiteTypeIntegration, $this> */
public function integrations(): HasMany
{
return $this->hasMany(WebsiteTypeIntegration::class, 'website_type_code', 'codigo');
return $this->hasMany(AdminWebsiteTypeIntegration::class, 'admin_website_type_code', 'codigo');
}
/**
@@ -67,19 +67,11 @@ class WebsiteType extends Model
return $this->belongsTo(Attachment::class, 'favicon_id');
}
/**
* @return HasMany<WebsiteTypeExtra, $this>
*/
public function extras(): HasMany
{
return $this->hasMany(WebsiteTypeExtra::class, 'website_type_code', 'codigo');
}
/**
* @return HasMany<Tenant, $this>
*/
public function tenants(): HasMany
{
return $this->hasMany(Tenant::class, 'website_type_code', 'codigo');
return $this->hasMany(Tenant::class, 'admin_website_type_code', 'codigo');
}
}

View File

@@ -0,0 +1,28 @@
<?php
namespace App\Domains\Tenant\Models;
use Illuminate\Database\Eloquent\Attributes\Fillable;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\HasMany;
#[Fillable(['codigo', 'nombre'])]
class StorefrontWebsiteType extends Model
{
use HasFactory;
protected $table = 'storefront_website_types';
/** @return HasMany<StorefrontWebsiteTypeExtra, $this> */
public function extras(): HasMany
{
return $this->hasMany(StorefrontWebsiteTypeExtra::class, 'storefront_website_type_code', 'codigo');
}
/** @return HasMany<Tenant, $this> */
public function tenants(): HasMany
{
return $this->hasMany(Tenant::class, 'storefront_website_type_code', 'codigo');
}
}

View File

@@ -9,18 +9,18 @@ use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\Relations\HasMany;
#[Fillable([
'website_type_code',
'storefront_website_type_code',
'codigo',
'nombre',
'descripcion',
'is_required',
'config_schema',
])]
class WebsiteTypeExtra extends Model
class StorefrontWebsiteTypeExtra extends Model
{
use HasFactory;
protected $table = 'website_type_extras';
protected $table = 'storefront_website_type_extras';
/**
* @return array<string, string>
@@ -34,11 +34,11 @@ class WebsiteTypeExtra extends Model
}
/**
* @return BelongsTo<WebsiteType, $this>
* @return BelongsTo<StorefrontWebsiteType, $this>
*/
public function websiteType(): BelongsTo
public function storefrontWebsiteType(): BelongsTo
{
return $this->belongsTo(WebsiteType::class, 'website_type_code', 'codigo');
return $this->belongsTo(StorefrontWebsiteType::class, 'storefront_website_type_code', 'codigo');
}
/**

View File

@@ -42,7 +42,8 @@ use Illuminate\Support\Facades\Schema;
'favicon_id',
'header_bg_image_id',
'footer_bg_image_id',
'website_type_code',
'admin_website_type_code',
'storefront_website_type_code',
'search_product_layout',
'search_group_layout',
'search_items_per_page',
@@ -210,11 +211,17 @@ class Tenant extends Model
}
/**
* @return BelongsTo<WebsiteType, $this>
* @return BelongsTo<AdminWebsiteType, $this>
*/
public function websiteType(): BelongsTo
public function adminWebsiteType(): BelongsTo
{
return $this->belongsTo(WebsiteType::class, 'website_type_code', 'codigo');
return $this->belongsTo(AdminWebsiteType::class, 'admin_website_type_code', 'codigo');
}
/** @return BelongsTo<StorefrontWebsiteType, $this> */
public function storefrontWebsiteType(): BelongsTo
{
return $this->belongsTo(StorefrontWebsiteType::class, 'storefront_website_type_code', 'codigo');
}
public function catalogItems(): HasMany

View File

@@ -48,11 +48,11 @@ class WebsiteExtra extends Model
}
/**
* @return BelongsTo<WebsiteTypeExtra, $this>
* @return BelongsTo<StorefrontWebsiteTypeExtra, $this>
*/
public function websiteTypeExtra(): BelongsTo
{
return $this->belongsTo(WebsiteTypeExtra::class, 'website_type_extra_id');
return $this->belongsTo(StorefrontWebsiteTypeExtra::class, 'website_type_extra_id');
}
public function setResolvedConfig(mixed $config): self