HEX
Server: LiteSpeed
System: Linux s1049.use1.mysecurecloudhost.com 4.18.0-477.27.2.lve.el8.x86_64 #1 SMP Wed Oct 11 12:32:56 UTC 2023 x86_64
User: xedaptot (3356)
PHP: 8.3.31
Disabled: NONE
Upload Files
File: /home/xedaptot/be.naniguide.com/app/Model/FunnelStepTemplate.php
<?php

namespace App\Model;

use Illuminate\Database\Eloquent\Model;
use App\Library\Contracts\TemplateSubjectInterface;
use App\Library\Traits\HasUid;
use App\Services\TemplateService;

class FunnelStepTemplate extends Model implements TemplateSubjectInterface
{
    use HasUid;

    protected $fillable = [
        'name', 'tags', 'description', 'image',
    ];

    // -------------------------------------------------------------------------
    // Relationships
    // -------------------------------------------------------------------------

    public function template()
    {
        return $this->belongsTo(Template::class);
    }

    // -------------------------------------------------------------------------
    // Scopes
    // -------------------------------------------------------------------------

    public function scopeByTag($query, $tag)
    {
        if ($tag) {
            $query->where('tags', 'like', '%' . trim($tag) . '%');
        }
    }

    // -------------------------------------------------------------------------
    // Helpers
    // -------------------------------------------------------------------------

    public function getTagsArray(): array
    {
        if (empty($this->tags)) {
            return [];
        }

        return array_map('trim', explode(',', $this->tags));
    }

    public function getImageUrl()
    {
        if ($this->image) {
            return asset('storage/funnel_step_templates/' . $this->image);
        }

        return url('images/placeholder.jpg');
    }

    public function deleteAndCleanup(): void
    {
        TemplateService::for($this)->deleteSubjectAndTemplate();
    }
}