<?php
/**
 * TechShop Perú - Mis Direcciones de Envío
 */
define('SECURE_ACCESS', true);
require_once __DIR__ . '/../includes/config.php';
require_once __DIR__ . '/../includes/database.php';
require_once __DIR__ . '/../includes/functions.php';

require_login();
$db  = db();
$uid = (int)$_SESSION['usuario_id'];


/* ----- GUARDAR DIRECCIÓN ----- */
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['save_address'])) {
    if (!csrf_verify()) { set_flash('error', 'Token CSRF inválido.'); redirect('pages/mis-direcciones.php'); }

    $dir_id    = (int)($_POST['dir_id'] ?? 0);
    $etiqueta  = trim($_POST['etiqueta'] ?? 'Casa');
    $destino   = trim($_POST['destinatario'] ?? '');
    $direccion = trim($_POST['direccion'] ?? '');
    $referencia= trim($_POST['referencia'] ?? '');
    $ciudad    = trim($_POST['ciudad'] ?? '');
    $dpto      = trim($_POST['departamento'] ?? '');
    $cp        = trim($_POST['codigo_postal'] ?? '');
    $tel       = trim($_POST['telefono'] ?? '');
    $principal = isset($_POST['es_principal']) ? 1 : 0;

    if (empty($direccion) || empty($ciudad) || empty($dpto)) {
        set_flash('error', 'Dirección, ciudad y departamento son obligatorios.');
        redirect('pages/mis-direcciones.php');
    }

    // Si es principal, quitar principal de otras
    if ($principal) {
        $db->prepare('UPDATE direcciones_usuario SET es_principal=0 WHERE usuario_id=?')->execute([$uid]);
    }

    if ($dir_id > 0) {
        $stmt = $db->prepare('UPDATE direcciones_usuario SET etiqueta=?,destinatario=?,direccion=?,referencia=?,ciudad=?,departamento=?,codigo_postal=?,telefono=?,es_principal=? WHERE id=? AND usuario_id=?');
        $stmt->execute([$etiqueta,$destino,$direccion,$referencia,$ciudad,$dpto,$cp,$tel,$principal,$dir_id,$uid]);
        set_flash('success', 'Dirección actualizada correctamente.');
    } else {
        $stmt = $db->prepare('INSERT INTO direcciones_usuario (usuario_id,etiqueta,destinatario,direccion,referencia,ciudad,departamento,codigo_postal,telefono,es_principal) VALUES (?,?,?,?,?,?,?,?,?,?)');
        $stmt->execute([$uid,$etiqueta,$destino,$direccion,$referencia,$ciudad,$dpto,$cp,$tel,$principal]);
        set_flash('success', 'Dirección agregada correctamente.');
    }
    csrf_regenerate();
    redirect('pages/mis-direcciones.php');
}

/* ----- ELIMINAR DIRECCIÓN ----- */
if (isset($_GET['delete']) && is_numeric($_GET['delete'])) {
    $db->prepare('DELETE FROM direcciones_usuario WHERE id=? AND usuario_id=?')->execute([(int)$_GET['delete'], $uid]);
    set_flash('success', 'Dirección eliminada.');
    redirect('pages/mis-direcciones.php');
}

/* ----- ESTABLECER COMO PRINCIPAL ----- */
if (isset($_GET['set_principal']) && is_numeric($_GET['set_principal'])) {
    $db->prepare('UPDATE direcciones_usuario SET es_principal=0 WHERE usuario_id=?')->execute([$uid]);
    $db->prepare('UPDATE direcciones_usuario SET es_principal=1 WHERE id=? AND usuario_id=?')->execute([(int)$_GET['set_principal'], $uid]);
    set_flash('success', 'Dirección establecida como principal.');
    redirect('pages/mis-direcciones.php');
}

/* ----- CARGAR DIRECCIONES ----- */
$stmt = $db->prepare('SELECT * FROM direcciones_usuario WHERE usuario_id=? ORDER BY es_principal DESC, fecha_registro ASC');
$stmt->execute([$uid]);
$direcciones = $stmt->fetchAll();

$departamentos_peru = ['Amazonas','Áncash','Apurímac','Arequipa','Ayacucho','Cajamarca','Callao','Cusco','Huancavelica','Huánuco','Ica','Junín','La Libertad','Lambayeque','Lima','Loreto','Madre de Dios','Moquegua','Pasco','Piura','Puno','San Martín','Tacna','Tumbes','Ucayali'];

$page_title = 'Mis Direcciones de Envío';
require_once __DIR__ . '/../includes/header.php';
?>

