<?php

namespace App\Services;

class BadWordFilter
{
    /**
     * Türkçe küfür/hakaret listesi
     * Yönetici bu listeyi genişletebilir.
     */
    protected static array $words = [
        // Temel küfürler (sansürlü)
        'orospu', 'orospuçocuğu', 'oç', 'göt', 'piç', 'piçlik',
        'amk', 'amına', 'amcık', 'sik', 'sikerim', 'sikilmiş',
        'yarrak', 'yarak', 'taşak', 'götveren',
        'kahpe', 'kahpenin', 'fahişe', 'namussuz', 'alçak',
        'ibne', 'ibnelik', 'puşt', 'götveren', 'kaltak',
        // İngilizce
        'fuck', 'shit', 'bitch', 'asshole', 'bastard',
        'cunt', 'dick', 'cock', 'pussy',
    ];

    /**
     * Metni filtrele — küfürleri *** ile değiştir
     */
    public static function filter(string $text): string
    {
        foreach (static::$words as $word) {
            $replacement = str_repeat('*', mb_strlen($word));
            $text = preg_replace('/' . preg_quote($word, '/') . '/iu', $replacement, $text);
        }
        return $text;
    }

    /**
     * Metin küfür içeriyor mu?
     */
    public static function contains(string $text): bool
    {
        foreach (static::$words as $word) {
            if (preg_match('/' . preg_quote($word, '/') . '/iu', $text)) {
                return true;
            }
        }
        return false;
    }

    /**
     * Kaç adet küfür var?
     */
    public static function count(string $text): int
    {
        $count = 0;
        foreach (static::$words as $word) {
            $count += preg_match_all('/' . preg_quote($word, '/') . '/iu', $text);
        }
        return $count;
    }
}
