<?php
require_once __DIR__ . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . 'config' . DIRECTORY_SEPARATOR . 'app.php';
require_once __DIR__ . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . 'includes' . DIRECTORY_SEPARATOR . 'auth.php';
require_once __DIR__ . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . 'includes' . DIRECTORY_SEPARATOR . 'functions.php';
require_once __DIR__ . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . 'includes' . DIRECTORY_SEPARATOR . 'flash.php';
requireRol(ROL_ADMIN);

$user      = currentUser();
$db        = getDB();
$pageTitle = 'Empresas';

// ── CREAR / EDITAR ──────────────────────────────────────────
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $id      = (int)($_POST['id_empresa'] ?? 0);
    $ruc     = trim($_POST['ruc'] ?? '');
    $rs      = trim($_POST['razon_social'] ?? '');
    $nc      = trim($_POST['nombre_comercial'] ?? '');
    $sector  = in_array($_POST['sector'] ?? '', ['publico','privado','mixto','ong']) ? $_POST['sector'] : 'privado';
    $acteco  = trim($_POST['actividad_economica'] ?? '');
    $dir     = trim($_POST['direccion'] ?? '');
    $canton  = trim($_POST['canton'] ?? '');
    $prov    = trim($_POST['provincia'] ?? '');
    $tel     = trim($_POST['telefono'] ?? '');
    $email   = trim($_POST['email_contacto'] ?? '');
    $repnom  = trim($_POST['nombre_representante'] ?? '');
    $repcargo= trim($_POST['cargo_representante'] ?? '');
    $activa  = isset($_POST['activa']) ? 1 : 0;

    $idInst = (int)($user['id_instituto'] ?? 0);
    if ($rs && $ruc) {
        if ($id) {
            // Solo editar si pertenece al mismo instituto
            $db->prepare("
                UPDATE empresas SET
                    ruc=:ruc, razon_social=:rs, nombre_comercial=:nc,
                    sector=:sec, actividad_economica=:ae, direccion=:dir,
                    canton=:can, provincia=:prov, telefono=:tel,
                    email_contacto=:email, nombre_representante=:rn,
                    cargo_representante=:rc, activa=:act
                WHERE id_empresa=:id AND id_instituto=:inst
            ")->execute([
                ':ruc'=>$ruc,':rs'=>$rs,':nc'=>$nc,':sec'=>$sector,
                ':ae'=>$acteco,':dir'=>$dir,':can'=>$canton,':prov'=>$prov,
                ':tel'=>$tel,':email'=>$email,':rn'=>$repnom,':rc'=>$repcargo,
                ':act'=>$activa,':id'=>$id,':inst'=>$idInst
            ]);
            flashSet('ok', 'Empresa actualizada correctamente.');
            registrarAudit($user['id'], 'editar_empresa', 'empresas', $id);
        } else {
            $db->prepare("
                INSERT INTO empresas
                    (id_instituto, ruc, razon_social, nombre_comercial, sector, actividad_economica,
                     direccion, canton, provincia, telefono, email_contacto,
                     nombre_representante, cargo_representante, activa)
                VALUES
                    (:inst,:ruc,:rs,:nc,:sec,:ae,:dir,:can,:prov,:tel,:email,:rn,:rc,:act)
            ")->execute([
                ':inst'=>$idInst,':ruc'=>$ruc,':rs'=>$rs,':nc'=>$nc,':sec'=>$sector,
                ':ae'=>$acteco,':dir'=>$dir,':can'=>$canton,':prov'=>$prov,
                ':tel'=>$tel,':email'=>$email,':rn'=>$repnom,':rc'=>$repcargo,':act'=>1
            ]);
            flashSet('ok', 'Empresa registrada correctamente.');
            registrarAudit($user['id'], 'crear_empresa', 'empresas');
        }
        header('Location: empresas.php'); exit;
    } else {
        flashSet('err', 'RUC y razón social son obligatorios.');
        header('Location: empresas.php'); exit;
    }
}

