<?php

namespace Database\Seeders;

use App\Enums\DbStatusFieldEnum;
use App\Enums\ProductTypeEnum;
use App\Models\ProductGroup;
use Illuminate\Database\Seeder;

class ProductGroupSeeder extends Seeder
{
    /**
     * Run the database seeds.
     */
    public function run(): void
    {
        /*
         * $root=new ProductGroup();
        $root->name='Emegrendeles';
        $root->status=DbStatusFieldEnum::active;
        //$o->type=\App\Enums\ProductTypeEnum::F;
        $root->makeRoot()->save();

        $firstLevel=['
        '];
        $Food=new ProductGroup();
        $Food->name='Food';
        */

        // NonFood
        /*
        $tree =[
            'name' => 'Emegrendelés',
            'status'=>DbStatusFieldEnum::active,
            'children' => [
                [
                    'name' => 'Food',
                    'type'=>ProductTypeEnum::F,
                    'status'=>DbStatusFieldEnum::active,
                    'children' => [
                        [
                            'name' => 'Büféáru_édesipari_termékek',
                            'status'=>DbStatusFieldEnum::active,
                            'type'=>ProductTypeEnum::F,
                            'children' => [
                                [
                                    'name' => 'Cships, sós rágcsa',
                                    'status'=>DbStatusFieldEnum::active,
                                    'type'=>ProductTypeEnum::F,
                                ],
                                [
                                    'name' => 'Csokoládé',
                                    'status'=>DbStatusFieldEnum::active,
                                    'type'=>ProductTypeEnum::F,
                                ],
                                [
                                    'name' => 'Cukorka',
                                    'status'=>DbStatusFieldEnum::active,
                                    'type'=>ProductTypeEnum::F,
                                ],

                            ],
                        ],
                    ],
                ],
                [
                    'name' => 'NonFood',
                    'status'=>DbStatusFieldEnum::active,
                ],
            ],
        ];
        ProductGroup::create($tree);
        */
        $tree = [
            'name' => 'Emegrendelés',
            'status' => DbStatusFieldEnum::active,
            'children' => [
                [
                    'name' => 'Food',
                    'type' => ProductTypeEnum::getKey('Food'),
                    'status' => DbStatusFieldEnum::active,
                ],
                [
                    'name' => 'NonFood',
                    'type' => ProductTypeEnum::getKey('NonFood'),
                    'status' => DbStatusFieldEnum::active,
                ],
            ],
        ];
        ProductGroup::create($tree);

        $foodRoot = ProductGroup::where('name', 'Food')->first();
        $foodNodes = ['Ásványvíz', 'Bio_termékek', 'Büféáru_édesipari_termékek', 'Cukrásztermékek', 'Élelmiszer', 'FM_Higiéniai_termékek', 'Gyorshűtéses_készétel', 'Hal_seafood', 'Hidegkonyhai_készítmény', 'Hús_hentesáru', 'Jégkrém', 'Kávé_tea', 'Olaj_zsiradék', 'Sütőipari_termék_fagyasztott', 'Sütőipari_termék_friss', 'Szeszesital', 'Tejtermék', 'Tojás', 'Továbbfeldolgozott_félkész_termék', 'Üdítőital_sűrítmény', 'Vásárolt_szendvics_készétel', 'Zöldség_gyümölcs'];

        foreach ($foodNodes as $foodNode) {
            $newNode = [
                'name' => $foodNode,
                'type' => ProductTypeEnum::getKey('Food'),
                'status' => DbStatusFieldEnum::active,
            ];
            $foodRoot->children()->create($newNode);
        }

        $parentNode = ProductGroup::where('name', 'Büféáru_édesipari_termékek')->first();
        $newNodes = ['Büfé egyéb termék', 'Cships, sós rágcsa', 'Csokoládé', 'Cukorka', 'Egyéb', 'Gabonapehely, müzlis termék', 'Keksz, nápolyi, sütemény', 'Rágógumi', 'Szamos termék'];
        foreach ($newNodes as $nodeName) {
            $newNode = [
                'name' => $nodeName,
                'type' => ProductTypeEnum::getKey('Food'),
                'status' => DbStatusFieldEnum::active,
            ];
            $parentNode->children()->create($newNode);
        }

        $parentNode = ProductGroup::where('name', 'Élelmiszer')->first();
        $newNodes = ['Ázsiai alapanyag', 'Cukrászati alapanyag', 'Élelmiszer egyéb', 'Fűszer', 'Konzerv, befőtt', 'Krém-ízesítő', 'Lekvár, szósz', 'Por, dehidratált termék', 'Szárazáru', 'Száraztészta'];
        foreach ($newNodes as $nodeName) {
            $newNode = [
                'name' => $nodeName,
                'type' => ProductTypeEnum::getKey('Food'),
                'status' => DbStatusFieldEnum::active,
            ];
            $parentNode->children()->create($newNode);
        }

        $parentNode = ProductGroup::where('name', 'Hús_hentesáru')->first();
        $newNodes = ['Csirke, tyúk', 'Felvágott, töltelékes áru', 'Kacsa, liba', 'Marha, borjú, bárány', 'Pulyka', 'Sertés', 'Vadhús'];
        foreach ($newNodes as $nodeName) {
            $newNode = [
                'name' => $nodeName,
                'type' => ProductTypeEnum::getKey('Food'),
                'status' => DbStatusFieldEnum::active,
            ];
            $parentNode->children()->create($newNode);
        }

        $parentNode = ProductGroup::where('name', 'Tejtermék')->first();
        $newNodes = ['Kereskedelmi tejtermék', 'Konyhai alaptejtermék'];
        foreach ($newNodes as $nodeName) {
            $newNode = [
                'name' => $nodeName,
                'type' => ProductTypeEnum::getKey('Food'),
                'status' => DbStatusFieldEnum::active,
            ];
            $parentNode->children()->create($newNode);
        }

    }
}
