<?php
require_once __DIR__ . '/auth.php';
requireLogin();
$db = getDB();

// ── ELIMINAR ──────────────────────────────────────────────────────
if ($_SERVER['REQUEST_METHOD'] === 'POST' && ($_POST['_accion'] ?? '') === 'eliminar') {
    csrf_check();
    $db->prepare("DELETE FROM clientes WHERE id=?")->execute([intval($_POST['id'] ?? 0)]);
    header('Location: clientes.php'); exit;
}

// ── EXPORTAR CSV ────────────────────────────────────────────────
if (isset($_GET['export']) && $_GET['export'] === 'csv') {
    $rows = $db->query("SELECT empresa,contacto,telefono,email,sector,plan,precio_mes,fecha_inicio,fecha_renovacion,canal_origen,estado_pago,notas,created_at FROM clientes ORDER BY empresa ASC")->fetchAll(PDO::FETCH_ASSOC);
    header('Content-Type: text/csv; charset=UTF-8');
    header('Content-Disposition: attachment; filename="clientes_'.date('Ymd').'.csv"');
    echo "\xEF\xBB\xBF";
    $out = fopen('php://output','w');
    fputcsv($out, ['Empresa','Contacto','Teléfono','Email','Sector','Plan','$/mes','Inicio','Renovación','Canal','Estado pago','Notas','Creado'], ';');
    foreach ($rows as $r) fputcsv($out, array_values($r), ';');
    fclose($out); exit;
}

// ── CREAR CLIENTE MANUAL ──────────────────────────────────────────
if ($_SERVER['REQUEST_METHOD'] === 'POST' && ($_POST['_accion'] ?? '') === 'nuevo') {
    csrf_check();
    $plan = $_POST['plan'] ?? 'confiado';
    $precios = ['desafiante'=>180,'confiado'=>210,'dinamico'=>280];
    $precio = !empty($_POST['precio_mes']) ? floatval($_POST['precio_mes']) : ($precios[$plan] ?? 210);
    $db->prepare("INSERT INTO clientes (empresa,contacto,telefono,email,sector,plan,precio_mes,fecha_inicio,fecha_renovacion,canal_origen,estado_pago,notas) VALUES (?,?,?,?,?,?,?,?,?,?,?,?)")
       ->execute([
           clean($_POST['empresa'] ?? ''),
           clean($_POST['contacto'] ?? ''),
           clean($_POST['telefono'] ?? ''),
           clean($_POST['email'] ?? ''),
           $_POST['sector'] ?? 'servicios',
           $plan,
           $precio,
           $_POST['fecha_inicio'] ?: null,
           $_POST['fecha_renovacion'] ?: null,
           clean($_POST['canal_origen'] ?? ''),
           $_POST['estado_pago'] ?? 'al_dia',
           clean($_POST['notas'] ?? ''),
       ]);
    header('Location: clientes.php'); exit;
}

// ── EDITAR completo ───────────────────────────────────────────────
if ($_SERVER['REQUEST_METHOD'] === 'POST' && ($_POST['_accion'] ?? '') === 'editar') {
    csrf_check();
    $id = intval($_POST['id'] ?? 0);
    if ($id) {
        $db->prepare("UPDATE clientes SET empresa=?,contacto=?,telefono=?,email=?,sector=?,plan=?,precio_mes=?,fecha_inicio=?,fecha_renovacion=?,canal_origen=?,estado_pago=?,notas=? WHERE id=?")
           ->execute([
               clean($_POST['empresa'] ?? ''),
               clean($_POST['contacto'] ?? ''),
               clean($_POST['telefono'] ?? ''),
               clean($_POST['email'] ?? ''),
               $_POST['sector'] ?? 'servicios',
               $_POST['plan'] ?? 'confiado',
               floatval($_POST['precio_mes'] ?? 0),
               $_POST['fecha_inicio'] ?: null,
               $_POST['fecha_renovacion'] ?: null,
               clean($_POST['canal_origen'] ?? ''),
               $_POST['estado_pago'] ?? 'al_dia',
               clean($_POST['notas'] ?? ''),
               $id,
           ]);
    }
    header('Location: clientes.php'); exit;
}

