<?php
/**
 * Admin - İade Talepleri Yönetimi (Kargo Sonrası / Teslimat Sonrası)
 * Konum: /magaza/admin/siparisler/iadeler.php
 */

require_once '../../includes/db.php';
require_once '../../includes/functions.php';
require_once '../../includes/mail.php';
require_once '../../includes/sms.php';

// Güvenlik Kontrolü
adminCheck();

$mesaj = '';

// Eğer bir önceki işlemden gelen geçici bir mesaj varsa onu al ve sil
if (isset($_SESSION['alert_message'])) {
    $mesaj = $_SESSION['alert_message'];
    unset($_SESSION['alert_message']);
}

/**
 * --- İŞLEM 1: İADE TALEBİNİ ONAYLA (Kargo Kodu Ver) ---
 */
if (isset($_POST['approve_return_request'])) {
    $request_id = (int)$_POST['request_id'];
    $kargo_kodu = trim($_POST['return_tracking_code']);
    $admin_note = trim($_POST['admin_note']);

    if (empty($kargo_kodu)) {
        $_SESSION['alert_message'] = "<div class='alert alert-warning'>İade işlemi için müşteriye bir kargo anlaşma kodu vermelisiniz.</div>";
    } else {
        $db->prepare("UPDATE order_returns SET status = 'approved', return_tracking_code = ?, admin_note = ? WHERE id = ?")
           ->execute([$kargo_kodu, $admin_note, $request_id]);
        
        // Bildirim atmak için sipariş sahibi bilgisini çekelim
        $usr_stmt = $db->prepare("SELECT u.id as user_id, u.name, u.email, u.phone, o.order_number, o.id as order_id FROM order_returns r JOIN orders o ON r.order_id = o.id JOIN users u ON r.user_id = u.id WHERE r.id = ?");
        $usr_stmt->execute([$request_id]);
        $usr = $usr_stmt->fetch();

        // BİLDİRİM TETİKLEYİCİ: İade Onaylandı ve Kargo Kodu Verildi
        if($usr && $usr['user_id'] > 0) {
            $bildirim_metni = "#{$usr['order_number']} numaralı siparişinize ait iade talebiniz onaylandı. Kargo Kodunuz: {$kargo_kodu}.";
            if(!empty($admin_note)) {
                $bildirim_metni .= " Not: " . htmlspecialchars($admin_note);
            }
            siteBildirimGonder($usr['user_id'], "İade Talebiniz Onaylandı", $bildirim_metni, "siparis-detay.php?id={$usr['order_id']}", "bi-arrow-counterclockwise text-primary");
            
            // --- SMS ve E-Posta ---
            $mail_baslik = "İade Talebiniz Onaylandı - Sipariş No: " . $usr['order_number'];
            $mail_icerik = "Merhaba " . $usr['name'] . ",<br><br>";
            $mail_icerik .= "<b>" . $usr['order_number'] . "</b> numaralı siparişiniz için oluşturduğunuz iade talebi onaylanmıştır.<br>";
            $mail_icerik .= "Ürünü ücretsiz gönderebilmeniz için iade kargo kodunuz: <b>" . $kargo_kodu . "</b><br><br>";
            if (!empty($admin_note)) {
                $mail_icerik .= "<b>Ek Not:</b> " . htmlspecialchars($admin_note) . "<br><br>";
            }
            $mail_icerik .= "Ürün depomuza ulaştıktan sonra ücret iadeniz bankanıza yapılacaktır.<br>İyi günler dileriz.";
            sendSystemMail($usr['email'], $mail_baslik, $mail_icerik);

            $sms_metni = "Sayin " . $usr['name'] . ", " . $usr['order_number'] . " nolu siparis iade talebiniz onaylanmistir. Iade Kargo Kodunuz: " . $kargo_kodu . " Bizi tercih ettiginiz icin tesekkur ederiz.";
            sms_send_simple($usr['phone'], $sms_metni);
        }

        $_SESSION['alert_message'] = "<div class='alert alert-success shadow-sm'>İade talebi onaylandı. Müşteriye kargo kodu iletildi. Ürünün depoya gelmesi bekleniyor.</div>";
    }
    
    // PRG Yönlendirmesi
    header("Location: iadeler.php");
    exit;
}

/**
 * --- İŞLEM 2: İADEYİ TAMAMLA (Ürün Depoya Geldi, Stok ve Para İadesi) ---
 */
