HEX
Server: LiteSpeed
System:
User: ()
PHP: 7.4.33
Disabled: sendmail,mail,exec,shell_exec,dl,system,passthru,pclose,proc_open,proc_nice,proc_terminate,proc_get_status,proc_close,leak,apache_child_terminate,posix_kill,posix_mkfifo,posix_setpgid,posix_setsid,posix_setuid,escapeshellcmd,escapeshellarg shell-exec,fpassthru,crack_check,crack_closedict,crack_getlastmessage,crack_opendict,psockopen,php_uname,symlink,ini_restore,posix_getpwuid,posix_getegid,posix_getcwd,posix_geteuid,posix_getgroups,posix_uname,posix_setuid,eval,show_source,passthru,popen,allow_url_fopen,get_current_user,getmyuid,getmygid,entre2v2,index_changer_wp,index_changer_joomla,exec_mode_1,exec_mode_2,exec_mode_3,wsoFooter,wsoEx,wsoViewSize,wsoPerms,wsoPermsColor,ukuran,tulis,ambil,tukar,entre2v2,rapih,magicboom,goaction,scookie,showstat,index_changer
Upload Files
File: /home/muratemr/theotto.tr/admin/customer_tags.php
<?php
/**
 * admin/customer_tags.php
 */

declare(strict_types=1);

$page_title  = 'Müşteri Etiketleri';
$active_menu = 'customer_tags';

require_once __DIR__ . '/../includes/db.php';
require_once __DIR__ . '/../includes/auth.php';
require_once __DIR__ . '/../includes/functions.php';
require_once __DIR__ . '/../includes/csrf.php';

require_permission('customer_tags');

require_once __DIR__ . '/../includes/admin_layout.php';