// ── UPDATE inline estado_pago / fecha_renovacion / notas ──────────
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['id']) && !isset($_POST['_accion'])) {
    csrf_check();
    $id = intval($_POST['id']);
    if (isset($_POST['estado_pago'])) {
        $db->prepare("UPDATE clientes SET estado_pago=? WHERE id=?")->execute([$_POST['estado_pago'], $id]);
    }
    if (!empty($_POST['fecha_renovacion'])) {
        $db->prepare("UPDATE clientes SET fecha_renovacion=? WHERE id=?")->execute([$_POST['fecha_renovacion'], $id]);
    }
    if (isset($_POST['notas'])) {
        $db->prepare("UPDATE clientes SET notas=? WHERE id=?")->execute([clean($_POST['notas']), $id]);
    }
    header('Location: clientes.php'); exit;
}

// ── VER FORMULARIO DE EDICIÓN ─────────────────────────────────────
$accion  = $_GET['accion'] ?? 'lista';
$edit_id = intval($_GET['id'] ?? 0);
$editing = null;
if ($accion === 'editar' && $edit_id) {
    $stmt = $db->prepare("SELECT * FROM clientes WHERE id=?");
    $stmt->execute([$edit_id]);
    $editing = $stmt->fetch();
    if (!$editing) { header('Location: clientes.php'); exit; }
}

$page_title    = $editing ? clean($editing['empresa']) : ($accion === 'nuevo' ? 'Nuevo cliente' : 'Clientes activos');
$page_subtitle = $editing ? 'Editar cliente' : ($accion === 'nuevo' ? 'Alta manual de cliente' : 'Base de clientes con plan activo');
ob_start(); ?>
<?php if($accion === 'lista'): ?>
<a href="clientes.php?export=csv" class="btn"><i class="ti ti-download"></i> CSV</a>
<a href="clientes.php?accion=nuevo" class="btn btn-primary"><i class="ti ti-plus"></i> Nuevo cliente</a>
<?php endif; ?>
<?php $page_actions = ob_get_clean();
require_once 'layout.php';

$sectores    = ['hoteles' => '🏨 Hoteles', 'clinicas' => '🏥 Clínicas', 'inmobiliarias' => '🏢 Inmobiliarias', 'ecommerce' => '🛒 Ecommerce', 'servicios' => '⚙️ Servicios'];
$planes      = ['desafiante' => 'Desafiante ($180)', 'confiado' => 'Confiado ($210)', 'dinamico' => 'Dinámico ($280)'];
$plan_badge  = ['desafiante' => 'b-gray', 'confiado' => 'b-blue', 'dinamico' => 'b-purple'];
$pago_badge  = ['al_dia' => 'b-green', 'pendiente' => 'b-amber', 'suspendido' => 'b-red'];
$pago_label  = ['al_dia' => 'Al día', 'pendiente' => 'Pendiente', 'suspendido' => 'Suspendido'];
$sector_emoji = ['hoteles' => '🏨', 'clinicas' => '🏥', 'inmobiliarias' => '🏢', 'ecommerce' => '🛒', 'servicios' => '⚙️'];

