<?php
require_once __DIR__ . '/../config/config.php';
require_once __DIR__ . '/../includes/auth.php';

requireLogin();
$db = getDBConnection();
$userId = $_SESSION['user']['id'];

$error = '';
$success = '';

// Delete Address
if (isset($_GET['delete_addr'])) {
    $delId = (int)$_GET['delete_addr'];
    $stmt = $db->prepare("DELETE FROM addresses WHERE id = ? AND user_id = ?");
    $stmt->execute([$delId, $userId]);
    $success = 'ลบที่อยู่สำเร็จ';
}

// Set Default Address
if (isset($_GET['default_addr'])) {
    $defId = (int)$_GET['default_addr'];
    $db->prepare("UPDATE addresses SET is_default = 0 WHERE user_id = ?")->execute([$userId]);
    $db->prepare("UPDATE addresses SET is_default = 1 WHERE id = ? AND user_id = ?")->execute([$defId, $userId]);
    $success = 'ตั้งค่าที่อยู่หลักสำเร็จ';
}

// Update Profile Form
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['action_profile'])) {
    verifyCSRFToken($_POST['csrf_token'] ?? '');
    $fullname = sanitize($_POST['fullname'] ?? '');
    $phone = sanitize($_POST['phone'] ?? '');

    if (!empty($fullname)) {
        $stmt = $db->prepare("UPDATE users SET fullname = ?, phone = ? WHERE id = ?");
        $stmt->execute([$fullname, $phone, $userId]);
        $_SESSION['user']['fullname'] = $fullname;
        $success = 'อัปเดตข้อมูลส่วนตัวเรียบร้อยแล้ว';
    }
}

// Change Password Form
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['action_password'])) {
    verifyCSRFToken($_POST['csrf_token'] ?? '');
    $oldPass = $_POST['old_password'] ?? '';
    $newPass = $_POST['new_password'] ?? '';

    $stmt = $db->prepare("SELECT password FROM users WHERE id = ?");
    $stmt->execute([$userId]);
    $user = $stmt->fetch();

    if (!password_verify($oldPass, $user['password'])) {
        $error = 'รหัสผ่านเดิมไม่ถูกต้อง';
    } elseif (strlen($newPass) < 6) {
        $error = 'รหัสผ่านใหม่ต้องมีความยาวอย่างน้อย 6 ตัวอักษร';
    } else {
        $hashed = password_hash($newPass, PASSWORD_BCRYPT);
        $stmt = $db->prepare("UPDATE users SET password = ? WHERE id = ?");
        $stmt->execute([$hashed, $userId]);
        $success = 'เปลี่ยนรหัสผ่านใหม่สำเร็จ';
    }
}

// Fetch user info & saved addresses
$userStmt = $db->prepare("SELECT * FROM users WHERE id = ?");
$userStmt->execute([$userId]);
$userProfile = $userStmt->fetch();

$addrStmt = $db->prepare("SELECT * FROM addresses WHERE user_id = ? ORDER BY is_default DESC, id DESC");
$addrStmt->execute([$userId]);
$addresses = $addrStmt->fetchAll();
if ($addresses) {
    foreach ($addresses as &$addr) {
        $addr = array_map(function($val) {
            return is_string($val) ? html_entity_decode($val, ENT_QUOTES, 'UTF-8') : $val;
        }, $addr);
    }
}

$pageTitle = "จัดการโปรไฟล์และที่อยู่";
require_once __DIR__ . '/../includes/header.php';
?>