$tags = db_rows("
    SELECT ct.*, COUNT(c.id) AS customer_count
    FROM customer_tags ct
    LEFT JOIN customers c ON c.tag_id = ct.id
    GROUP BY ct.id
    ORDER BY ct.is_default DESC, ct.name ASC
");
?>

<div class="d-flex justify-content-between align-items-center mb-3">
    <h5 class="mb-0 text-gold"><i class="bi bi-tags me-2"></i>Müşteri Etiketleri</h5>
    <?php if (is_admin()): ?>
    <button class="btn btn-gold btn-sm" onclick="openAddModal()">
        <i class="bi bi-plus-lg me-1"></i>Yeni Etiket
    </button>
    <?php endif; ?>
</div>

<div class="card">
    <div class="card-body p-0">
        <div class="table-responsive">
            <table class="table table-hover mb-0">
                <thead>
                    <tr>
                        <th>Etiket Adı</th>
                        <th>İndirim</th>
                        <th>Otomatik Not</th>
                        <th>Varsayılan</th>
                        <th>Müşteri</th>
                        <th>İşlemler</th>
                    </tr>
                </thead>
                <tbody>
                <?php foreach ($tags as $t): ?>
                    <tr>
                        <td><?= e($t['name']) ?></td>
                        <td>
                            <?= $t['discount_rate'] > 0
                                ? '<span class="badge bg-success">%' . $t['discount_rate'] . '</span>'
                                : '<span class="text-muted">—</span>' ?>
                        </td>
                        <td class="fs-12 text-muted"><?= $t['auto_note'] ? e(mb_strimwidth($t['auto_note'],0,50,'...')) : '—' ?></td>
                        <td>
                            <?= $t['is_default']
                                ? '<span class="badge bg-gold text-dark" style="background:var(--gold)!important">Varsayılan</span>'
                                : '' ?>
                        </td>
                        <td><span class="badge bg-secondary"><?= $t['customer_count'] ?></span></td>
                        <td>
                            <?php if (is_admin()): ?>
                            <button class="btn btn-sm btn-outline-secondary btn-action" onclick="openEditModal(<?= htmlspecialchars(json_encode($t)) ?>)" title="Düzenle">
                                <i class="bi bi-pencil"></i>
                            </button>
                            <?php if (!$t['is_default'] && !$t['customer_count']): ?>
                            <button class="btn btn-sm btn-outline-danger btn-action" onclick="deleteTag(<?= $t['id'] ?>)" title="Sil">
                                <i class="bi bi-trash"></i>
                            </button>
                            <?php elseif ($t['is_default']): ?>
                            <span class="fs-12 text-muted ms-1" title="Varsayılan etiket silinemez"><i class="bi bi-lock"></i></span>
                            <?php elseif ($t['customer_count']): ?>
                            <span class="fs-12 text-muted ms-1" title="Bağlı müşteri var"><i class="bi bi-lock"></i></span>
                            <?php endif; ?>
                            <?php if (!$t['is_default']): ?>
                            <button class="btn btn-sm btn-outline-gold btn-action" style="border-color:var(--gold);color:var(--gold)" onclick="setDefault(<?= $t['id'] ?>)" title="Varsayılan Yap">
                                <i class="bi bi-star"></i>
                            </button>
                            <?php endif; ?>
                            <?php endif; ?>
                        </td>
                    </tr>
                <?php endforeach; ?>
                </tbody>
            </table>
        </div>
    </div>
</div>

<!-- Etiket Modalı -->
<div class="modal fade" id="tagFormModal" tabindex="-1">
    <div class="modal-dialog">
        <div class="modal-content">
            <div class="modal-header">
                <h6 class="modal-title" id="tagFormTitle">Yeni Etiket</h6>
                <button type="button" class="btn-close" data-bs-dismiss="modal"></button>
            </div>
            <div class="modal-body">
                <input type="hidden" id="tagId" value="">
                <div class="mb-3">
                    <label class="form-label">Etiket Adı *</label>
                    <input type="text" id="tagName" class="form-control" placeholder="Örn: VIP, Düzenli Müşteri...">
                </div>
                <div class="mb-3">
                    <label class="form-label">İndirim Oranı</label>
                    <select id="tagDiscount" class="form-select">
                        <option value="0">İndirim yok</option>
                        <option value="5">%5</option>
                        <option value="10">%10</option>
                        <option value="15">%15</option>
                        <option value="20">%20</option>
                        <option value="25">%25</option>
                    </select>
                </div>
                <div class="mb-3">
                    <label class="form-label">Otomatik Not</label>
                    <textarea id="tagAutoNote" class="form-control" rows="3" placeholder="Bu etiket atandığında müşteri notuna otomatik eklenecek metin..."></textarea>
                    <div class="form-text" style="color:rgba(255,255,255,0.55)">Boş bırakılabilir. Etiket atanınca tarih ile birlikte müşteri notuna eklenir.</div>
                </div>
            </div>
            <div class="modal-footer">
                <button type="button" class="btn btn-secondary btn-sm" data-bs-dismiss="modal">İptal</button>
                <button type="button" class="btn btn-gold btn-sm" id="tagSaveBtn">Kaydet</button>
            </div>
        </div>
    </div>
</div>

<script>
function openAddModal() {
    document.getElementById('tagId').value      = '';
    document.getElementById('tagName').value     = '';
    document.getElementById('tagDiscount').value = '0';
    document.getElementById('tagAutoNote').value = '';
    document.getElementById('tagFormTitle').textContent = 'Yeni Etiket';
    openModal('tagFormModal');
}

function openEditModal(tag) {
    document.getElementById('tagId').value      = tag.id;
    document.getElementById('tagName').value     = tag.name;
    document.getElementById('tagDiscount').value = tag.discount_rate;
    document.getElementById('tagAutoNote').value = tag.auto_note || '';
    document.getElementById('tagFormTitle').textContent = 'Etiket Düzenle';
    openModal('tagFormModal');
}

document.getElementById('tagSaveBtn').addEventListener('click', async () => {
    const id = document.getElementById('tagId').value;
    const name = document.getElementById('tagName').value.trim();
    if (!name) { showToast('Etiket adı zorunludur.', 'error'); return; }

    const res = await apiPost('/api/admin/customer_tags.php', {
        action: id ? 'update' : 'create',
        id,
        name,
        discount_rate: document.getElementById('tagDiscount').value,
        auto_note: document.getElementById('tagAutoNote').value,
    });
    if (res.success) {
        closeModal('tagFormModal');
        showToast(res.message, 'success');
        setTimeout(() => location.reload(), 800);
    } else {
        showToast(res.message, 'error');
    }
});

async function deleteTag(id) {
    if (!confirm('Bu etiketi silmek istiyor musunuz?')) return;
    const res = await apiPost('/api/admin/customer_tags.php', { action: 'delete', id });
    if (res.success) {
        showToast('Silindi.', 'success');
        setTimeout(() => location.reload(), 800);
    } else {
        showToast(res.message, 'error');
    }
}

async function setDefault(id) {
    const res = await apiPost('/api/admin/customer_tags.php', { action: 'set_default', id });
    if (res.success) {
        showToast('Varsayılan güncellendi.', 'success');
        setTimeout(() => location.reload(), 800);
    } else {
        showToast(res.message, 'error');
    }
}
</script>

<?php require_once __DIR__ . '/../includes/admin_layout_end.php'; ?>