<?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\BaseSettingSeeder::class,
        Tenant\SeoSettingSeeder::class,
        Tenant\EmailReservationConfirmationContentSeeder::class,
        Tenant\AutomotiveSettingSeeder::class,
        Tenant\FinanceSettingSeeder::class,
        Tenant\EnquiryMaxSettingSeeder::class,
        Tenant\RapidRTCSettingSeeder::class,
        Tenant\VisitorSettingSeeder::class,
        Tenant\ChatSettingSeeder::class,
        Tenant\SilverBulletSettingSeeder::class,
        Tenant\StripeSettingSeeder::class,
        Tenant\AutoImagingSettingSeeder::class,
        Tenant\AutosOnShowSettingSeeder::class,
        Tenant\VehicleSpecSeeder::class,
        Tenant\OpenAISeeder::class,
        Tenant\VehicleSpecMotorCheckSeeder::class,
        Tenant\VehicleFilterSettingSeeder::class,
        Tenant\NewsletterSettingSeeder::class,
        Tenant\CarGuruExportSeeder::class,
        Tenant\CarWowExportSeeder::class,
        Tenant\HeyCarExportSeeder::class,
        Tenant\CarSnipExportSeeder::class,
        Tenant\AaCarsExportSeeder::class,
        Tenant\AlternateOpenThirdTimesSeeder::class,
        Tenant\AutowebExportSeeder::class,
        Tenant\CarsIrelandExportSeeder::class,
        Tenant\PhyronExportSeeder::class,
        Tenant\MotoNovoExportSeeder::class,
        Tenant\MotorsCoUkExportSeeder::class,
        Tenant\EbayMotorsExportSeeder::class,
        Tenant\MotorsSettingSeeder::class,
        Tenant\PinewoodSettingSeeder::class,
        Tenant\DMSNavigatorSettingSeeder::class,
        Tenant\AutoTraderStockSettingSeeder::class,
        Tenant\ChannelFeedExportSeeder::class,
        Tenant\ChannelPagination::class,
        Tenant\SiteAccessPasswordSeed::class,
        Tenant\BrandingSettingSeeder::class,
        Tenant\SeoViewIdSettingSeeder::class,
        Tenant\StockSyncFrequencySeeder::class,
        Tenant\DealershipDefaultTimeSettingSeeder::class,
        Tenant\TimezoneSettingSeeder::class,
        Tenant\TrackingCodeSeeder::class,
        Tenant\LinkedInTrackingSeeder::class,
        Tenant\PageTypeSettingSeeder::class,
        Tenant\PageTypeDefaultTemplateSeed::class,
        Tenant\ImaginStudioSeeder::class,
        Tenant\AdvancedFinanceSettingsSeed::class,
        Tenant\BcaCapValuationSettingSeeder::class,
        Tenant\BeepBeepValuationSettingSeeder::class,
        Tenant\BeepBeepLookupSettingSeeder::class,
        Tenant\ChatSettingSeeder::class,
        Tenant\EasichatSettingSeeder::class,
        Tenant\CalltracksSettingSeeder::class,
        Tenant\CalltracksAlterSettingSeeder::class,
        Tenant\RemoveBgSettingSeeder::class,
        Tenant\OccupopSettingSeeder::class,
        Tenant\LabelsSeeder::class,
        Tenant\LabelJustArrivedSettingSeeder::class,
        Tenant\SimilarVehiclesSettingSeeder::class,
        Tenant\CapLookupSettingSeeder::class,
        Tenant\CapIdLocalCacheSettingSeeder::class,
        Tenant\CapIdLocalCacheComponentSeeder::class,
        Tenant\SkodaSyncTypeSettingSeeder::class,
        Tenant\CapLookupOverrideAttributes::class,
        Tenant\AutoloadItFtpSettingSeeder::class,
        Tenant\CarzoneExportSeeder::class,
        Tenant\OpenAIDescriptionSeeder::class,
        Tenant\AutomotiveLoadMoreSettingSeeder::class,
        Tenant\DealershipsUrlPathSettingSeeder::class,
        Tenant\AutoTraderLookupSettingSeeder::class,
        Tenant\InventoryExportSeeder::class,
        Tenant\ProductsFinanceRiskBasedPricingSettingsSeed::class,
        Tenant\PostcodeMileageFilterSettingSeeder::class,
        Tenant\CarzoneSoldReservedStockSettingSeeder::class,
        Tenant\AutoTraderRemoveImagesSetting::class,
        Tenant\AutoTraderLabelForLCVCarsSetting::class,
        Tenant\AutoTraderRemoveLabelsSetting::class,
        Tenant\SkodaDeliveryPriceSettingSeeder::class,
        Tenant\ImaginStudioZoomLevelSeeder::class,
        Tenant\FilterSelectionsOnResultsForWidgetSeeder::class,
        Tenant\SkupenetNewVehicleStockSettingSeeder::class,
        Tenant\OpenAIPromptSeeder::class,
        Tenant\AutoSetOriginalPriceSeeder::class,
        Tenant\BrevoSettingSeeder::class,
        Tenant\GoogleExportSeeder::class,
        Tenant\FinanceCalculatorSeeder::class,
        Tenant\HideVehicleTypeFilterSeeder::class,
        Tenant\VehiclePurgeSettingSeeder::class,
        Tenant\ChristmasSettingSeeder::class,
        Tenant\GTMReadOnlySettingSeeder::class,
        Tenant\ChangeCountrySettingValidationRules::class,
        Tenant\ChangeOpenAIEnabledName::class,
        Tenant\OfferFinanceSettingSeeder::class,
        Tenant\CarAndDrivingSeeder::class,
        Tenant\CarAndDrivingReviewSeeder::class,
        Tenant\CarAndDrivingDeleteExistingRule::class,
        Tenant\EasiChatExportSeeder::class,
        Tenant\FinanceExampleByAprSettingSeeder::class,
        Tenant\IsVatApplicableFilterSettingSeeder::class,

        // Pagination settings
        Tenant\FilterPerPageSetting::class,
        Tenant\FilterPerPageOverrideSettings::class,

        // Dealerweb CRM endpoint
        Tenant\DealerWebLmsSettingSeeder::class,
        Tenant\DealerWebEndpointSettingSeeder::class,
        Tenant\UpdateDealerWebLmsSettingSeeder::class,
        Tenant\DealerWebLmsTestSettingsSeeder::class,
        Tenant\DealerWebLmsTestEndpointSeeder::class,

        // CRM data (forms, enquiry types, statuses)
        EnquiryStatusSeeder::class,
        Tenant\EnquiryVehicleStatsSettingSeeder::class,
        Tenant\EnquiryVehicleStatsDaysSettingSeeder::class,
        Tenant\FuseReserveSettingSeeder::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,

        //Live Chat
        Tenant\ActivEngageSeeder::class,

        //AutoTrader
        Tenant\AutoTraderHubUpdatedSettingsSeeder::class,
        Tenant\AutoTraderCoDriverSeeder::class,
        Tenant\AutoTraderPublishUsedCarsSetting::class,

        // Search content configuration
        Tenant\SearchContentSettingSeeder::class,

        // Theme default data
        ThemeContentSeeder::class,

        // SRP Offer Card
        Tenant\CatalogOfferMaxWeightedSettingSeeder::class,

        // SRP Featured Vehicle
        Tenant\SrpFeaturedVehicleSettingSeeder::class,

        // Sort sold vehicles to end of results
        Tenant\SoldVehicleSortingSettingSeeder::class,

        // Hide prices for sold vehicles
        Tenant\HideSoldVehiclePricesSettingSeeder::class,

        // Auto-create dealerships (listing tenants only)
        Tenant\AutoCreateDealershipsSettingSeeder::class,
    ];

    /**
     * Seed the application's database.
     *
     * @return void
     */
    public function run()
    {
        foreach (self::$seeds as $seeder) {
            $this->trackedSeed($seeder);
        }
    }
}
