'/', 'search_product_layout' => ProductLayout::ColumnWithImage->value, 'search_group_layout' => GroupLayout::Paginated->value, 'search_items_per_page' => 12, 'display_categories' => true, 'display_seach_bar' => true, 'display_cart' => true, 'cart_editing_enabled' => true, 'display_cart_item_images' => true, 'scanner_category_validation_enabled' => true, ]; public function getRouteKeyName(): string { return 'codigo'; } protected static function booted(): void { static::creating(function (Tenant $tenant): void { if ($tenant->client_id !== null || ! Schema::hasTable('clients')) { return; } $client = Client::query()->firstOrCreate( ['code' => $tenant->codigo], ['name' => $tenant->nombre], ); $tenant->client()->associate($client); }); } /** @return BelongsTo */ public function client(): BelongsTo { return $this->belongsTo(Client::class); } public function requiresScannerCategoryValidation(): bool { return $this->scanner_category_validation_enabled; } /** * Get the attributes that should be cast. * * @return array */ protected function casts(): array { return [ 'search_product_layout' => ProductLayout::class, 'search_group_layout' => GroupLayout::class, 'search_items_per_page' => 'integer', 'display_categories' => 'boolean', 'display_seach_bar' => 'boolean', 'display_cart' => 'boolean', 'cart_editing_enabled' => 'boolean', 'display_cart_item_images' => 'boolean', 'scanner_category_validation_enabled' => 'boolean', ]; } /** * @return BelongsTo */ public function headerLogo(): BelongsTo { return $this->belongsTo(Attachment::class, 'header_logo_id'); } /** * @return BelongsTo */ public function footerLogo(): BelongsTo { return $this->belongsTo(Attachment::class, 'footer_logo_id'); } /** * @return BelongsTo */ public function favicon(): BelongsTo { return $this->belongsTo(Attachment::class, 'favicon_id'); } /** * @return BelongsTo */ public function headerBackgroundImage(): BelongsTo { return $this->belongsTo(Attachment::class, 'header_bg_image_id'); } /** * @return BelongsTo */ public function footerBackgroundImage(): BelongsTo { return $this->belongsTo(Attachment::class, 'footer_bg_image_id'); } /** * @return BelongsTo */ public function websiteType(): BelongsTo { return $this->belongsTo(WebsiteType::class, 'website_type_code', 'codigo'); } public function catalogItems(): HasMany { return $this->hasMany(CatalogItem::class, 'tenant_code', 'codigo'); } /** @return HasMany */ public function eventDates(): HasMany { return $this->hasMany(EventDate::class, 'tenant_code', 'codigo') ->orderBy('date') ->orderBy('time_start'); } /** * @return HasMany */ public function categories(): HasMany { return $this->hasMany(Category::class, 'tenant_code', 'codigo'); } /** * @return BelongsToMany */ public function socialMedia(): BelongsToMany { return $this->belongsToMany( SocialMedia::class, 'tenant_social_media', 'tenant_code', 'social_media_code', 'codigo', 'code' ) ->withPivot(['url', 'orden']) ->withTimestamps() ->orderByPivot('orden'); } /** * @return HasMany */ public function websiteExtras(): HasMany { return $this->hasMany(WebsiteExtra::class, 'website_code', 'codigo'); } public function menues(): BelongsToMany { return $this->belongsToMany( Menu::class, 'tenants_menues', 'tenant_code', 'menu_code', 'codigo', 'code' ) ->using(TenantMenu::class) ->withPivot('static_content') ->withTimestamps(); } }