<?php

namespace Database\Seeders;

use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\DB;

class ItemTypeSeeder extends Seeder
{
    /**
     * Run the database seeds.
     * common_codes 테이블에 item_type 그룹 데이터 시딩
     *
     * attributes.source_table: 실제 저장 테이블 매핑
     * - FG, PT → products 테이블
     * - SM, RM, CS → materials 테이블
     */
    public function run(): void
    {
        $tenantId = 1; // 기본 테넌트

        // code_group = 'item_type' (컬럼명과 동일하게!)
        // attributes.source_table로 물리 테이블 매핑
        $itemTypes = [
            [
                'code_group' => 'item_type',
                'code' => 'FG',
                'name' => '완제품',
                'tenant_id' => $tenantId,
                'attributes' => json_encode([
                    'source_table' => 'products',
                    'name_en' => 'Finished Goods',
                ]),
            ],
            [
                'code_group' => 'item_type',
                'code' => 'PT',
                'name' => '부품',
                'tenant_id' => $tenantId,
                'attributes' => json_encode([
                    'source_table' => 'products',
                    'name_en' => 'Parts',
                ]),
            ],
            [
                'code_group' => 'item_type',
                'code' => 'SM',
                'name' => '부자재',
                'tenant_id' => $tenantId,
                'attributes' => json_encode([
                    'source_table' => 'materials',
                    'name_en' => 'Sub-Materials',
                ]),
            ],
            [
                'code_group' => 'item_type',
                'code' => 'RM',
                'name' => '원자재',
                'tenant_id' => $tenantId,
                'attributes' => json_encode([
                    'source_table' => 'materials',
                    'name_en' => 'Raw Materials',
                ]),
            ],
            [
                'code_group' => 'item_type',
                'code' => 'CS',
                'name' => '소모품',
                'tenant_id' => $tenantId,
                'attributes' => json_encode([
                    'source_table' => 'materials',
                    'name_en' => 'Consumables',
                ]),
            ],
        ];

        foreach ($itemTypes as $index => $item) {
            DB::table('common_codes')->updateOrInsert(
                [
                    'code_group' => $item['code_group'],
                    'code' => $item['code'],
                    'tenant_id' => $item['tenant_id'],
                ],
                array_merge($item, [
                    'sort_order' => $index + 1,
                    'is_active' => true,
                    'created_at' => now(),
                    'updated_at' => now(),
                ])
            );
        }

        $this->command->info('ItemTypeSeeder: '.count($itemTypes).'개 item_type 코드가 시딩되었습니다.');
    }
}