if (isset($_POST['complete_return'])) {
    $request_id = (int)$_POST['request_id'];
    $order_id = (int)$_POST['order_id'];

    try {
        $db->beginTransaction();

        // 1. Talebi Tamamlandı yap
        $db->prepare("UPDATE order_returns SET status = 'completed', updated_at = NOW() WHERE id = ?")->execute([$request_id]);

        // 2. Sipariş durumunu 'returned' (İade Edildi) yap
        $db->prepare("UPDATE orders SET status = 'cancelled' WHERE id = ?")->execute([$order_id]);

        // 3. STOKLARI GERİ YÜKLE (Profesyonel Paket Zekası Dahil)
        $items_stmt = $db->prepare("SELECT oi.product_id, oi.quantity, p.type FROM order_items oi JOIN products p ON oi.product_id = p.id WHERE oi.order_id = ?");
        $items_stmt->execute([$order_id]);
        $order_items = $items_stmt->fetchAll();

        foreach ($order_items as $item) {
            if ($item['type'] == 'physical' || $item['type'] == 'single_exam') {
                $db->prepare("UPDATE products SET stock_quantity = stock_quantity + ? WHERE id = ?")
                   ->execute([$item['quantity'], $item['product_id']]);
            } 
            elseif ($item['type'] == 'exam_package') {
                $pkg_items = $db->prepare("SELECT exam_product_id FROM package_items WHERE package_product_id = ?");
                $pkg_items->execute([$item['product_id']]);
                foreach ($pkg_items->fetchAll() as $p_item) {
                    $db->prepare("UPDATE products SET stock_quantity = stock_quantity + ? WHERE id = ?")
                       ->execute([$item['quantity'], $p_item['exam_product_id']]);
                }
            }
        }

        // 4. Müşteriye Bildirim
        $usr_stmt = $db->prepare("SELECT u.id as user_id, u.name, u.email, u.phone, o.order_number FROM orders o JOIN users u ON o.user_id = u.id WHERE o.id = ?");
        $usr_stmt->execute([$order_id]);
        $usr = $usr_stmt->fetch();

        // E-Posta ve SMS Gönderimi
        sendSystemMail($usr['email'], "İade İşleminiz Tamamlandı", "Merhaba {$usr['name']}, #{$usr['order_number']} nolu siparişinizin iade süreci depomuza ulaşarak tamamlanmıştır. Ücret iadeniz bankanıza iletilmiştir.");
        
        $sms_metni = "Sayin " . $usr['name'] . ", " . $usr['order_number'] . " nolu siparis iadeniz depomuza ulasmis ve ucret iadesi bankaniza iletilmistir. Iyi gunler dileriz.";
        sms_send_simple($usr['phone'], $sms_metni);

        // BİLDİRİM TETİKLEYİCİ: İade Süreci Tamamlandı
        if($usr && $usr['user_id'] > 0) {
            $bildirim_metni = "#{$usr['order_number']} numaralı siparişinize ait iade kargosu depomuza ulaşmış ve iade işleminiz tamamlanmıştır.";
            siteBildirimGonder($usr['user_id'], "İade İşleminiz Tamamlandı", $bildirim_metni, "siparis-detay.php?id={$order_id}", "bi-check-all text-success");
        }

        $db->commit();
        $_SESSION['alert_message'] = "<div class='alert alert-success shadow-sm'><i class='bi bi-check-all me-2'></i> İade başarıyla sonuçlandırıldı. Stoklar güncellendi. E-Posta ve SMS atıldı.</div>";

    } catch (Exception $e) {
        $db->rollBack();
        $_SESSION['alert_message'] = "<div class='alert alert-danger'>Hata: " . $e->getMessage() . "</div>";
    }
    
    // PRG Yönlendirmesi
    header("Location: iadeler.php");
    exit;
}

// --- İADE TALEPLERİNİ ÇEK ---
$sql = "
    SELECT r.*, o.order_number, o.total_amount, u.name, u.surname, u.phone
    FROM order_returns r
    JOIN orders o ON r.order_id = o.id
    JOIN users u ON r.user_id = u.id
    WHERE r.request_type = 'return'
    ORDER BY FIELD(r.status, 'pending', 'approved', 'completed', 'rejected'), r.created_at DESC
";
$iadeler = $db->query($sql)->fetchAll(PDO::FETCH_ASSOC);

require_once '../header.php';
?>

<div class="row mb-4 align-items-center text-dark">
    <div class="col-md-8">
        <h2 class="fw-bold mb-0"><i class="bi bi-arrow-counterclockwise text-primary me-2"></i>İade Talepleri Yönetimi</h2>
        <p class="text-muted small mt-1">Müşterilerin teslimat sonrası oluşturduğu fiziksel iade süreçlerini buradan yönetin.</p>
    </div>
</div>

<?= $mesaj; ?>