// ════════════════════════════════════════════════════════════════
// FORMULARIO NUEVO CLIENTE
// ════════════════════════════════════════════════════════════════
if ($accion === 'nuevo'): ?>
<form method="POST" style="max-width:700px">
  <input type="hidden" name="_csrf" value="<?= csrf_token() ?>">
  <input type="hidden" name="_accion" value="nuevo">
  <div class="card" style="margin-bottom:12px">
    <div class="section-label" style="margin-top:0">Datos de la empresa</div>
    <div class="form-row">
      <div class="form-group">
        <label>Empresa *</label>
        <input type="text" name="empresa" required placeholder="Nombre del negocio">
      </div>
      <div class="form-group">
        <label>Sector</label>
        <select name="sector">
          <?php foreach ($sectores as $k => $v): ?>
          <option value="<?=$k?>"><?=$v?></option>
          <?php endforeach; ?>
        </select>
      </div>
    </div>
    <div class="form-row">
      <div class="form-group">
        <label>Contacto</label>
        <input type="text" name="contacto" placeholder="Nombre completo">
      </div>
      <div class="form-group">
        <label>Teléfono / WhatsApp</label>
        <input type="text" name="telefono" placeholder="+57 300 000 0000">
      </div>
    </div>
    <div class="form-group">
      <label>Email</label>
      <input type="email" name="email" placeholder="contacto@empresa.com">
    </div>
  </div>
  <div class="card" style="margin-bottom:12px">
    <div class="section-label" style="margin-top:0">Plan y facturación</div>
    <div class="form-row">
      <div class="form-group">
        <label>Plan</label>
        <select name="plan">
          <?php foreach ($planes as $k => $v): ?>
          <option value="<?=$k?>"><?=$v?></option>
          <?php endforeach; ?>
        </select>
      </div>
      <div class="form-group">
        <label>Precio / mes (USD) — dejar vacío para usar el del plan</label>
        <input type="number" name="precio_mes" min="0" step="0.01" placeholder="Auto según plan">
      </div>
    </div>
    <div class="form-row">
      <div class="form-group">
        <label>Fecha de inicio</label>
        <input type="date" name="fecha_inicio" value="<?=date('Y-m-d')?>">
      </div>
      <div class="form-group">
        <label>Fecha de renovación</label>
        <input type="date" name="fecha_renovacion">
      </div>
    </div>
    <div class="form-row">
      <div class="form-group">
        <label>Canal de origen</label>
        <input type="text" name="canal_origen" placeholder="Referido, Meta Ads, directo...">
      </div>
      <div class="form-group">
        <label>Estado de pago</label>
        <select name="estado_pago">
          <option value="al_dia">Al día</option>
          <option value="pendiente">Pendiente</option>
          <option value="suspendido">Suspendido</option>
        </select>
      </div>
    </div>
    <div class="form-group">
      <label>Notas</label>
      <textarea name="notas" placeholder="Observaciones..."></textarea>
    </div>
  </div>
  <div style="display:flex;gap:10px">
    <button type="submit" class="btn btn-primary"><i class="ti ti-check"></i> Crear cliente</button>
    <a href="clientes.php" class="btn">Cancelar</a>
  </div>
</form>
<?php

