File: D:/HostingSpaces/blijegasten/blijegasten.be/app/Komma/Shop/seeds/ProductsSeeder.php
<?php
namespace App\Komma\Shop\seeds;
use App\Komma\Globalization\Languages\Models\Language;
use App\Komma\Shop\Categories\Models\Category;
use App\Komma\Shop\Products\Product\Product;
use App\Komma\Shop\Products\Product\ProductTranslation;
use App\Komma\Shop\Products\ProductComposite\ProductComposite;
use App\Komma\Shop\Products\ProductComposite\ProductCompositeTranslation;
use App\Komma\Shop\Products\ProductGroup\ProductGroup;
use App\Komma\Shop\Products\ProductGroup\ProductGroupTranslation;
use App\Komma\Shop\Products\ProductGroupBehaviour\ProductGroupBehaviour;
use App\Komma\Sites\Models\Site;
use Illuminate\Database\Seeder;
use Illuminate\Support\Arr;
use Illuminate\Support\Str;
class ProductsSeeder extends Seeder
{
public function run()
{
$productsData = [
'glass_porcelain' => [
'Champagneglas',
'Waterglas op voet',
'Witte wijn glas',
'Rode wijn glas',
'Waterglas',
'Longdrink',
'Koffietas',
'Ondertas',
'Soepkommetje',
'Soepbord',
'Kommetje wit',
'Dessertbord',
'Wit bord',
'Duvelglas',
'Bierglas',
'Aperitiefschaaltje bootje',
'Aperitiefschaaltje plat',
'Leeuwenkopje',
'Mini-tasje',
'Pastabord diep',
'Pastabord laag',
'Kommetje virekant wit',
'Kom vierkant wit',
'Aperitieflepel porcelein',
'Bierglas 0,5l',
'Bierglas 1l',
'Amuseglas ellipse',
],
'cookers' => [
'Bakplaat elektrisch',
'Friteuse elektrisch',
'Friteuse dubbel gas',
'Pastakoker gas',
'Gasbbq',
'Houtskool bbq',
'Wok',
'Europa zesbrander',
'Atlanta',
'Warmhoudlamp',
'Soepketel',
'Inductiekookplaat',
'Combisteamer 10 niveau gas',
'Combisteamer 6 niveau 380v',
'Gastronormrooster',
'Gastronormbak 5 cm',
'Gastronormbak 10 cm',
'Gastronorm 1/2 5cm',
'Gastronorm 1/2 10cm',
'Gastronorm 1/3 5 cm',
'Gastronorm 1/3 10 cm',
'Shafing dish klein rond',
'Shafing dish klein vierkant',
'Vuurspies',
'Gourmet toestel gas',
'Gourmet toestel brandpasta',
'Paƫllapan',
'Shafing dish',
'Shafing dish met soeppotten',
'Milantoaster',
'Warmhoudkast 15 gn',
'Xantosbbq',
'Palletwagen',
'Steekkar',
'Schuimblusser 6 kg',
'Verlengsnoer',
],
'furniture' => [
'Tafel 1,2 op 0,8',
'Tafel 1,8 op 0,8',
'Tafel rond 150 cm',
'Tafel rond 180 cm',
'Statafel',
'Stoel wit pvc',
'Stoel deluxe',
'Barkruk',
'Inox keukentafel',
'Tafellinnen rond 1,8 wit',
'Tafellinnen rond 2,20 wit',
'Tafellinnen rond 1,8 zwart',
'Tafellinnen rond 2,2 zwart',
'Tafellinnen wit 1,8 op 1,23',
'Tafellinnen wit 2,2 op 1,23',
'Tafellinnen zwart 1,8 op 1,23',
'Tafellinnen zwart 2,2 op 1,23',
'Statafelrok wit',
'Statafelrok zwart',
],
'heaters' => [
'Terrasverwarmer',
'Warmtekanon (gas)',
'Patioheater',
'Gasfles',
'Siervlam',
'Vuurkorf',
],
'coolers' => [
'Aanhangwagen',
'Koelkoffer',
'Koelkast',
'Tapinstallatie',
'Koeleiland',
'Isolatiekast',
'Isolatieboxzwart',
],
'bouncy_castle' => [
'Circus',
'Kasteel',
'Chico',
'Ballenbad',
'Piratenboot',
'Dolfijn',
'Rabbit',
],
'cutlery' => [
'Steakmes',
'Tafelvork (budget)',
'Dessertlepel',
'Dessertvork',
'Bbq-tang',
'Serveertang',
'Sauslepel',
'Lepel',
'Mes',
'Vork',
'Lepel',
],
'hall_material' => [
'Plateau rond 30cm',
'Plateau rond 40cm',
'Plateau rond 50 cm',
'Plateau ovaal',
'Taartschep',
'Taartplateau',
'Chocoladefontein klein',
'Chocoladefontein groot',
'Chocoladecallets',
'Suikerspintoestel',
'Stokjes',
'Suiker',
'Spoelbak',
'Broodmandje',
'Nespressokoffiezet klein',
'Nespresoo koffiezet dubbel',
],
'kitchen_equipment' => [
'Pannenlikker klein',
'Pannenlikker groot',
'Pollepel',
'Klopper',
'Spatel',
'Slazwierder',
'Frietvergiet',
'Notenkraker',
'Blikopener',
'Keukenpincet',
'Vispincet',
'Isolatiecontainer',
'Snijplank',
'Eiersnijder',
'Spuitkopjes',
'Mengkom',
'Vergiet',
'Gastronormrek',
'Serveerwagen 2 niveau',
'Serveerwagen 3 niveau',
'Ketel 12 liter',
'Mosselketel',
'Schuimspaan',
'Cremelepel',
'Mobiele afvalcontainer',
],
];
$productData = [
[
'attributes' => [
'active' => '1',
'Price' => '2495',
],
'translations' => [
'nl' => [
'attributes' => [
'name' => 'Basis - Bevestigings materialen'
]
]
],
],
];
foreach($productsData as $categoryKey => $products)
{
$category = Category::where('code_name', $categoryKey)->first();
foreach ($products as $product) {
$productData = [
'attributes' => [
'active' => '1',
'Price' => '2495',
],
'translations' => [
'nl' => [
'attributes' => [
'name' => $product
]
]
],
];
$product = $this->createProduct($productData);
$product->categories()->save($category);
}
}
}
private function createProduct(array $productData): Product
{
$product = new Product($productData['attributes']);
$product->save();
foreach ($productData['translations'] as $iso_2 => $languageData) {
$language = Language::where('iso_2', '=', $iso_2)->first();
if (!$language) {
break;
}
$translation = new ProductTranslation();
$translation->language()->associate($language);
$translation->translatable()->associate($product);
$translation->fill(
$languageData['attributes']
);
$translation->slug = Str::slug($translation->name);
$translation->save();
}
return $product;
}
}