<?php

namespace App\Models\ItemMaster;

use App\Traits\Auditable;
use App\Traits\BelongsToTenant;
use App\Traits\ModelTrait;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;

class ItemBomItem extends Model
{
    use Auditable, BelongsToTenant, ModelTrait, SoftDeletes;

    protected $fillable = [
        'tenant_id',
        'group_id',
        'item_code',
        'item_name',
        'quantity',
        'unit',
        'unit_price',
        'total_price',
        'spec',
        'note',
        'created_by',
        'updated_by',
        'deleted_by',
    ];

    protected $casts = [
        'group_id' => 'integer',
        'quantity' => 'decimal:4',
        'unit_price' => 'decimal:2',
        'total_price' => 'decimal:2',
        'created_at' => 'datetime',
        'updated_at' => 'datetime',
        'deleted_at' => 'datetime',
    ];

    protected $hidden = [
        'deleted_by',
        'deleted_at',
    ];

    /**
     * 이 BOM 항목이 연결된 섹션들 조회 (entity_relationships 기반)
     */
    public function linkedSections()
    {
        return ItemSection::whereIn('id', function ($query) {
            $query->select('parent_id')
                ->from('entity_relationships')
                ->where('parent_type', EntityRelationship::TYPE_SECTION)
                ->where('child_type', EntityRelationship::TYPE_BOM)
                ->where('child_id', $this->id);
        });
    }

    /**
     * 이 BOM 항목의 모든 부모 관계 목록 조회
     */
    public function allParentRelationships()
    {
        return EntityRelationship::where('child_type', EntityRelationship::TYPE_BOM)
            ->where('child_id', $this->id);
    }
}