// ── TOGGLE ACTIVAR/DESACTIVAR ───────────────────────────────
if (isset($_GET['toggle']) && is_numeric($_GET['toggle'])) {
    $tid    = (int)$_GET['toggle'];
    $idInst = (int)($user['id_instituto'] ?? 0);
    $db->prepare("UPDATE empresas SET activa = NOT activa WHERE id_empresa=:id AND id_instituto=:inst")
       ->execute([':id'=>$tid,':inst'=>$idInst]);
    registrarAudit($user['id'], 'toggle_empresa', 'empresas', $tid);
    header('Location: empresas.php'); exit;
}

// ── BÚSQUEDA ────────────────────────────────────────────────
$q       = trim($_GET['q'] ?? '');
$filtro  = $_GET['filtro'] ?? 'todas';
$idInst  = (int)($user['id_instituto'] ?? 0);

$where  = ['e.id_instituto = :inst'];
$params = [':inst' => $idInst];
if ($q) {
    $where[]        = '(e.razon_social LIKE :q OR e.ruc LIKE :q OR e.canton LIKE :q)';
    $params[':q']   = '%'.$q.'%';
}
if ($filtro === 'activas')   { $where[] = 'e.activa = 1'; }
if ($filtro === 'inactivas') { $where[] = 'e.activa = 0'; }

$sql = "SELECT e.*,
               (SELECT COUNT(*) FROM practicas p WHERE p.id_empresa = e.id_empresa) AS total_practicas
        FROM empresas e
        WHERE " . implode(' AND ', $where) . "
        ORDER BY e.razon_social ASC";
$st = $db->prepare($sql);
$st->execute($params);
$empresas = $st->fetchAll();

// Empresa a editar (para prellenar modal — solo si pertenece al mismo instituto)
$editar = null;
if (isset($_GET['editar']) && is_numeric($_GET['editar'])) {
    $stE = $db->prepare("SELECT * FROM empresas WHERE id_empresa=:id AND id_instituto=:inst");
    $stE->execute([':id' => (int)$_GET['editar'], ':inst' => $idInst]);
    $editar = $stE->fetch();
}

$sectorLabels = ['publico'=>'Público','privado'=>'Privado','mixto'=>'Mixto','ong'=>'ONG'];
?>
<!DOCTYPE html>
<html lang="es">
<head><?php include __DIR__ . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . 'includes' . DIRECTORY_SEPARATOR . 'head.php'; ?>
<link rel="stylesheet" href="<?= BASE_URL ?>/assets/css/sidebar-admin.css">
</head>
<body>
<?php include __DIR__ . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . 'includes' . DIRECTORY_SEPARATOR . 'navbar.php'; ?>