<div class="row g-4 my-3">
  <!-- Profile & Password -->
  <div class="col-md-6">
    <div class="card card-custom p-4 mb-4">
      <h4 class="fw-bold mb-3">⚙️ แก้ไขข้อมูลส่วนตัว</h4>

      <?php if (!empty($success)): ?>
        <div class="alert alert-success py-2"><?php echo $success; ?></div>
      <?php endif; ?>
      <?php if (!empty($error)): ?>
        <div class="alert alert-danger py-2"><?php echo $error; ?></div>
      <?php endif; ?>

      <form method="POST" action="">
        <input type="hidden" name="csrf_token" value="<?php echo generateCSRFToken(); ?>">
        <input type="hidden" name="action_profile" value="1">

        <div class="mb-3">
          <label class="form-label">อีเมล (ไม่สามารถเปลี่ยนได้)</label>
          <input type="email" class="form-control" value="<?php echo sanitize($userProfile['email']); ?>" disabled>
        </div>

        <div class="mb-3">
          <label class="form-label">ชื่อ - นามสกุล *</label>
          <input type="text" name="fullname" class="form-control" required value="<?php echo sanitize($userProfile['fullname']); ?>">
        </div>

        <div class="mb-3">
          <label class="form-label">เบอร์โทรศัพท์</label>
          <input type="tel" name="phone" class="form-control" value="<?php echo sanitize($userProfile['phone']); ?>">
        </div>

        <button type="submit" class="btn btn-primary-custom w-100 py-2">บันทึกการเปลี่ยนแปลง ✨</button>
      </form>
    </div>

    <!-- Password Change Card -->
    <div class="card card-custom p-4">
      <h4 class="fw-bold mb-3">🔑 เปลี่ยนรหัสผ่าน</h4>
      <form method="POST" action="">
        <input type="hidden" name="csrf_token" value="<?php echo generateCSRFToken(); ?>">
        <input type="hidden" name="action_password" value="1">

        <div class="mb-3">
          <label class="form-label">รหัสผ่านปัจจุบัน *</label>
          <input type="password" name="old_password" class="form-control" required>
        </div>

        <div class="mb-3">
          <label class="form-label">รหัสผ่านใหม่ *</label>
          <input type="password" name="new_password" class="form-control" required placeholder="อย่างน้อย 6 ตัวอักษร">
        </div>

        <button type="submit" class="btn btn-outline-primary w-100 py-2">เปลี่ยนรหัสผ่าน 🔒</button>
      </form>
    </div>
  </div>

  <!-- Saved Addresses -->
  <div class="col-md-6">
    <div class="card card-custom p-4">
      <h4 class="fw-bold mb-3">🏠 ที่อยู่จัดส่งที่บันทึกไว้</h4>
      <?php if (empty($addresses)): ?>
        <p class="text-muted">คุณยังไม่มีที่อยู่จัดส่งที่บันทึกไว้ (ระบบจะบันทึกให้อัตโนมัติเมื่อสั่งซื้อสินค้า)</p>
      <?php else: ?>
        <div class="d-flex flex-column gap-3">
          <?php foreach ($addresses as $a): ?>
            <div class="p-3 border rounded card-custom">
              <div class="d-flex justify-content-between align-items-start">
                <div>
                  <h6 class="fw-bold mb-1">
                    <?php echo sanitize($a['recipient_name']); ?> (<?php echo sanitize($a['phone']); ?>)
                    <?php if (!empty($a['is_default'])): ?>
                      <span class="badge bg-primary ms-2">ที่อยู่หลัก</span>
                    <?php endif; ?>
                  </h6>
                  <p class="small text-muted mb-0">
                    <?php echo sanitize($a['address_line']); ?> ต.<?php echo sanitize($a['district']); ?> อ.<?php echo sanitize($a['amphoe']); ?> จ.<?php echo sanitize($a['province']); ?> <?php echo sanitize($a['zipcode']); ?>
                  </p>
                </div>
                <div class="d-flex gap-2">
                  <?php if (empty($a['is_default'])): ?>
                    <a href="?default_addr=<?php echo $a['id']; ?>" class="btn btn-sm btn-outline-primary py-0">ตั้งเป็นที่อยู่หลัก</a>
                  <?php endif; ?>
                  <a href="?delete_addr=<?php echo $a['id']; ?>" class="btn btn-sm btn-outline-danger py-0" onclick="return confirm('คุณต้องการลบที่อยู่นี้หรือไม่?')">ลบ</a>
                </div>
              </div>
            </div>
          <?php endforeach; ?>
        </div>
      <?php endif; ?>
    </div>
  </div>
</div>

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