<?php

namespace App\Services\Alerts;

class AlertMetricCatalog
{
    /**
     * @return array<string, array<string, string>>
     */
    public static function all(): array
    {
        return [
            'google_ads' => [
                'cost' => 'Harcama',
                'clicks' => 'Tıklama',
                'impressions' => 'Gösterim',
                'conversions' => 'Dönüşüm',
                'ctr' => 'CTR %',
                'average_cpc' => 'Ortalama CPC',
                'conversion_rate' => 'Dönüşüm Oranı %',
                'cost_per_conversion' => 'Dönüşüm Maliyeti',
                'wasted_cost' => 'Dönüşümsüz Harcama',
            ],
            'meta_ads' => [
                'spend' => 'Harcama',
                'clicks' => 'Tıklama',
                'impressions' => 'Gösterim',
                'reach' => 'Erişim',
                'leads' => 'Lead',
                'purchases' => 'Satın Alma',
                'conversions' => 'Dönüşüm',
                'ctr' => 'CTR %',
                'cpc' => 'CPC',
                'cpm' => 'CPM',
                'cost_per_lead' => 'Lead Maliyeti',
                'cost_per_purchase' => 'Satın Alma Maliyeti',
                'wasted_spend' => 'Dönüşümsüz Harcama',
            ],
            'search_console' => [
                'clicks' => 'Organik Tıklama',
                'impressions' => 'Organik Gösterim',
                'ctr' => 'Organik CTR %',
                'position' => 'Ortalama Pozisyon',
            ],
            'ga4' => [
                'sessions' => 'Oturum',
                'total_users' => 'Kullanıcı',
                'screen_page_views' => 'Sayfa Görüntüleme',
                'conversions' => 'Dönüşüm',
                'total_revenue' => 'Gelir',
                'event_count' => 'Etkinlik',
                'conversion_rate' => 'Dönüşüm Oranı %',
            ],
            'system' => [
                'api_errors' => 'API Hata Sayısı',
                'failed_emails' => 'Başarısız Mail Sayısı',
            ],
        ];
    }

    public static function label(string $platform, string $metric): string
    {
        return self::all()[$platform][$metric] ?? $metric;
    }

    /**
     * @return array<string>
     */
    public static function metricsFor(string $platform): array
    {
        return array_keys(self::all()[$platform] ?? []);
    }
}
