<?php

namespace App\Traits;

use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Relations\MorphTo;

// PRC-816 — Gider/tekrarlayan gider → satış varlığı (cost-of-sale) polimorfik bağı.
// Bağ bir REFERANS'tır; ServiceCost/DomainCost tutarı kopyalanmaz.
trait LinksToCostOfSale
{
    /** Bağlı satış varlığı (Order/ClientProduct/ClientDomain/Product/Tld). */
    public function linkable(): MorphTo
    {
        return $this->morphTo();
    }

    /** Belirli bir bağ tipine (ve opsiyonel id'ye) göre filtrele. */
    public function scopeLinkedTo(Builder $query, ?string $linkableType, $linkableId = null): Builder
    {
        if (! $linkableType) {
            return $query;
        }

        $query->where('linkable_type', $linkableType);
        if ($linkableId !== null && $linkableId !== '') {
            $query->where('linkable_id', $linkableId);
        }

        return $query;
    }
}
