HEX
Server: Microsoft-IIS/8.5
System: Windows NT YDAWBH120 6.3 build 9600 (Windows Server 2012 R2 Standard Edition) AMD64
User: tentjecom_web (0)
PHP: 7.4.14
Disabled: NONE
Upload Files
File: D:/HostingSpaces/SBogers10/plateau.komma.nl/database/seeds/EventsSeeder.php
<?php

use Carbon\Carbon;
use Illuminate\Support\Str;
use Komma\KMS\Globalization\Languages\Models\Language;
use App\Events\Models\Event;
use App\Events\Models\EventTranslation;
use Illuminate\Database\Seeder;
use Illuminate\Support\Collection;
use Faker\Generator;

class EventsSeeder extends Seeder
{
    private Generator $faker;
    private Generator $fakerNL;
    private int $eventCount = 6;
    private $eventList = [
        'Algemene leden vergadering',
        'Radiokampweek Jutberg',
        'Vlooienmarkt',
        'International lighthouse weekend',
        'Theater de Avenue',
        'Kerstborrel',
        'Computerbeurs CeBit',
        'Pannekoek-slinger wedstrijd',
        'Crazy 88',
        'Ouddorps bierfestival',
        'Winterfestivalconcert',
        'Rock on the kiosk',
        'Circus Vliet',
    ];
    /**
     * @var Generator
     */



    /**
     * Run the seed
     */
    public function run()
    {
        $this->faker = Faker\Factory::create();
        $this->fakerNL = Faker\Factory::create('nl_NL');
        //Get the languages
        $languages = Language::whereIn('iso_2', ['nl', 'en'])->get(['id', 'iso_2']);

        for($i = 0; $i < $this->eventCount; $i++) {
            $this->createRandomEvent($languages);
        }
    }


    /**
     * @param Collection $languages
     * @return Event
     */
    private function createRandomEvent(Collection $languages): Event
    {
        // Create a random date in the near future
        $date = Carbon::now();
        $date->addDays(mt_rand(10,90));

        //Create the service itself...
        $event = new Event([
            'active'      => 1,
            'date'        => $date->toDateTimeString(),
            'time'        => $this->faker->numberBetween(0,1).$this->faker->randomDigitNotNull.':'.$this->faker->randomElement(['00','15','30','45']).'u',
        ]);

        $event->save();

        //...the Dutch translation
        $language = $languages->where('id', '104')->first();
        $name = $this->faker->unique()->randomElement($this->eventList);

        $eventTranslation = new EventTranslation([
            'slug'                => Str::slug($name),
            'name'                => ucfirst($name),
            'location'            => $this->fakerNL->optional($weight = 0.8)->city,
            'costs'               => $this->faker->optional($weight = 0.7, 'Toegang gratis')->randomElement(['€5,-','€7,50','€10,-','€14,99,-','€24,95','€32,50,-','€45,-']),
            'description'         => ucfirst($this->faker->optional($weight = 0.3)->catchPhrase),
        ]);
        $eventTranslation->language()->associate($language);
        $eventTranslation->translatable()->associate($event);
        $eventTranslation->save();

        return $event;
    }
}