<?php
/** Müşteri yorumları: listeleme + yorum bırakma (onaya düşer) */

declare(strict_types=1);

require_once __DIR__ . '/includes/functions.php';
require_once __DIR__ . '/includes/icons.php';

$mesaj = '';
$hata  = '';

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    csrf_dogrula();
    $ad      = trim((string) ($_POST['author'] ?? ''));
    $mahalle = trim((string) ($_POST['mahalle'] ?? ''));
    $puan    = (int) ($_POST['rating'] ?? 5);
    $yorum   = trim((string) ($_POST['rtext'] ?? ''));
    $tuzak   = trim((string) ($_POST['website'] ?? '')); // honeypot
    $ip      = (string) ($_SERVER['REMOTE_ADDR'] ?? '');

    if ($tuzak !== '') {
        // bot: sessizce başarılı gibi davran
        $mesaj = 'Yorumunuz alındı, onaylandıktan sonra yayınlanacaktır.';
    } else {
        // IP bazlı günlük limit
        $stLimit = db()->prepare("SELECT COUNT(*) FROM reviews WHERE ip = ? AND created_at > datetime('now', '-1 days')");
        $stLimit->execute([$ip]);
        $gunlukYorum = (int) $stLimit->fetchColumn();
        if ($gunlukYorum >= 3) {
            $hata = 'Güvenlik nedeniyle günde en fazla 3 yorum bırakabilirsiniz.';
        } elseif (mb_strlen($ad) < 2 || mb_strlen($yorum) < 10) {
            $hata = 'Lütfen adınızı ve en az 10 karakterlik bir yorum yazın.';
        } elseif (empty($_POST['kvkk_onay'])) {
            $hata = 'Devam etmek için gizlilik politikasını okuyup onaylamanız gerekiyor.';
        } else {
            $puan = max(1, min(5, $puan));
            $st = db()->prepare('INSERT INTO reviews (author, mahalle, rating, rtext, service, ip, is_approved) VALUES (?, ?, ?, ?, ?, ?, 0)');
            $st->execute([$ad, $mahalle, $puan, $yorum, trim((string) ($_POST['service'] ?? '')), $ip]);
            $mesaj = 'Yorumunuz alındı, onaylandıktan sonra yayınlanacaktır. Teşekkürler.';
        }
    }
}

$yorumlar = onayli_yorumlar();
$sayfa = sayfa_bilgi('yorumlar');

$review_schemas = [];
foreach ($yorumlar as $y) {
    $review_schemas[] = [
        '@context' => 'https://schema.org',
        '@type' => 'Review',
        'author' => ['@type' => 'Person', 'name' => yazar_anonimlestir($y['author'])],
        'reviewRating' => [
            '@type' => 'Rating',
            'ratingValue' => (string) (int) $y['rating'],
            'bestRating' => '5',
        ],
        'reviewBody' => $y['rtext'],
        'reviewAspect' => $y['service'] !== '' ? $y['service'] : 'Çilingir hizmeti',
        'itemReviewed' => ['@id' => url('#isletme')],
        'publisher' => ['@id' => url('#isletme')],
        'datePublished' => date('c', strtotime($y['created_at'])),
    ];
}

$seo = [
    'title' => $sayfa['meta_title'] !== '' ? $sayfa['meta_title'] : 'Müşteri Yorumları | ' . setting('site_name'),
    'desc'  => $sayfa['meta_desc'] !== '' ? $sayfa['meta_desc'] : 'Menderes Çilingir müşteri yorumları: mahalle mahalle gerçek deneyimler, puanlar ve hizmet detayları.',
    'schema' => array_merge(
        [schema_breadcrumb([['Ana Sayfa', ''], ['Yorumlar', 'yorumlar']])],
        $review_schemas
    ),
];
$aktif = 'yorumlar';

require __DIR__ . '/includes/header.php';
?>

<section class="sayfa-baslik">
    <div class="kapsayici">
        <nav class="breadcrumb" aria-label="Sayfa yolu"><a href="/">Ana Sayfa</a> <span>/</span> Yorumlar</nav>
        <h1><?= e($sayfa['heading'] !== '' ? $sayfa['heading'] : 'Müşteri Yorumları') ?></h1>
        <?php if ($sayfa['content'] !== ''): ?><p><?= e($sayfa['content']) ?></p><?php endif; ?>
    </div>
</section>

<section class="bolum">
    <div class="kapsayici">
        <?php if ($mesaj): ?><div class="uyari uyari-ok"><?= e($mesaj) ?></div><?php endif; ?>
        <?php if ($hata): ?><div class="uyari uyari-hata"><?= e($hata) ?></div><?php endif; ?>

        <div class="yorum-grid">
            <?php foreach ($yorumlar as $y): ?>
            <figure class="yorum-kart">
                <div class="yorum-yildiz" aria-label="<?= (int) $y['rating'] ?> / 5 yıldız">
                    <?php for ($i = 0; $i < 5; $i++): ?>
                        <span class="<?= $i < (int) $y['rating'] ? 'dolu' : 'bos' ?>"><?= ikon('yildiz', 'ikon ikon-s') ?></span>
                    <?php endfor; ?>
                </div>
                <blockquote><?= e($y['rtext']) ?></blockquote>
                <figcaption>
                    <strong><?= e(yazar_anonimlestir($y['author'])) ?></strong>
                    <span><?= e($y['mahalle']) ?><?= $y['service'] !== '' ? ' · ' . e($y['service']) : '' ?></span>
                </figcaption>
            </figure>
            <?php endforeach; ?>
        </div>
    </div>
</section>

<section class="bolum bolum-koyu">
    <div class="kapsayici dar">
        <div class="bolum-baslik">
            <p class="ust-etiket">Deneyiminizi paylaşın</p>
            <h2>Yorum bırakın</h2>
            <p>Yorumlar, editör onayı sonrası yayınlanır.</p>
        </div>
        <form method="post" action="/yorumlar" class="form-kart">
            <?= csrf_alan() ?>
            <input type="text" name="website" class="tuzak" tabindex="-1" autocomplete="off" aria-hidden="true">
            <div class="form-satir">
                <label>Adınız
                    <input type="text" name="author" required maxlength="60" placeholder="Adınız ve soyadınız (yayında A. Y. olarak görünür)">
                </label>
                <label>Mahalleniz
                    <input type="text" name="mahalle" maxlength="60" placeholder="örn. Kemalpaşa Mah.">
                </label>
            </div>
            <div class="form-satir">
                <label>Puanınız
                    <select name="rating">
                        <option value="5">5 — Çok memnunum</option>
                        <option value="4">4 — Memnunum</option>
                        <option value="3">3 — İdare eder</option>
                        <option value="2">2 — Memnun değilim</option>
                        <option value="1">1 — Kötü</option>
                    </select>
                </label>
                <label>Aldığınız hizmet
                    <input type="text" name="service" maxlength="80" placeholder="örn. Kapı açma">
                </label>
            </div>
            <label>Yorumunuz
                <textarea name="rtext" required minlength="10" maxlength="600" rows="4" placeholder="Deneyiminizi kısaca anlatın..."></textarea>
            </label>
            <label class="onay-kutusu kvkk-onay">
                <input type="checkbox" name="kvkk_onay" value="1" required>
                Kişisel verilerimin işlenmesine ilişkin <a href="/gizlilik" target="_blank" rel="noopener">gizlilik politikası</a>nı okudum ve kabul ediyorum.
            </label>
            <button type="submit" class="btn btn-acil">Yorumu Gönder</button>
        </form>
    </div>
</section>

<?php require __DIR__ . '/includes/footer.php'; ?>