// ════════════════════════════════════════════════════════════════
// FORMULARIO EDITAR
// ════════════════════════════════════════════════════════════════
elseif ($editing):
$c = $editing;
?>
<form method="POST" style="max-width:700px">
  <input type="hidden" name="_csrf" value="<?= csrf_token() ?>">
  <input type="hidden" name="_accion" value="editar">
  <input type="hidden" name="id" value="<?=$c['id']?>">

  <div class="card" style="margin-bottom:12px">
    <div class="section-label" style="margin-top:0">Datos de la empresa</div>
    <div class="form-row">
      <div class="form-group">
        <label>Empresa *</label>
        <input type="text" name="empresa" value="<?=clean($c['empresa'])?>" required>
      </div>
      <div class="form-group">
        <label>Sector</label>
        <select name="sector">
          <?php foreach ($sectores as $k => $v): ?>
          <option value="<?=$k?>" <?=$c['sector']===$k?'selected':''?>><?=$v?></option>
          <?php endforeach; ?>
        </select>
      </div>
    </div>
    <div class="form-row">
      <div class="form-group">
        <label>Contacto</label>
        <input type="text" name="contacto" value="<?=clean($c['contacto'] ?? '')?>">
      </div>
      <div class="form-group">
        <label>Teléfono / WhatsApp</label>
        <input type="text" name="telefono" value="<?=clean($c['telefono'] ?? '')?>">
      </div>
    </div>
    <div class="form-group">
      <label>Email</label>
      <input type="email" name="email" value="<?=clean($c['email'] ?? '')?>">
    </div>
  </div>

  <div class="card" style="margin-bottom:12px">
    <div class="section-label" style="margin-top:0">Plan y facturación</div>
    <div class="form-row">
      <div class="form-group">
        <label>Plan</label>
        <select name="plan">
          <?php foreach ($planes as $k => $v): ?>
          <option value="<?=$k?>" <?=($c['plan'] ?? '')===$k?'selected':''?>><?=$v?></option>
          <?php endforeach; ?>
        </select>
      </div>
      <div class="form-group">
        <label>Precio / mes (USD)</label>
        <input type="number" name="precio_mes" value="<?=floatval($c['precio_mes'] ?? 0)?>" min="0" step="0.01">
      </div>
    </div>
    <div class="form-row">
      <div class="form-group">
        <label>Fecha de inicio</label>
        <input type="date" name="fecha_inicio" value="<?=$c['fecha_inicio'] ?? ''?>">
      </div>
      <div class="form-group">
        <label>Fecha de renovación</label>
        <input type="date" name="fecha_renovacion" value="<?=$c['fecha_renovacion'] ?? ''?>">
      </div>
    </div>
    <div class="form-row">
      <div class="form-group">
        <label>Canal de origen</label>
        <input type="text" name="canal_origen" value="<?=clean($c['canal_origen'] ?? '')?>">
      </div>
      <div class="form-group">
        <label>Estado de pago</label>
        <select name="estado_pago">
          <option value="al_dia"     <?=$c['estado_pago']==='al_dia'    ?'selected':''?>>Al día</option>
          <option value="pendiente"  <?=$c['estado_pago']==='pendiente' ?'selected':''?>>Pendiente</option>
          <option value="suspendido" <?=$c['estado_pago']==='suspendido'?'selected':''?>>Suspendido</option>
        </select>
      </div>
    </div>
    <div class="form-group">
      <label>Notas</label>
      <textarea name="notas"><?=clean($c['notas'] ?? '')?></textarea>
    </div>
  </div>

  <div style="display:flex;gap:10px;align-items:center">
    <button type="submit" class="btn btn-primary"><i class="ti ti-check"></i> Guardar cambios</button>
    <a href="clientes.php" class="btn">Cancelar</a>
    <form method="POST" style="display:inline;margin-left:auto" onsubmit="return confirm('¿Eliminar cliente <?=addslashes(clean($c[\'empresa\']))?>? Esta acción no se puede deshacer.')">
      <input type="hidden" name="_csrf" value="<?= csrf_token() ?>">
      <input type="hidden" name="_accion" value="eliminar">
      <input type="hidden" name="id" value="<?=$c['id']?>">
      <button type="submit" class="btn" style="color:#A32D2D"><i class="ti ti-trash"></i> Eliminar cliente</button>
    </form>
  </div>
</form>

<?php else:
// ════════════════════════════════════════════════════════════════
// LISTA DE CLIENTES
// ════════════════════════════════════════════════════════════════
// Filtros
$c_where = ['1=1']; $c_params = [];
if (!empty($_GET['sector']))      { $c_where[] = 'sector=?';       $c_params[] = $_GET['sector']; }
if (!empty($_GET['plan']))        { $c_where[] = 'plan=?';         $c_params[] = $_GET['plan']; }
if (!empty($_GET['estado_pago'])) { $c_where[] = 'estado_pago=?';  $c_params[] = $_GET['estado_pago']; }
if (!empty($_GET['q']))           { $c_where[] = '(empresa LIKE ? OR contacto LIKE ?)'; $c_params[] = "%{$_GET['q']}%"; $c_params[] = "%{$_GET['q']}%"; }
$c_sql = "SELECT * FROM clientes WHERE ".implode(' AND ',$c_where)." ORDER BY fecha_renovacion ASC, created_at DESC";
$c_stmt = $db->prepare($c_sql); $c_stmt->execute($c_params);
$clientes   = $c_stmt->fetchAll();
$hayFiltros = !empty($_GET['sector']) || !empty($_GET['plan']) || !empty($_GET['estado_pago']) || !empty($_GET['q']);
// Métricas siempre globales (no afectadas por filtros)
$mrr        = $db->query("SELECT COALESCE(SUM(precio_mes),0) FROM clientes WHERE estado_pago='al_dia'")->fetchColumn();
$total      = $db->query("SELECT COUNT(*) FROM clientes")->fetchColumn();
$al_dia     = $db->query("SELECT COUNT(*) FROM clientes WHERE estado_pago='al_dia'")->fetchColumn();
$pendientes = $db->query("SELECT COUNT(*) FROM clientes WHERE estado_pago='pendiente'")->fetchColumn();
?>