<div class="app-shell">
  <?php $sbActivo = 'empresas'; include __DIR__ . '/../../includes/sidebar_admin.php'; ?>

  <main class="main-area">
    <!-- Header -->
    <div class="page-header d-flex justify-content-between align-items-start flex-wrap gap-2">
      <div>
        <h4>Empresas</h4>
        <p>Registro de empresas habilitadas para prácticas preprofesionales</p>
      </div>
      <button class="btn btn-primary btn-sm" id="btnNueva">
        <i class="fa fa-plus me-1"></i>Nueva empresa
      </button>
    </div>

    <?= flashHtml() ?>

    <!-- Filtros + búsqueda -->
    <form method="GET" class="d-flex gap-2 mb-3 flex-wrap align-items-center">
      <input type="text" name="q" class="form-control" style="max-width:260px;"
             placeholder="Razón social, RUC, cantón..." value="<?= htmlspecialchars($q) ?>">
      <?php foreach (['todas'=>'Todas','activas'=>'Activas','inactivas'=>'Inactivas'] as $k=>$v): ?>
      <button type="submit" name="filtro" value="<?= $k ?>"
              class="btn btn-sm <?= $filtro===$k ? 'btn-primary' : 'btn-outline-secondary' ?>">
        <?= $v ?>
      </button>
      <?php endforeach; ?>
      <?php if ($q): ?>
      <a href="empresas.php" class="btn btn-sm btn-outline-secondary">✕ Limpiar</a>
      <?php endif; ?>
    </form>

    <!-- Tabla -->
    <div class="tbl-wrap">
      <table class="table table-borderless mb-0">
        <thead>
          <tr>
            <th>Razón Social / Comercial</th>
            <th>RUC</th>
            <th>Sector</th>
            <th>Ubicación</th>
            <th>Representante</th>
            <th>Prácticas</th>
            <th>Estado</th>
            <th>Acciones</th>
          </tr>
        </thead>
        <tbody>
          <?php if (empty($empresas)): ?>
          <tr>
            <td colspan="8" class="text-center py-5">
              <div style="font-size:28px;margin-bottom:8px;">🏢</div>
              <div style="color:#8b949e;font-size:13px;">
                <?= $q ? 'Sin resultados para "'.$q.'"' : 'No hay empresas registradas aún.' ?>
              </div>
            </td>
          </tr>
          <?php else: foreach ($empresas as $e): ?>
          <tr>
            <td>
              <strong style="font-size:13px;"><?= htmlspecialchars($e['razon_social']) ?></strong>
              <?php if ($e['nombre_comercial']): ?>
              <div style="font-size:11px;color:#8b949e;"><?= htmlspecialchars($e['nombre_comercial']) ?></div>
              <?php endif; ?>
            </td>
            <td style="font-family:monospace;font-size:12px;"><?= htmlspecialchars($e['ruc']) ?></td>
            <td>
              <?php
              $sectorColor = match($e['sector']) {
                'publico' => '#2ea8ff', 'privado' => '#3dffa0',
                'mixto'   => '#f7b93e', 'ong'     => '#c792ea',
                default   => '#8b949e'
              };
              ?>
              <span style="font-size:11px;padding:2px 8px;border-radius:10px;
                           background:<?= $sectorColor ?>22;color:<?= $sectorColor ?>;
                           border:1px solid <?= $sectorColor ?>44;">
                <?= $sectorLabels[$e['sector']] ?? $e['sector'] ?>
              </span>
            </td>
            <td style="font-size:12px;">
              <?php if ($e['canton'] || $e['provincia']): ?>
                <?= htmlspecialchars(implode(', ', array_filter([$e['canton'],$e['provincia']]))) ?>
              <?php else: ?>
                <span style="color:#8b949e;">—</span>
              <?php endif; ?>
            </td>
            <td style="font-size:12px;">
              <?php if ($e['nombre_representante']): ?>
                <div><?= htmlspecialchars($e['nombre_representante']) ?></div>
                <?php if ($e['cargo_representante']): ?>
                <div style="color:#8b949e;font-size:11px;"><?= htmlspecialchars($e['cargo_representante']) ?></div>
                <?php endif; ?>
              <?php else: ?>
                <span style="color:#8b949e;">—</span>
              <?php endif; ?>
            </td>
            <td style="text-align:center;">
              <span style="font-weight:700;font-size:14px;color:<?= $e['total_practicas']>0?'#2ea8ff':'#8b949e' ?>">
                <?= $e['total_practicas'] ?>
              </span>
            </td>
            <td>
              <?php if ($e['activa']): ?>
                <span class="badge-estado st-aprobado">Activa</span>
              <?php else: ?>
                <span class="badge-estado st-calificado">Inactiva</span>
              <?php endif; ?>
            </td>
            <td>
              <a href="?editar=<?= $e['id_empresa'] ?>&q=<?= urlencode($q) ?>&filtro=<?= $filtro ?>"
                 class="btn btn-sm btn-outline-secondary me-1" title="Editar">
                <i class="fa fa-pen-to-square"></i>
              </a>
              <a href="?toggle=<?= $e['id_empresa'] ?>&q=<?= urlencode($q) ?>&filtro=<?= $filtro ?>"
                 class="btn btn-sm btn-outline-secondary"
                 title="<?= $e['activa'] ? 'Desactivar' : 'Activar' ?>"
                 data-confirm="<?= $e['activa'] ? '¿Desactivar esta empresa?' : '¿Activar esta empresa?' ?>">
                <i class="fa fa-<?= $e['activa'] ? 'toggle-on' : 'toggle-off' ?>"></i>
              </a>
            </td>
          </tr>
          <?php endforeach; endif; ?>
        </tbody>
      </table>
    </div>

    <div style="font-size:12px;color:#8b949e;margin-top:10px;text-align:right;">
      <?= count($empresas) ?> empresa(s) encontrada(s)
    </div>
  </main>