<main class="py-5" style="background:#f8fafc;min-height:80vh;">
<div class="container" style="max-width:900px;">

  <div class="d-flex justify-content-between align-items-center mb-4">
    <div>
      <h1 class="h3 fw-bold mb-1"><i class="bi bi-geo-alt me-2 text-primary"></i>Mis Direcciones</h1>
      <p class="text-muted mb-0">Administra tus direcciones de envío guardadas</p>
    </div>
    <button class="btn btn-primary" data-bs-toggle="modal" data-bs-target="#modalDireccion" onclick="resetForm()">
      <i class="bi bi-plus-lg me-1"></i>Nueva Dirección
    </button>
  </div>

  <?php if (empty($direcciones)): ?>
    <div class="card border-0 shadow-sm text-center py-5" style="border-radius:16px;">
      <i class="bi bi-geo-alt-fill fs-1 d-block mb-3 text-muted opacity-30"></i>
      <h5 class="fw-bold">No tienes direcciones guardadas</h5>
      <p class="text-muted">Agrega tu primera dirección para agilizar tus compras.</p>
      <button class="btn btn-primary" data-bs-toggle="modal" data-bs-target="#modalDireccion" onclick="resetForm()">
        <i class="bi bi-plus-lg me-1"></i>Agregar dirección
      </button>
    </div>
  <?php else: ?>
    <div class="row g-3">
      <?php foreach ($direcciones as $d): ?>
      <div class="col-md-6">
        <div class="card border-0 shadow-sm h-100 position-relative" style="border-radius:16px;<?= $d['es_principal'] ? 'border:2px solid #2563eb!important;' : '' ?>">
          <?php if ($d['es_principal']): ?>
            <div class="position-absolute top-0 end-0 m-2">
              <span class="badge bg-primary"><i class="bi bi-star-fill me-1"></i>Principal</span>
            </div>
          <?php endif; ?>
          <div class="card-body p-4">
            <div class="d-flex align-items-center mb-3">
              <div style="width:40px;height:40px;background:<?= $d['es_principal'] ? 'linear-gradient(135deg,#2563eb,#0284c7)' : '#e2e8f0' ?>;border-radius:10px;display:flex;align-items:center;justify-content:center;margin-right:12px;">
                <?php $icons = ['Casa'=>'house-fill','Trabajo'=>'building-fill','Otro'=>'geo-alt-fill']; ?>
                <i class="bi bi-<?= $icons[$d['etiqueta']] ?? 'geo-alt-fill' ?>" style="color:<?= $d['es_principal'] ? '#fff' : '#64748b' ?>;"></i>
              </div>
              <div>
                <div class="fw-bold"><?= e($d['etiqueta']) ?></div>
                <?php if ($d['destinatario']): ?>
                  <small class="text-muted"><?= e($d['destinatario']) ?></small>
                <?php endif; ?>
              </div>
            </div>
            <p class="mb-1 fw-medium"><?= e($d['direccion']) ?></p>
            <?php if ($d['referencia']): ?>
              <p class="mb-1 text-muted small"><i class="bi bi-signpost me-1"></i><?= e($d['referencia']) ?></p>
            <?php endif; ?>
            <p class="mb-1 text-muted small"><i class="bi bi-geo me-1"></i><?= e($d['ciudad']) ?>, <?= e($d['departamento']) ?><?= $d['codigo_postal'] ? ' '.$d['codigo_postal'] : '' ?></p>
            <?php if ($d['telefono']): ?>
              <p class="mb-0 text-muted small"><i class="bi bi-telephone me-1"></i><?= e($d['telefono']) ?></p>
            <?php endif; ?>
          </div>
          <div class="card-footer bg-transparent border-0 p-3 pt-0 d-flex gap-2 flex-wrap">
            <button class="btn btn-outline-primary btn-sm" onclick="editDireccion(<?= htmlspecialchars(json_encode($d), ENT_QUOTES) ?>)">
              <i class="bi bi-pencil me-1"></i>Editar
            </button>
            <?php if (!$d['es_principal']): ?>
              <a href="<?= url('pages/mis-direcciones.php?set_principal='.$d['id']) ?>" class="btn btn-outline-success btn-sm">
                <i class="bi bi-star me-1"></i>Principal
              </a>
              <a href="<?= url('pages/mis-direcciones.php?delete='.$d['id']) ?>" class="btn btn-outline-danger btn-sm" onclick="return confirm('¿Eliminar esta dirección?')">
                <i class="bi bi-trash"></i>
              </a>
            <?php endif; ?>
          </div>
        </div>
      </div>
      <?php endforeach; ?>
    </div>
  <?php endif; ?>

</div>
</main>

