<?php
require_once 'auth.php'; requireLogin();
$db   = getDB();
$user = currentUser();

try {
    $db->exec("CREATE TABLE IF NOT EXISTS dimark_pagos (
        id INT AUTO_INCREMENT PRIMARY KEY,
        cliente_id INT NOT NULL,
        periodo VARCHAR(7) NOT NULL,
        monto DECIMAL(12,0) NOT NULL,
        estado ENUM('pagado','pendiente','vencido') DEFAULT 'pendiente',
        fecha_pago DATE,
        notas TEXT,
        registrado_por INT,
        created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
        UNIQUE KEY uk_cp (cliente_id, periodo)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4");
} catch(Exception $e) {}

// ── GUARDAR / ACTUALIZAR PAGO ─────────────────────────────────────
if ($_SERVER['REQUEST_METHOD'] === 'POST' && ($_POST['_accion']??'') === 'pago') {
    csrf_check();
    $cid    = intval($_POST['cliente_id']??0);
    $per    = preg_replace('/[^0-9\-]/', '', $_POST['periodo']??'');
    $monto  = max(0, intval($_POST['monto']??0));
    $estado = in_array($_POST['estado']??'', ['pagado','pendiente','vencido']) ? $_POST['estado'] : 'pendiente';
    $fpago  = $_POST['fecha_pago'] ?: null;
    $notas  = clean($_POST['notas']??'');
    if ($cid && $per && $monto > 0) {
        $db->prepare("INSERT INTO dimark_pagos (cliente_id,periodo,monto,estado,fecha_pago,notas,registrado_por)
                      VALUES (?,?,?,?,?,?,?)
                      ON DUPLICATE KEY UPDATE monto=VALUES(monto),estado=VALUES(estado),fecha_pago=VALUES(fecha_pago),notas=VALUES(notas)")
           ->execute([$cid,$per,$monto,$estado,$fpago,$notas,$user['id']]);
    }
    header('Location: pagos.php?cid='.$cid); exit;
}

// ── MARCAR PAGADO RÁPIDO ──────────────────────────────────────────
if ($_SERVER['REQUEST_METHOD'] === 'POST' && ($_POST['_accion']??'') === 'marcar_pagado') {
    csrf_check();
    $id = intval($_POST['id']);
    $db->prepare("UPDATE dimark_pagos SET estado='pagado', fecha_pago=CURDATE() WHERE id=?")->execute([$id]);
    $cid = intval($_POST['cliente_id']??0);
    header('Location: pagos.php?cid='.$cid); exit;
}

$cid = intval($_GET['cid']??0);
$page_title    = 'Pagos';
$page_subtitle = 'Registro mensual de cobros por cliente';
require_once 'layout.php';

$clientes = $db->query("SELECT id, empresa, precio_mes FROM dimark_clientes ORDER BY empresa")->fetchAll();

$mes_act = date('Y-m');
$mrr     = (float)$db->query("SELECT COALESCE(SUM(precio_mes),0) FROM dimark_clientes")->fetchColumn();
$cobrado = (float)$db->query("SELECT COALESCE(SUM(monto),0) FROM dimark_pagos WHERE periodo='".$mes_act."' AND estado='pagado'")->fetchColumn();
$pend    = (int)$db->query("SELECT COUNT(*) FROM dimark_pagos WHERE estado='pendiente'")->fetchColumn();
$venc    = (int)$db->query("SELECT COUNT(*) FROM dimark_pagos WHERE estado='vencido'")->fetchColumn();
?>

<!-- MÉTRICAS -->
<div class="metrics-grid">
  <div class="metric"><div class="metric-n"><?=number_format($mrr/1000000,1)?>M</div><div class="metric-l">MRR Total COP</div></div>
  <div class="metric"><div class="metric-n green"><?=number_format($cobrado/1000000,1)?>M</div><div class="metric-l">Cobrado este mes</div></div>
  <div class="metric"><div class="metric-n amber"><?=$pend?></div><div class="metric-l">Pendientes</div></div>
  <div class="metric"><div class="metric-n red"><?=$venc?></div><div class="metric-l">Vencidos</div></div>
</div>

<!-- SELECTOR CLIENTE -->
<div class="section-label">Cliente</div>
<form method="GET" style="margin-bottom:20px">
  <select name="cid" style="padding:8px 12px;border:0.5px solid var(--border2);border-radius:8px;font-family:inherit;font-size:13px;min-width:280px" onchange="this.form.submit()">
    <option value="">— Selecciona un cliente —</option>
    <?php foreach($clientes as $c): ?>
    <option value="<?=$c['id']?>" <?=$cid==$c['id']?'selected':''?>>
      <?=clean($c['empresa'])?> — $<?=number_format($c['precio_mes'])?>/mes
    </option>
    <?php endforeach; ?>
  </select>
</form>

<?php if ($cid):
  $cli = $db->prepare("SELECT * FROM dimark_clientes WHERE id=?"); $cli->execute([$cid]); $cli = $cli->fetch();
  if ($cli):
?>
<!-- FORM REGISTRAR PAGO -->
<div class="card" style="max-width:620px;margin-bottom:20px">
  <div class="section-label" style="margin-top:0">Registrar pago — <?=clean($cli['empresa'])?></div>
  <form method="POST">
    <input type="hidden" name="_csrf" value="<?=csrf_token()?>">
    <input type="hidden" name="_accion" value="pago">
    <input type="hidden" name="cliente_id" value="<?=$cid?>">
    <div class="form-row">
      <div class="form-group">
        <label>Periodo</label>
        <input type="month" name="periodo" value="<?=date('Y-m')?>" required>
      </div>
      <div class="form-group">
        <label>Monto (COP)</label>
        <input type="number" name="monto" value="<?=intval($cli['precio_mes'])?>" min="1" required>
      </div>
    </div>
    <div class="form-row">
      <div class="form-group">
        <label>Estado</label>
        <select name="estado">
          <option value="pagado">Pagado</option>
          <option value="pendiente" selected>Pendiente</option>
          <option value="vencido">Vencido</option>
        </select>
      </div>
      <div class="form-group">
        <label>Fecha de pago</label>
        <input type="date" name="fecha_pago" value="<?=date('Y-m-d')?>">
      </div>
    </div>
    <div class="form-group">
      <label>Notas</label>
      <textarea name="notas" rows="1" placeholder="Observaciones opcionales..."></textarea>
    </div>
    <button type="submit" class="btn btn-primary"><i class="ti ti-check"></i> Guardar</button>
  </form>
</div>

<!-- HISTORIAL -->
<?php
$pagos = $db->prepare("SELECT * FROM dimark_pagos WHERE cliente_id=? ORDER BY periodo DESC LIMIT 12");
$pagos->execute([$cid]); $pagos = $pagos->fetchAll();
?>
<div class="section-label">Historial de pagos</div>
<?php if(empty($pagos)): ?>
<div class="alert alert-success"><i class="ti ti-info-circle"></i> Sin registros aún.</div>
<?php else: ?>
<div class="table-wrap">
<table>
<thead><tr>
  <th style="width:16%">Periodo</th>
  <th style="width:22%">Monto</th>
  <th style="width:16%">Estado</th>
  <th style="width:22%">Fecha pago</th>
  <th style="width:24%">Notas / Acción</th>
</tr></thead>
<tbody>
<?php foreach($pagos as $p):
  $bc = ['pagado'=>'b-green','pendiente'=>'b-amber','vencido'=>'b-red'][$p['estado']]??'b-gray';
?>
<tr>
  <td style="font-weight:500"><?=$p['periodo']?></td>
  <td>$<?=number_format($p['monto'])?></td>
  <td><span class="badge <?=$bc?>"><?=ucfirst($p['estado'])?></span></td>
  <td style="color:var(--muted);font-size:12px"><?=$p['fecha_pago']?date('d/m/Y',strtotime($p['fecha_pago'])):'—'?></td>
  <td>
    <?php if($p['estado']!=='pagado'): ?>
    <form method="POST" style="display:inline">
      <input type="hidden" name="_csrf" value="<?=csrf_token()?>">
      <input type="hidden" name="_accion" value="marcar_pagado">
      <input type="hidden" name="id" value="<?=$p['id']?>">
      <input type="hidden" name="cliente_id" value="<?=$cid?>">
      <button type="submit" class="btn" style="font-size:11px;padding:2px 8px"><i class="ti ti-check"></i> Marcar pagado</button>
    </form>
    <?php else: ?>
    <span style="font-size:12px;color:var(--muted)"><?=clean($p['notas']??'')?></span>
    <?php endif; ?>
  </td>
</tr>
<?php endforeach; ?>
</tbody>
</table>
</div>
<?php endif; ?>
<?php endif; ?>
<?php endif; ?>

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