<div class="metrics-grid">
  <div class="metric"><div class="metric-n green">$<?=number_format($mrr,0)?></div><div class="metric-l">MRR (USD/mes)</div></div>
  <div class="metric"><div class="metric-n"><?=$total?></div><div class="metric-l">Clientes totales</div></div>
  <div class="metric"><div class="metric-n green"><?=$al_dia?></div><div class="metric-l">Al día</div></div>
  <div class="metric"><div class="metric-n <?=$pendientes>0?'amber':'green'?>"><?=$pendientes?></div><div class="metric-l">Pagos pendientes</div></div>
</div>

<?php
$renov = $db->query("SELECT empresa, fecha_renovacion, DATEDIFF(fecha_renovacion,CURDATE()) as dias FROM clientes WHERE fecha_renovacion BETWEEN CURDATE() AND DATE_ADD(CURDATE(),INTERVAL 15 DAY) ORDER BY fecha_renovacion ASC")->fetchAll();
if (!empty($renov)):
?>
<div class="alert alert-warn"><i class="ti ti-calendar-event"></i> <?=count($renov)?> cliente(s) renuevan en los próximos 15 días — confirmar cobro anticipado.</div>
<?php endif; ?>

<form method="GET" style="display:flex;gap:8px;flex-wrap:wrap;margin-bottom:12px">
  <input type="text" name="q" placeholder="Buscar empresa o contacto..." value="<?=htmlspecialchars($_GET['q']??'')?>" style="flex:1;min-width:160px;padding:7px 11px;border:0.5px solid var(--border2);border-radius:8px;font-size:13px">
  <select name="sector" style="padding:7px 10px;border:0.5px solid var(--border2);border-radius:8px;font-size:13px">
    <option value="">Todos los sectores</option>
    <?php foreach($sectores as $k=>$v): ?><option value="<?=$k?>" <?=($_GET['sector']??'')===$k?'selected':''?>><?=$v?></option><?php endforeach; ?>
  </select>
  <select name="plan" style="padding:7px 10px;border:0.5px solid var(--border2);border-radius:8px;font-size:13px">
    <option value="">Todos los planes</option>
    <option value="desafiante" <?=($_GET['plan']??'')==='desafiante'?'selected':''?>>Desafiante</option>
    <option value="confiado"   <?=($_GET['plan']??'')==='confiado'  ?'selected':''?>>Confiado</option>
    <option value="dinamico"   <?=($_GET['plan']??'')==='dinamico'  ?'selected':''?>>Dinámico</option>
  </select>
  <select name="estado_pago" style="padding:7px 10px;border:0.5px solid var(--border2);border-radius:8px;font-size:13px">
    <option value="">Todos los estados</option>
    <option value="al_dia"     <?=($_GET['estado_pago']??'')==='al_dia'    ?'selected':''?>>Al día</option>
    <option value="pendiente"  <?=($_GET['estado_pago']??'')==='pendiente' ?'selected':''?>>Pendiente</option>
    <option value="suspendido" <?=($_GET['estado_pago']??'')==='suspendido'?'selected':''?>>Suspendido</option>
  </select>
  <button type="submit" class="btn">Filtrar</button>
  <a href="clientes.php" class="btn">Limpiar</a>
</form>

<div class="table-wrap">
<table>
<thead><tr>
  <th style="width:20%">Empresa</th>
  <th style="width:8%">Sector</th>
  <th style="width:9%">Plan</th>
  <th style="width:8%">$/mes</th>
  <th style="width:9%">Inicio</th>
  <th style="width:10%">Renovación</th>
  <th style="width:8%">Canal</th>
  <th style="width:14%">Estado pago</th>
  <th style="width:14%">Acciones</th>