<!-- MODAL: Nueva / Editar Dirección -->
<div class="modal fade" id="modalDireccion" tabindex="-1" aria-hidden="true">
  <div class="modal-dialog modal-lg">
    <form method="POST" id="formDireccion">
      <?= csrf_field() ?>
      <input type="hidden" name="save_address" value="1">
      <input type="hidden" name="dir_id" id="dir_id" value="0">
      <div class="modal-content" style="border-radius:16px;overflow:hidden;">
        <div class="modal-header" style="background:linear-gradient(135deg,#1e293b,#0f172a);">
          <h5 class="modal-title text-white" id="modalDirTitle"><i class="bi bi-geo-alt me-2"></i>Nueva Dirección</h5>
          <button type="button" class="btn-close btn-close-white" data-bs-dismiss="modal"></button>
        </div>
        <div class="modal-body p-4">
          <div class="row g-3">
            <div class="col-md-4">
              <label class="form-label fw-medium">Etiqueta</label>
              <select class="form-select" name="etiqueta" id="dir_etiqueta">
                <option value="Casa">🏠 Casa</option>
                <option value="Trabajo">🏢 Trabajo</option>
                <option value="Otro">📍 Otro</option>
              </select>
            </div>
            <div class="col-md-8">
              <label class="form-label fw-medium">Nombre del Destinatario</label>
              <input type="text" class="form-control" name="destinatario" id="dir_destinatario" placeholder="Nombre completo de quien recibe">
            </div>
            <div class="col-12">
              <label class="form-label fw-medium">Dirección <span class="text-danger">*</span></label>
              <input type="text" class="form-control" name="direccion" id="dir_direccion" placeholder="Av./Jr./Ca. + Número + Piso/Dpto (si aplica)" required>
            </div>
            <div class="col-12">
              <label class="form-label fw-medium">Referencia</label>
              <input type="text" class="form-control" name="referencia" id="dir_referencia" placeholder="Ej: Frente al parque, edificio blanco...">
            </div>
            <div class="col-md-6">
              <label class="form-label fw-medium">Ciudad/Distrito <span class="text-danger">*</span></label>
              <input type="text" class="form-control" name="ciudad" id="dir_ciudad" placeholder="Ej: Miraflores, San Borja..." required>
            </div>
            <div class="col-md-6">
              <label class="form-label fw-medium">Departamento <span class="text-danger">*</span></label>
              <select class="form-select" name="departamento" id="dir_dpto" required>
                <option value="">Seleccionar...</option>
                <?php foreach ($departamentos_peru as $d_peru): ?>
                  <option value="<?= $d_peru ?>"><?= $d_peru ?></option>
                <?php endforeach; ?>
              </select>
            </div>
            <div class="col-md-6">
              <label class="form-label fw-medium">Código Postal</label>
              <input type="text" class="form-control" name="codigo_postal" id="dir_cp" placeholder="Ej: 15001">
            </div>
            <div class="col-md-6">
              <label class="form-label fw-medium">Teléfono de Contacto</label>
              <input type="tel" class="form-control" name="telefono" id="dir_tel" placeholder="Ej: 999 888 777">
            </div>
            <div class="col-12">
              <div class="form-check form-switch">
                <input class="form-check-input" type="checkbox" name="es_principal" id="dir_principal">
                <label class="form-check-label" for="dir_principal"><i class="bi bi-star-fill text-warning me-1"></i>Establecer como dirección principal</label>
              </div>
            </div>
          </div>
        </div>
        <div class="modal-footer">
          <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Cancelar</button>
          <button type="submit" class="btn btn-primary"><i class="bi bi-save me-1"></i>Guardar Dirección</button>
        </div>
      </div>
    </form>
  </div>
</div>

<script>
function resetForm() {
  document.getElementById('dir_id').value = '0';
  document.getElementById('dir_etiqueta').value = 'Casa';
  document.getElementById('dir_destinatario').value = '';
  document.getElementById('dir_direccion').value = '';
  document.getElementById('dir_referencia').value = '';
  document.getElementById('dir_ciudad').value = '';
  document.getElementById('dir_dpto').value = '';
  document.getElementById('dir_cp').value = '';
  document.getElementById('dir_tel').value = '';
  document.getElementById('dir_principal').checked = false;
  document.getElementById('modalDirTitle').innerHTML = '<i class="bi bi-geo-alt me-2"></i>Nueva Dirección';
}

function editDireccion(d) {
  document.getElementById('dir_id').value = d.id;
  document.getElementById('dir_etiqueta').value = d.etiqueta;
  document.getElementById('dir_destinatario').value = d.destinatario || '';
  document.getElementById('dir_direccion').value = d.direccion;
  document.getElementById('dir_referencia').value = d.referencia || '';
  document.getElementById('dir_ciudad').value = d.ciudad;
  document.getElementById('dir_dpto').value = d.departamento;
  document.getElementById('dir_cp').value = d.codigo_postal || '';
  document.getElementById('dir_tel').value = d.telefono || '';
  document.getElementById('dir_principal').checked = d.es_principal == 1;
  document.getElementById('modalDirTitle').innerHTML = '<i class="bi bi-pencil me-2"></i>Editar: ' + d.etiqueta;
  new bootstrap.Modal(document.getElementById('modalDireccion')).show();
}
</script>

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