</div>

<!-- ── MODAL CREAR / EDITAR ── -->
<div class="modal fade" id="modalEmpresa" tabindex="-1">
  <div class="modal-dialog modal-lg">
    <div class="modal-content">
      <div class="modal-header">
        <h5 class="modal-title" id="m-titulo">Nueva empresa</h5>
        <button type="button" class="btn-close" data-bs-dismiss="modal"></button>
      </div>
      <form method="POST" id="formEmpresa">
        <input type="hidden" name="id_empresa" id="f-id" value="0">
        <div class="modal-body">

          <!-- Datos básicos -->
          <div style="font-size:11px;font-weight:700;letter-spacing:1px;text-transform:uppercase;
                      color:#8b949e;margin-bottom:10px;">Datos de la empresa</div>
          <div class="row g-3 mb-3">
            <div class="col-sm-8">
              <label class="form-label">Razón Social <span style="color:#ff9d93;">*</span></label>
              <input type="text" name="razon_social" id="f-rs" class="form-control"
                     required maxlength="200" placeholder="Nombre legal completo">
            </div>
            <div class="col-sm-4">
              <label class="form-label">RUC <span style="color:#ff9d93;">*</span></label>
              <input type="text" name="ruc" id="f-ruc" class="form-control"
                     required maxlength="13" placeholder="0000000000001">
            </div>
            <div class="col-sm-6">
              <label class="form-label">Nombre Comercial</label>
              <input type="text" name="nombre_comercial" id="f-nc" class="form-control"
                     maxlength="150" placeholder="Nombre de uso comercial">
            </div>
            <div class="col-sm-3">
              <label class="form-label">Sector</label>
              <select name="sector" id="f-sec" class="form-select">
                <option value="privado">Privado</option>
                <option value="publico">Público</option>
                <option value="mixto">Mixto</option>
                <option value="ong">ONG</option>
              </select>
            </div>
            <div class="col-sm-3 d-flex align-items-end">
              <div class="form-check">
                <input type="checkbox" name="activa" id="f-activa" class="form-check-input" value="1" checked>
                <label class="form-check-label" for="f-activa">Activa</label>
              </div>
            </div>
            <div class="col-12">
              <label class="form-label">Actividad económica</label>
              <input type="text" name="actividad_economica" id="f-ae" class="form-control"
                     maxlength="200" placeholder="ej: Desarrollo de software y consultoría tecnológica">
            </div>
          </div>

          <!-- Ubicación -->
          <div style="font-size:11px;font-weight:700;letter-spacing:1px;text-transform:uppercase;
                      color:#8b949e;margin-bottom:10px;border-top:1px solid #30363d;padding-top:14px;">
            Ubicación y contacto
          </div>
          <div class="row g-3 mb-3">
            <div class="col-12">
              <label class="form-label">Dirección</label>
              <input type="text" name="direccion" id="f-dir" class="form-control"
                     maxlength="300" placeholder="Calle, número, sector">
            </div>
            <div class="col-sm-6">
              <label class="form-label">Cantón</label>
              <input type="text" name="canton" id="f-can" class="form-control" maxlength="80">
            </div>
            <div class="col-sm-6">
              <label class="form-label">Provincia</label>
              <input type="text" name="provincia" id="f-prov" class="form-control" maxlength="80">
            </div>
            <div class="col-sm-6">
              <label class="form-label">Teléfono</label>
              <input type="tel" name="telefono" id="f-tel" class="form-control" maxlength="15">
            </div>
            <div class="col-sm-6">
              <label class="form-label">Email de contacto</label>
              <input type="email" name="email_contacto" id="f-email" class="form-control" maxlength="120">
            </div>
          </div>

          <!-- Representante -->
          <div style="font-size:11px;font-weight:700;letter-spacing:1px;text-transform:uppercase;
                      color:#8b949e;margin-bottom:10px;border-top:1px solid #30363d;padding-top:14px;">
            Representante legal
          </div>
          <div class="row g-3">
            <div class="col-sm-8">
              <label class="form-label">Nombre del representante</label>
              <input type="text" name="nombre_representante" id="f-rn" class="form-control" maxlength="120">
            </div>
            <div class="col-sm-4">
              <label class="form-label">Cargo</label>
              <input type="text" name="cargo_representante" id="f-rc" class="form-control" maxlength="80">
            </div>
          </div>

        </div>
        <div class="modal-footer">
          <button type="button" class="btn btn-outline-secondary" data-bs-dismiss="modal">Cancelar</button>
          <button type="submit" class="btn btn-primary">
            <i class="fa fa-floppy-disk me-1"></i>Guardar empresa
          </button>
        </div>
      </form>
    </div>
  </div>