<div class="card shadow-sm border-0 mb-5 rounded-4 overflow-hidden">
    <div class="card-body p-0">
        <div class="table-responsive text-dark">
            <table class="table table-hover align-middle mb-0">
                <thead class="table-dark">
                    <tr>
                        <th class="ps-4 py-3">Talep Tarihi</th>
                        <th>Sipariş / Müşteri</th>
                        <th>İade Sebebi</th>
                        <th class="text-center">Durum / Kargo Kodu</th>
                        <th class="text-end pe-4">Aksiyon</th>
                    </tr>
                </thead>
                <tbody>
                    <?php if (count($iadeler) > 0): ?>
                        <?php foreach ($iadeler as $iade): ?>
                        <tr class="<?= $iade['status'] == 'pending' ? 'bg-primary bg-opacity-10' : '' ?>">
                            <td class="ps-4 small text-muted">
                                <div class="fw-bold text-dark"><?= date('d.m.Y', strtotime($iade['created_at'])) ?></div>
                                <?= date('H:i', strtotime($iade['created_at'])) ?>
                            </td>
                            <td>
                                <a href="detay.php?id=<?= $iade['order_id'] ?>" class="fw-bold text-decoration-none">#<?= $iade['order_number'] ?></a>
                                <div class="small fw-bold"><?= htmlspecialchars($iade['name'].' '.$iade['surname']) ?></div>
                                <div class="text-muted" style="font-size:11px;"><?= $iade['phone'] ?></div>
                            </td>
                            <td style="max-width: 250px;">
                                <span class="badge bg-light text-dark border mb-1"><?= htmlspecialchars($iade['reason']) ?></span>
                                <div class="small text-muted fst-italic text-truncate"><?= htmlspecialchars($iade['customer_note'] ?? 'Not yok') ?></div>
                            </td>
                            <td class="text-center">
                                <?php if($iade['status'] == 'pending'): ?>
                                    <span class="badge bg-warning text-dark px-3 py-2 rounded-pill">İnceleme Bekliyor</span>
                                <?php elseif($iade['status'] == 'approved'): ?>
                                    <span class="badge bg-info text-white px-3 py-2 rounded-pill mb-1">Kargo Bekleniyor</span>
                                    <div class="small fw-bold text-primary">Kod: <?= $iade['return_tracking_code'] ?></div>
                                <?php elseif($iade['status'] == 'completed'): ?>
                                    <span class="badge bg-success px-3 py-2 rounded-pill">İade Tamamlandı</span>
                                <?php else: ?>
                                    <span class="badge bg-danger px-3 py-2 rounded-pill">Reddedildi</span>
                                <?php endif; ?>
                            </td>
                            <td class="text-end pe-4">
                                <?php if($iade['status'] == 'pending'): ?>
                                    <button class="btn btn-sm btn-primary fw-bold rounded-pill px-3" onclick="openReturnModal(<?= $iade['id'] ?>, '<?= $iade['order_number'] ?>')">
                                        Onayla & Kod Ver
                                    </button>
                                <?php elseif($iade['status'] == 'approved'): ?>
                                    <form action="" method="POST" onsubmit="return confirm('Ürün depoya ulaştı mı ve stokları geri yüklemek istiyor musunuz?')">
                                        <input type="hidden" name="request_id" value="<?= $iade['id'] ?>">
                                        <input type="hidden" name="order_id" value="<?= $iade['order_id'] ?>">
                                        <button type="submit" name="complete_return" class="btn btn-sm btn-success fw-bold rounded-pill px-3">
                                            <i class="bi bi-box-arrow-in-down"></i> Depoya Girdi / Tamamla
                                        </button>
                                    </form>
                                <?php else: ?>
                                    <button class="btn btn-sm btn-light border disabled">İşlem Kapalı</button>
                                <?php endif; ?>
                            </td>
                        </tr>
                        <?php endforeach; ?>
                    <?php else: ?>
                        <tr><td colspan="5" class="text-center py-5 text-muted">İade talebi bulunmuyor.</td></tr>
                    <?php endif; ?>
                </tbody>
            </table>
        </div>
    </div>
</div>

<div class="modal fade" id="returnModal" tabindex="-1" aria-hidden="true">
    <div class="modal-dialog modal-dialog-centered">
        <div class="modal-content border-0 shadow-lg rounded-4">
            <form action="" method="POST">
                <div class="modal-header bg-primary text-white">
                    <h5 class="modal-title fw-bold">İade Talebini Onayla</h5>
                    <button type="button" class="btn-close btn-close-white" data-bs-dismiss="modal"></button>
                </div>
                <div class="modal-body p-4 text-dark">
                    <p><b>#<span id="modalOrderNo"></span></b> nolu sipariş için iade sürecini başlatıyorsunuz.</p>
                    <input type="hidden" name="request_id" id="modalRequestId">
                    
                    <div class="mb-3">
                        <label class="form-label small fw-bold text-muted">İADE KARGO KODU (Müşteriye Gidecek)</label>
                        <input type="text" name="return_tracking_code" class="form-control border-2" placeholder="Örn: 987654321 (Anlaşma Kodunuz)" required>
                    </div>

                    <div class="mb-3">
                        <label class="form-label small fw-bold text-muted">Müşteriye Not / Talimat</label>
                        <textarea name="admin_note" class="form-control border-2" rows="2" placeholder="Örn: Ürünü orijinal kutusuyla paketleyip Yurtiçi Kargo'ya teslim ediniz."></textarea>
                    </div>
                </div>
                <div class="modal-footer bg-light">
                    <button type="submit" name="approve_return_request" class="btn btn-primary fw-bold rounded-pill px-4">Süreci Başlat</button>
                </div>
            </form>
        </div>
    </div>
</div>

<script>
function openReturnModal(id, orderNo) {
    document.getElementById('modalRequestId').value = id;
    document.getElementById('modalOrderNo').innerText = orderNo;
    new bootstrap.Modal(document.getElementById('returnModal')).show();
}
</script>

<?php require_once '../footer.php'; ?>