<?php

namespace Database\Seeders;

use App\Laravue\Models\User;
use App\Template;
use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\Hash;
use App\Laravue\Models\Role;
use App\Laravue\Models\Permission;
use App\Fortuneteller;
use App\RuleCustom;
use App\AccessoryCategory;
use App\Accessory;

class DatabaseSeeder extends Seeder
{
    /**
     * Seed the application's database.
     *
     * @return void
     */
    public function run()
    {
        /*$admin = User::create([
            'name' => 'Admin',
            'email' => 'admin@laravue.dev',
            'password' => Hash::make('laravue'),
        ]);
        $manager = User::create([
            'name' => 'Manager',
            'email' => 'manager@laravue.dev',
            'password' => Hash::make('laravue'),
        ]);
        $editor = User::create([
            'name' => 'Editor',
            'email' => 'editor@laravue.dev',
            'password' => Hash::make('laravue'),
        ]);
        $user = User::create([
            'name' => 'User',
            'email' => 'user@laravue.dev',
            'password' => Hash::make('laravue'),
        ]);
        $visitor = User::create([
            'name' => 'Visitor',
            'email' => 'visitor@laravue.dev',
            'password' => Hash::make('laravue'),
        ]);

        $adminRole = Role::findByName(\App\Laravue\Acl::ROLE_ADMIN);
        $managerRole = Role::findByName(\App\Laravue\Acl::ROLE_MANAGER);
        $editorRole = Role::findByName(\App\Laravue\Acl::ROLE_EDITOR);
        $userRole = Role::findByName(\App\Laravue\Acl::ROLE_USER);
        $visitorRole = Role::findByName(\App\Laravue\Acl::ROLE_VISITOR);
        $admin->syncRoles($adminRole);
        $manager->syncRoles($managerRole);
        $editor->syncRoles($editorRole);
        $user->syncRoles($userRole);
        $visitor->syncRoles($visitorRole);
        $this->call(UsersTableSeeder::class);*/

        //$this->call(CreateFakeItem::class);
        //$this->call(ImportRefName::class);
        //$this->call(GenerateFortuneThumb::class);
        //$this->call(UpdateLeftMenu::class);
        //$this->call(ImportArea::class);
        //$this->call(ImportSEO::class);
        //$this->call(ImportTellerSEO::class);
        //$this->call(GenFortuneThumb::class);
        /*$this->call(UpdateAreaSlug::class);
        $this->call(UpdateMethodSlug::class);
        $this->call(UpdateTellerSlug::class);*/
        /*$this->call(UpdateSeoFormat::class);*/

        /*$all = Fortuneteller::all();
        foreach ($all as $item) {
            $item->update(['is_deleted' => 1]);
        }*/

        /*$permissions = Permission::where('name', 'like', '%-shop%')->get();
        $list = ['store1', 'store2', 'store3', 'store4', 'store5'];
        foreach ($list as $item) {
            $role = Role::create(['name' => $item, 'guard_name' => 'api', 'created_at' => date('Y-m-d H:i:s'), 'updated_at' => date('Y-m-d H:i:s')]);
            foreach ($permissions as $p) {
                DB::table('role_has_permissions')->insert(['permission_id' => $p->id, 'role_id' => $role->id]);
                if ($p->name == "manage-shop-custom") {
                    RuleCustom::create([
                        'role_id' => $role->id,
                        'permission_id' => $p->id,
                        'condition_name' => 'id',
                        'condition_compare' => 'is',
                        'condition_value' => '30',
                        'created_at' => date('Y-m-d H:i:s'),
                        'updated_at' => date('Y-m-d H:i:s')
                    ]);
                }
            }
        }*/

        //$this->call(CreateFeatureItem::class);
        //$this->call(ChangeArticleImage::class);
        //$this->call(UpdateSeoFormat::class);

        //$this->call(ChangeCategorySeeder::class);

        //$this->call(SceneImport::class);
        //$this->call(ConditionImport::class);
		
		// Generate Accessories Test Data
		$this->generateAccessoriesTestData();
		
		//Generate Email Template
		/*Template::where('id', '>', 0)->delete();
		$emails = Template::factory()->count(100)->create();
		foreach ($emails as $email) {
			print "Created: " . $email->name . "\r\n";
		}*/
    }