</tr></thead>
<tbody>
<?php foreach ($clientes as $c):
  $dias_renov  = $c['fecha_renovacion'] ? (int)(( strtotime($c['fecha_renovacion']) - strtotime(date('Y-m-d'))) / 86400) : null;
  $renov_style = $dias_renov !== null && $dias_renov <= 7 ? 'color:#A32D2D;font-weight:500' : ($dias_renov !== null && $dias_renov <= 15 ? 'color:#854F0B;font-weight:500' : '');
?>
<tr>
  <td>
    <strong><?=clean($c['empresa'])?></strong>
    <?php if ($c['contacto']): ?><br><span style="font-size:11px;color:var(--muted)"><?=clean($c['contacto'])?></span><?php endif; ?>
  </td>
  <td><?=$sector_emoji[$c['sector']] ?? ''?> <?=ucfirst($c['sector'])?></td>
  <td><span class="badge <?=$plan_badge[$c['plan']] ?? 'b-gray'?>"><?=ucfirst($c['plan'])?></span></td>
  <td style="font-weight:500">$<?=number_format($c['precio_mes'],0)?></td>
  <td style="font-size:12px"><?=$c['fecha_inicio'] ? date('d/m/Y', strtotime($c['fecha_inicio'])) : '—'?></td>
  <td style="<?=$renov_style?>;font-size:12px">
    <?=$c['fecha_renovacion'] ? date('d/m/Y', strtotime($c['fecha_renovacion'])) : '—'?>
    <?php if ($dias_renov !== null && $dias_renov <= 15): ?><br><span style="font-size:10px"><?=$dias_renov?> días</span><?php endif; ?>
  </td>
  <td><span class="badge b-green" style="font-size:10px"><?=ucfirst($c['canal_origen'] ?? '')?></span></td>
  <td>
    <form method="POST" style="display:inline-flex;align-items:center;gap:4px">
      <input type="hidden" name="_csrf" value="<?= csrf_token() ?>">
      <input type="hidden" name="id" value="<?=$c['id']?>">
      <select name="estado_pago" onchange="this.form.submit()" style="font-size:11px;padding:3px 6px;border:0.5px solid var(--border2);border-radius:6px;background:#fff">
        <option value="al_dia"    <?=$c['estado_pago']==='al_dia'   ?'selected':''?>>Al día</option>
        <option value="pendiente" <?=$c['estado_pago']==='pendiente'?'selected':''?>>Pendiente</option>
        <option value="suspendido"<?=$c['estado_pago']==='suspendido'?'selected':''?>>Suspendido</option>
      </select>
    </form>
  </td>
  <td>
    <div style="display:flex;gap:4px">
      <?php if($c['telefono']): ?><a href="https://wa.me/<?=preg_replace('/\D/','',$c['telefono'])?>" target="_blank" class="btn" style="font-size:11px;padding:4px 8px;color:#0F6E56" title="WhatsApp"><i class="ti ti-brand-whatsapp"></i></a><?php endif; ?>
      <a href="clientes.php?accion=editar&id=<?=$c['id']?>" class="btn" style="font-size:11px;padding:4px 8px">
        <i class="ti ti-pencil"></i> Editar
      </a>
      <form method="POST" style="display:inline" onsubmit="return confirm('¿Eliminar <?=addslashes(clean($c[\'empresa\']))?> ?')">
        <input type="hidden" name="_csrf" value="<?= csrf_token() ?>">
        <input type="hidden" name="_accion" value="eliminar">
        <input type="hidden" name="id" value="<?=$c['id']?>">
        <button type="submit" class="btn" style="font-size:11px;padding:4px 8px;color:#A32D2D"><i class="ti ti-trash"></i></button>
      </form>
    </div>
  </td>
</tr>
<?php endforeach; ?>
<?php if (empty($clientes)): ?>
<tr><td colspan="9" style="text-align:center;padding:2rem;color:var(--muted)"><?=$hayFiltros ? 'Sin resultados para los filtros seleccionados.' : 'Sin clientes activos aún. Los prospectos marcados como "Ganado" aparecerán aquí automáticamente.'?></td></tr>
<?php endif; ?>
</tbody>
</table>
</div>

<?php endif; ?>
<?php require_once 'layout_end.php'; ?>
