<?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\DealerKitSettingSeeder::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\VehiclesInVideoExportSeeder::class,
        Tenant\MotorsSettingSeeder::class,
        Tenant\PinewoodSettingSeeder::class,
        Tenant\DMSNavigatorSettingSeeder::class,
        Tenant\AutoTraderStockSettingSeeder::class,
        Tenant\ChannelFeedExportSeeder::class,
        Tenant\FeedDescriptionSettingSeeder::class,
        Tenant\ChannelPagination::class,
        Tenant\SiteAccessPasswordSeed::class,
        Tenant\SiteAccessRequestSeed::class,
        Tenant\SiteAccessLinkExpirySeed::class,
        Tenant\FixSiteAccessPasswordValidationSeed::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\CapEnrichVrmSettingSeeder::class,
        Tenant\CapUseSectorForBodyTypeSettingSeeder::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\SkupenetFeatureSourceSettingSeeder::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\CarAndDrivingImageSyncStockProvidersSeeder::class,
        Tenant\CarAndDrivingImageSyncAllowedVehicleTypesSeeder::class,
        Tenant\RenameCarAndDrivingSyncTypeLabel::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 forwarding toggles (service bookings / reservations)
        Tenant\CrmForwardingSettingSeeder::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,
        Tenant\AutoTraderHubExportedFieldsSettingSeeder::class,
        Tenant\AutoTraderHubExportFieldSettingsSeeder::class,
        Tenant\AutoTraderHubPreserveDescriptionSeeder::class,
        Tenant\AutoTraderMakeBasedAssignmentSettingSeeder::class,
        Tenant\AutoTraderValuationVatPriceFieldSettingSeeder::class,

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

        // Theme default data
        ThemeContentSeeder::class,

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

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

        // SRP Vehicle Offer Injection
        Tenant\SrpVehicleOffersSettingsSeeder::class,
        Tenant\SrpVehicleOffersTypeAndOrderingSettingsSeeder::class,

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

        // Exclude sold vehicles from admin list and overview counts
        Tenant\ExcludeSoldVehiclesSettingSeeder::class,

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

        // Auto-create dealerships
        Tenant\AutoCreateDealershipsSettingSeeder::class,
        Tenant\AutoCreateDealershipsRemoveFeatureFlagSeeder::class,

        // Hide location filter from UI
        Tenant\HideLocationFilterSettingSeeder::class,

        // Enabled vehicle types for create vehicle popup
        Tenant\EnabledVehicleTypesSettingSeeder::class,

        // Toggle registration number uniqueness validation
        Tenant\VehicleRegistrationUniqueSettingSeeder::class,

        // Toggle whether API users are restricted to their allowed routes
        Tenant\ApiUserRouteRestrictionSettingSeeder::class,

        // Allow per-vehicle finance key override (Alternate Finance Key)
        Tenant\AllowVehicleFinanceOverrideSetting::class,

        // Backfill the full set of Social Media settings (incl. TikTok) for new and existing tenants
        Tenant\SocialMediaSettingSeeder::class,

        // Santander SCUK widget settings and API-enabled toggle
        Tenant\SantanderWidgetSettingSeeder::class,

        // Dedicated email logo for customer facing emails (falls back to site-logo)
        Tenant\MailLogoSettingSeeder::class,
    ];

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