<?php

namespace Database\Seeders;

use App\Traits\TrackedSeeding;
use Illuminate\Database\Seeder;
use Mtc\Crm\Seeds\EnquiryStatusSeeder;

class DatabaseSeeder extends Seeder
{
    use TrackedSeeding;

    protected static $seeds = [
        Tenant\SeoSettingSeeder::class,
        Tenant\EmailReservationConfirmationContentSeeder::class,
        Tenant\ColourMapSeeder::class,
        Tenant\LabelsSeeder::class,
        Tenant\GTMReadOnlySettingSeeder::class,

        // CRM data (forms, enquiry types, statuses)
        EnquiryStatusSeeder::class,

        // Seed the different enquiry types
        Tenant\EnquiryTypeSeeder::class,

        // Parent enquiry seeder
        Tenant\GeneralEnquirySeeder::class,

        // Enquiry seeders extending GeneralEnquirySeeder
        Tenant\NewVehicleEnquirySeeder::class,
        Tenant\UsedVehicleEnquirySeeder::class,
        Tenant\BookTestDriveNewSeeder::class,
        Tenant\BookTestDriveUsedSeeder::class,
        Tenant\SellMyCarEnquirySeeder::class,
        Tenant\PartsAccessoriesEnquirySeeder::class,
        Tenant\VacancyEnquirySeeder::class,
        Tenant\FinanceEnquirySeeder::class,

        // Theme default data
        ThemeContentSeeder::class,
    ];

    /**
     * Seed the application's database.
     *
     * @return void
     */
    public function run()
    {
        (new Tenant\SettingsDefinitionSeeder())->run();

        foreach (self::$seeds as $seeder) {
            $this->trackedSeed($seeder);
        }
    }
}