    /**
     * Generate test data for accessories
     */
    private function generateAccessoriesTestData()
    {
        echo "Generating Japanese kimono accessories test data...\n";
        
        // Clear existing accessories and categories (optional - uncomment if needed)
        // Accessory::where('id', '>', 0)->delete();
        // AccessoryCategory::where('id', '>', 0)->delete();
        
        // Define 10 common kimono accessory categories in Japanese
        $kimonoCategories = [
            [
                'name' => '帯 (Obi)',
                'description' => '着物の帯。袋帯、名古屋帯、半幅帯など様々な種類があります。',
                'accessories' => [
                    ['name' => '西陣織袋帯', 'description' => '京都西陣の伝統的な袋帯。正装用として最適です。'],
                    ['name' => '名古屋帯 花柄', 'description' => '普段着用の名古屋帯。美しい花柄が特徴です。'],
                    ['name' => '博多織半幅帯', 'description' => '福岡の伝統工芸博多織の半幅帯。浴衣にぴったりです。'],
                    ['name' => '紬帯', 'description' => 'カジュアルな紬素材の帯。普段着の着物に合わせます。'],
                    ['name' => '振袖用袋帯', 'description' => '振袖専用の華やかな袋帯。成人式や結婚式に。'],
                    ['name' => '夏帯 絽', 'description' => '夏用の涼しい絽素材の帯。夏着物に最適です。'],
                    ['name' => '丸帯', 'description' => '最も格式高い帯。花嫁衣装や舞踊用に使用されます。'],
                ]
            ],
            [
                'name' => '帯締め (Obijime)',
                'description' => '帯の上から締める組紐。帯の形を整える役割があります。',
                'accessories' => [
                    ['name' => '正絹平組帯締め', 'description' => '正絹の平組み帯締め。フォーマルな場面に適しています。'],
                    ['name' => '丸組帯締め', 'description' => '丸い組み方の帯締め。カジュアルな着物に合わせます。'],
                    ['name' => '金糸入り帯締め', 'description' => '金糸が織り込まれた豪華な帯締め。特別な日に。'],
                    ['name' => '季節柄帯締め', 'description' => '季節の模様が入った帯締め。四季を楽しめます。'],
                    ['name' => '振袖用帯締め', 'description' => '振袖専用の太めの帯締め。華やかな装いに。'],
                    ['name' => '夏用レース帯締め', 'description' => '夏向けのレース素材帯締め。涼しげな印象です。'],
                ]
            ],
            [
                'name' => '帯揚げ (Obiage)',
                'description' => '帯枕を隠すために使用する絹の布。着物の装いを美しく見せます。',
                'accessories' => [
                    ['name' => '正絹絞り帯揚げ', 'description' => '伝統的な絞り染めの帯揚げ。上品な仕上がりです。'],
                    ['name' => '無地帯揚げ', 'description' => 'シンプルな無地の帯揚げ。どんな着物にも合わせやすい。'],
                    ['name' => 'ぼかし染め帯揚げ', 'description' => 'グラデーション染めの美しい帯揚げ。優雅な印象。'],
                    ['name' => '金箔入り帯揚げ', 'description' => '金箔が散らされた豪華な帯揚げ。特別な装いに。'],
                    ['name' => '季節柄帯揚げ', 'description' => '季節の花や模様が入った帯揚げ。季節感を演出。'],
                    ['name' => '振袖用帯揚げ', 'description' => '振袖に合う華やかな色柄の帯揚げ。若々しい印象。'],
                ]
            ],
            [
                'name' => '下駄・草履 (Geta/Zori)',
                'description' => '着物に合わせる伝統的な履物。下駄はカジュアル、草履はフォーマル用。',
                'accessories' => [
                    ['name' => '桐下駄', 'description' => '軽くて履きやすい桐材の下駄。浴衣に最適です。'],
                    ['name' => 'エナメル草履', 'description' => '光沢のあるエナメル素材の草履。フォーマルシーンに。'],
                    ['name' => '畳表草履', 'description' => '畳表を使用した涼しげな草履。夏の着物に。'],
                    ['name' => '佐賀錦草履', 'description' => '佐賀の伝統工芸佐賀錦の草履。格式高い装いに。'],
                    ['name' => '舞踊用草履', 'description' => '日本舞踊専用の草履。足袋との相性が良い。'],
                    ['name' => '振袖用草履', 'description' => '振袖に合わせる華やかな草履。高いヒールが特徴。'],
                    ['name' => 'カレンブロッソ草履', 'description' => 'モダンなデザインの現代的草履。普段着に人気。'],
                ]
            ],
            [
                'name' => '足袋 (Tabi)',
                'description' => '着物を着る際に履く伝統的な靴下。親指が分かれているのが特徴。',
                'accessories' => [
                    ['name' => '白足袋', 'description' => '基本の白い足袋。フォーマルからカジュアルまで対応。'],
                    ['name' => '色足袋', 'description' => '色付きの足袋。おしゃれな着こなしに人気。'],
                    ['name' => 'レース足袋', 'description' => 'レース素材の足袋。夏の装いに涼しげな印象。'],
                    ['name' => '刺繍足袋', 'description' => '美しい刺繍が施された足袋。特別な日の装いに。'],
                    ['name' => 'こはぜ足袋', 'description' => '金属のこはぜで留める伝統的な足袋。着付けに便利。'],
                    ['name' => 'ストレッチ足袋', 'description' => '伸縮性のある現代的な足袋。履きやすさが人気。'],
                ]
            ],
            [
                'name' => '髪飾り (Kanzashi)',
                'description' => '着物姿の髪を美しく飾る伝統的なアクセサリー。季節や場面に応じて選びます。',
                'accessories' => [
                    ['name' => 'つまみ細工かんざし', 'description' => '江戸つまみ細工の美しいかんざし。花や蝶の模様が人気。'],
                    ['name' => '櫛かんざし', 'description' => '櫛とかんざしが一体になった実用的な髪飾り。'],
                    ['name' => '簪 金属製', 'description' => '金属製の上品なかんざし。フォーマルな場面に適している。'],
                    ['name' => '季節の花かんざし', 'description' => '季節の花をモチーフにしたかんざし。四季を楽しめます。'],
                    ['name' => '珊瑚かんざし', 'description' => '珊瑚を使用した高級なかんざし。魔除けの意味もあります。'],
                    ['name' => '振袖用かんざし', 'description' => '振袖に合う華やかで大きなかんざし。成人式に人気。'],
                    ['name' => 'パールかんざし', 'description' => 'パールをあしらった上品なかんざし。結婚式などに。'],
                ]
            ],
            [
                'name' => '半衿 (Han-eri)',
                'description' => '長襦袢の衿に縫い付ける布。着物の印象を大きく左右する重要なアイテム。',
                'accessories' => [
                    ['name' => '白い半衿', 'description' => '基本の白い半衿。どんな着物にも合わせやすい定番。'],
                    ['name' => '刺繍半衿', 'description' => '美しい刺繍が施された半衿。華やかな装いに。'],
                    ['name' => 'レース半衿', 'description' => 'レース素材の半衿。モダンで上品な印象を与えます。'],
                    ['name' => '色半衿', 'description' => '色付きの半衿。おしゃれな着こなしのアクセントに。'],
                    ['name' => '金箔半衿', 'description' => '金箔が施された豪華な半衿。特別な場面に最適。'],
                    ['name' => '絞り半衿', 'description' => '絞り染めの半衿。伝統的な技法が美しい。'],
                    ['name' => '夏用半衿', 'description' => '夏向けの涼しい素材の半衿。暑い季節に快適。'],
                ]
            ],
            [
                'name' => '羽織・コート (Haori/Coat)',
                'description' => '着物の上に羽織る外衣。防寒やフォーマル感を演出します。',
                'accessories' => [
                    ['name' => '黒羽織', 'description' => 'フォーマルな黒い羽織。正装時に必須のアイテム。'],
                    ['name' => '色羽織', 'description' => '色付きの羽織。カジュアルな着物に合わせて。'],
                    ['name' => '道中着', 'description' => '外出時に着用する長めのコート。防寒に最適。'],
                    ['name' => '道行コート', 'description' => '四角い衿が特徴的な着物コート。上品な印象。'],
                    ['name' => '雨コート', 'description' => '雨の日専用の着物コート。着物を濡らさず保護。'],
                    ['name' => '夏羽織', 'description' => '夏用の薄手の羽織。冷房対策や日焼け防止に。'],
                    ['name' => '振袖用ショール', 'description' => '振袖に合わせるファーショール。成人式の定番。'],
                ]
            ],
            [
                'name' => 'バッグ・巾着 (Bag/Kinchaku)',
                'description' => '着物に合わせる伝統的な袋物。実用性と美しさを兼ね備えています。',
                'accessories' => [
                    ['name' => '金襴バッグ', 'description' => '金糸を使った豪華な金襴のバッグ。フォーマルに最適。'],
                    ['name' => '西陣織バッグ', 'description' => '京都西陣織のバッグ。伝統工芸の美しさが光ります。'],
                    ['name' => '巾着袋', 'description' => '紐で口を絞る伝統的な巾着袋。カジュアルな装いに。'],
                    ['name' => 'がま口バッグ', 'description' => '口金が特徴的ながま口バッグ。レトロな魅力があります。'],
                    ['name' => '竹カゴバッグ', 'description' => '竹で編んだ涼しげなカゴバッグ。夏の着物に人気。'],
                    ['name' => '振袖用バッグ', 'description' => '振袖に合わせる華やかなバッグ。成人式に必須。'],
                    ['name' => '印伝バッグ', 'description' => '甲州印伝の鹿革バッグ。独特の風合いが魅力。'],
                ]
            ],
            [
                'name' => '扇子・うちわ (Sensu/Uchiwa)',
                'description' => '着物姿に優雅さを添える扇子や涼を取るうちわ。実用性と装飾性を兼ね備えます。',
                'accessories' => [
                    ['name' => '京扇子', 'description' => '京都の伝統工芸京扇子。上品で優雅な装いに。'],
                    ['name' => '舞扇', 'description' => '日本舞踊で使用する舞扇。華やかな装飾が特徴。'],
                    ['name' => '夏扇子', 'description' => '夏専用の涼しげな扇子。暑い季節の必需品。'],
                    ['name' => '絵付け扇子', 'description' => '美しい絵が描かれた扇子。芸術性の高いアイテム。'],
                    ['name' => '白檀扇子', 'description' => '白檀の香りがする高級扇子。香りも楽しめます。'],
                    ['name' => '祭りうちわ', 'description' => '祭りや夏祭りで使う伝統的なうちわ。浴衣に最適。'],
                    ['name' => '婚礼扇子', 'description' => '結婚式で使用する特別な扇子。縁起の良い柄が特徴。'],
                ]
            ]
        ];

        // Create categories and accessories
        foreach ($kimonoCategories as $categoryData) {
            echo "Creating category: {$categoryData['name']}\n";
            
            // Create or update category
            $category = AccessoryCategory::create([
                'name' => $categoryData['name'],
                'description' => $categoryData['description'],
                'image' => '2c76c0fd-4b39-4991-8a99-94ecf64cd6c5.jpg',
                'position' => 1,
                'is_activated' => 1,
                'is_deleted' => 0,
                'created_at' => now(),
                'updated_at' => now()
            ]);

            // Create accessories for this category
            foreach ($categoryData['accessories'] as $index => $accessoryData) {
                // Generate random code: One uppercase letter + 5 digits
                $code = chr(rand(65, 90)) . str_pad(rand(0, 99999), 5, '0', STR_PAD_LEFT);
                
                Accessory::create([
                    'accessory_category_id' => $category->id,
                    'code' => $code,
                    'name' => $accessoryData['name'],
                    'description' => $accessoryData['description'],
                    'image' => '2c76c0fd-4b39-4991-8a99-94ecf64cd6c5.jpg',
                    'position' => $index + 1,
                    'is_activated' => 1,
                    'is_deleted' => 0,
                    'created_at' => now(),
                    'updated_at' => now()
                ]);
                
                echo "  Created accessory: {$code} - {$accessoryData['name']}\n";
            }
        }
        
        echo "Japanese kimono accessories data generation completed!\n\n";
    }
}
