<?php
// users.php
header('Content-Type: text/html; charset=utf-8');
require 'db.php';
require 'auth.php';
require 'system_log_helper.php';

require_login();
$user = current_user();

// sayfa görüntüleme logu
system_log('page_view', 'jobs.php?'.($_SERVER['QUERY_STRING'] ?? ''));

// Sadece admin erişebilsin
if ($user['role'] != 1) {
    die("Bu sayfaya erişim yetkiniz yok.");
}

$errors = [];
$success = '';
$editUser = null;

// Rol label'ları
$roleLabels = [
    1 => 'Admin',
    2 => 'Çağrı Merkezi',
    3 => 'Teknisyen'
];

// ---------- KULLANICI SİLME (POST) ----------
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['delete_user'])) {

    $deleteId = (int)($_POST['delete_id'] ?? 0);

    if ($deleteId <= 0) {
        $errors[] = "Geçersiz kullanıcı ID.";
    } else {

        try {
            $pdo->beginTransaction();

            // 1) Bu kullanıcının teknisyen olduğu veya oluşturduğu tüm işlerin ID'lerini al
            $jobIdStmt = $pdo->prepare("
                SELECT id 
                FROM jobs 
                WHERE technician_id = ? OR created_by = ?
            ");
            $jobIdStmt->execute([$deleteId, $deleteId]);
            $jobIds = $jobIdStmt->fetchAll(PDO::FETCH_COLUMN);

            if (!empty($jobIds)) {
                $placeholders = implode(',', array_fill(0, count($jobIds), '?'));

                // 2) Bu işlere ait FOTOĞRAFLARI sil (job_files.job_id FK)
                $delFilesByJob = $pdo->prepare("
                    DELETE FROM job_files 
                    WHERE job_id IN ($placeholders)
                ");
                $delFilesByJob->execute($jobIds);

                // 3) Bu işlere ait LOG’ları sil (job_logs.job_id FK)
                $delLogsByJob = $pdo->prepare("
                    DELETE FROM job_logs 
                    WHERE job_id IN ($placeholders)
                ");
                $delLogsByJob->execute($jobIds);

                // 4) İşleri sil (jobs.id)
                $delJobs = $pdo->prepare("
                    DELETE FROM jobs 
                    WHERE id IN ($placeholders)
                ");
                $delJobs->execute($jobIds);
            }

            // 5) Kullanıcının yüklediği fotoğrafları sil (job_files.user_id FK varsa)
            $delFilesByUser = $pdo->prepare("
                DELETE FROM job_files 
                WHERE user_id = ?
            ");
            $delFilesByUser->execute([$deleteId]);

            // 6) Kullanıcının kendi loglarını sil (job_logs.user_id FK)
            $delLogsByUser = $pdo->prepare("
                DELETE FROM job_logs 
                WHERE user_id = ?
            ");
            $delLogsByUser->execute([$deleteId]);

            // 7) Son olarak kullanıcıyı sil
            $delUser = $pdo->prepare("DELETE FROM users WHERE id = ?");
            $delUser->execute([$deleteId]);

            $pdo->commit();
            $success = "Kullanıcı ve ona bağlı tüm kayıtlar başarıyla silindi.";
            system_log('user_delete', 'Kullanıcı ve işleri silindi. ID: '.$deleteId);

        } catch (Exception $e) {
            $pdo->rollBack();
            $errors[] = "Kullanıcı silinemedi: " . $e->getMessage();
        }
    }

    // Listeyi yeniden çek
    $listStmt = $pdo->query("
        SELECT id, name, email, role
        FROM users
        WHERE role IN (2,3)
        ORDER BY id ASC
    ");
    $usersList = $listStmt->fetchAll(PDO::FETCH_ASSOC);
}


    /* ---------- KULLANICI GÜNCELLEME ---------- */
    elseif (isset($_POST['update_user'])) {

        $id       = (int)($_POST['id'] ?? 0);
        $name     = trim($_POST['name'] ?? '');
        $email    = trim($_POST['email'] ?? '');
        $password = trim($_POST['password'] ?? '');
        $role     = (int)($_POST['role'] ?? 2);

        if ($id <= 0) {
            $errors[] = "Geçersiz kullanıcı.";
        }
        if ($name === '') {
            $errors[] = "İsim soyisim zorunludur.";
        }
        if ($email === '') {
            $errors[] = "E-posta zorunludur.";
        }
        if (!in_array($role, [1,2,3], true)) {
            $errors[] = "Geçersiz rol.";
        }

        // Aynı email başka kullanıcıda var mı?
        if (empty($errors)) {
            $chk = $pdo->prepare("SELECT id FROM users WHERE email = ? AND id <> ?");
            $chk->execute([$email, $id]);
            if ($chk->fetch()) {
                $errors[] = "Bu e-posta başka bir kullanıcı tarafından kullanılıyor.";
            }
        }

        if (empty($errors)) {

            if ($password !== '') {
                // Şifre değişecek
                $stmt = $pdo->prepare("
                    UPDATE users
                    SET name = ?, email = ?, password = ?, role = ?
                    WHERE id = ?
                ");
                $stmt->execute([$name, $email, $password, $role, $id]);
            } else {
                // Şifre aynı kalsın
                $stmt = $pdo->prepare("
                    UPDATE users
                    SET name = ?, email = ?, role = ?
                    WHERE id = ?
                ");
                $stmt->execute([$name, $email, $role, $id]);
            }
            system_log('user_update', 'Kullanıcı güncellendi. ID: '.$id);


            $success = "Kullanıcı bilgileri güncellendi.";
        }

        // Düzenlenen kullanıcıyı formda tekrar göstermek için çekelim
        if ($id > 0) {
            $st = $pdo->prepare("SELECT id, name, email, role FROM users WHERE id = ?");
            $st->execute([$id]);
            $editUser = $st->fetch(PDO::FETCH_ASSOC);
        }
    }


/* ---------- DÜZENLENECEK KULLANICI SEÇİMİ (GET) ---------- */
if ($_SERVER['REQUEST_METHOD'] === 'GET' && isset($_GET['id'])) {
    $editId = (int)$_GET['id'];
    if ($editId > 0) {
        $st = $pdo->prepare("SELECT id, name, email, role FROM users WHERE id = ?");
        $st->execute([$editId]);
        $editUser = $st->fetch(PDO::FETCH_ASSOC);
    }
}

/* ---------- TÜM TEKNİSYEN + ÇAĞRI MERKEZİ LİSTESİ ---------- */
$listStmt = $pdo->query("
    SELECT id, name, email, role
    FROM users
    WHERE role IN (2,3)
    ORDER BY id ASC
");
$usersList = $listStmt->fetchAll(PDO::FETCH_ASSOC);

?>
<!DOCTYPE html>
<html lang="tr">
<head>
    <meta charset="UTF-8">
    <title>Kullanıcı Listesi</title>
    <link rel="stylesheet" href="style.css">
</head>
<body>

<div class="container">

    <div class="top-bar">
        <div><strong>Hoş geldin, <?php echo htmlspecialchars($user['name']); ?></strong></div>
        <div>
            <a href="jobs.php" class="btn">İşler</a>
            <a href="technician_create.php" class="btn">Teknisyen Ekle</a>
            <a href="user_callcenter_add.php" class="btn">Çağrı Merkezi Ekle</a>
            <a href="users.php" class="btn">Kullanıcılar</a>
            <a href="logout.php" class="btn">Çıkış</a>
        </div>
    </div>

    <div class="card">
        <h1>Kullanıcılar (Teknisyen + Çağrı Merkezi)</h1>

        <?php if (!empty($errors)): ?>
            <div class="alert alert-danger">
                <ul>
                    <?php foreach ($errors as $e): ?>
                        <li><?php echo htmlspecialchars($e); ?></li>
                    <?php endforeach; ?>
                </ul>
            </div>
        <?php endif; ?>

        <?php if ($success): ?>
            <div class="alert alert-success">
                <?php echo htmlspecialchars($success); ?>
            </div>
        <?php endif; ?>

        <?php if ($editUser): ?>
            <h2>Kullanıcı Düzenle: #<?php echo $editUser['id']; ?></h2>
            <form method="post" style="margin-bottom:20px;">
                <input type="hidden" name="update_user" value="1">
                <input type="hidden" name="id" value="<?php echo $editUser['id']; ?>">

                <label>İsim Soyisim:
                    <input type="text" name="name"
                           value="<?php echo htmlspecialchars($editUser['name']); ?>" required>
                </label>

                <label>E-posta:
                    <input type="email" name="email"
                           value="<?php echo htmlspecialchars($editUser['email']); ?>" required>
                </label>

                <label>Şifre (boş bırakırsan değişmez):
                    <input type="password" name="password">
                </label>

                <label>Rol:
                    <select name="role">
                        <option value="2" <?php echo ($editUser['role']==2?'selected':''); ?>>Çağrı Merkezi</option>
                        <option value="3" <?php echo ($editUser['role']==3?'selected':''); ?>>Teknisyen</option>
                        <option value="1" <?php echo ($editUser['role']==1?'selected':''); ?>>Admin</option>
                    </select>
                </label>

                <button type="submit" class="btn">Kaydet</button>
                <a href="users.php" class="btn">İptal</a>
            </form>
        <?php endif; ?>

        <div class="table-wrapper">
            <table>
                <tr>
                    <th>ID</th>
                    <th>İsim Soyisim</th>
                    <th>E-posta</th>
                    <th>Rol</th>
                    <th>İşlem</th>
                </tr>

                <?php if (empty($usersList)): ?>
                    <tr>
                        <td colspan="5" style="text-align:center;">Kayıtlı teknisyen veya çağrı merkezi kullanıcısı yok.</td>
                    </tr>
                <?php else: ?>
                    <?php foreach ($usersList as $u): ?>
                        <tr>
                            <td><?php echo $u['id']; ?></td>
                            <td><?php echo htmlspecialchars($u['name']); ?></td>
                            <td><?php echo htmlspecialchars($u['email']); ?></td>
                            <td><?php echo htmlspecialchars($roleLabels[$u['role']] ?? $u['role']); ?></td>
                            <td>
                                <a href="users.php?id=<?php echo $u['id']; ?>" class="btn">Düzenle</a>

                                <form method="post" style="display:inline;"
                                      onsubmit="return confirm('Bu kullanıcıyı tamamen silmek istediğine emin misin?');">
                                    <input type="hidden" name="delete_id" value="<?php echo $u['id']; ?>">
                                    <input type="hidden" name="delete_user" value="1">
                                    <button type="submit" class="btn" style="background:#d9534f;color:#fff;">
                                        Sil
                                    </button>
                                </form>

                            </td>
                        </tr>
                    <?php endforeach; ?>
                <?php endif; ?>

            </table>
        </div>
    </div>

</div>

</body>
</html>