</div>

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap/5.3.3/js/bootstrap.bundle.min.js"></script>
<script>
var modal;
$(function () {
  modal = new bootstrap.Modal('#modalEmpresa');

  // Botón "Nueva empresa"
  $('#btnNueva').on('click', function () {
    resetForm();
    modal.show();
  });

  // Confirmar antes de toggle
  $(document).on('click', '[data-confirm]', function (e) {
    if (!confirm($(this).data('confirm'))) e.preventDefault();
  });

  function resetForm() {
    $('#m-titulo').text('Nueva empresa');
    $('#f-id').val(0);
    $('#f-rs,#f-ruc,#f-nc,#f-ae,#f-dir,#f-can,#f-prov,#f-tel,#f-email,#f-rn,#f-rc').val('');
    $('#f-sec').val('privado');
    $('#f-activa').prop('checked', true);
  }

  // Si hay ?editar= en la URL, abrir modal con datos
  <?php if ($editar): ?>
  $('#m-titulo').text('Editar empresa');
  $('#f-id').val(<?= $editar['id_empresa'] ?>);
  $('#f-rs').val(<?= json_encode($editar['razon_social']) ?>);
  $('#f-ruc').val(<?= json_encode($editar['ruc']) ?>);
  $('#f-nc').val(<?= json_encode($editar['nombre_comercial'] ?? '') ?>);
  $('#f-sec').val(<?= json_encode($editar['sector']) ?>);
  $('#f-ae').val(<?= json_encode($editar['actividad_economica'] ?? '') ?>);
  $('#f-dir').val(<?= json_encode($editar['direccion'] ?? '') ?>);
  $('#f-can').val(<?= json_encode($editar['canton'] ?? '') ?>);
  $('#f-prov').val(<?= json_encode($editar['provincia'] ?? '') ?>);
  $('#f-tel').val(<?= json_encode($editar['telefono'] ?? '') ?>);
  $('#f-email').val(<?= json_encode($editar['email_contacto'] ?? '') ?>);
  $('#f-rn').val(<?= json_encode($editar['nombre_representante'] ?? '') ?>);
  $('#f-rc').val(<?= json_encode($editar['cargo_representante'] ?? '') ?>);
  $('#f-activa').prop('checked', <?= $editar['activa'] ? 'true' : 'false' ?>);
  modal.show();
  <?php endif; ?>

});
</script>
</body>
</html>