<?php
require_once(dirname(__DIR__) . '/config/db.php');
$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, true);

// =====================================
// CONFIGURAÇÕES
// =====================================
$titulo = "Calendário de Feriados";
$icone  = "bi-calendar-event";

// =====================================
// FILTROS / ORDENAÇÃO / PAGINAÇÃO
// =====================================
$filtro = $_GET['status'] ?? 'ativos';
$order  = $_GET['order'] ?? 'cdferiado';
$dir    = strtolower($_GET['dir'] ?? 'asc');
$dir    = $dir === 'desc' ? 'desc' : 'asc';
$nextDir = $dir === 'asc' ? 'desc' : 'asc';
$limit  = (int)($_GET['limit'] ?? 100);
$page   = (int)($_GET['page'] ?? 1);
$offset = ($page - 1) * $limit;
$busca  = trim($_GET['busca'] ?? '');

// =====================================
// WHERE
// =====================================
$where = [];
$params = [];

if ($filtro === 'ativos') $where[] = "f.flativo = 0";
elseif ($filtro === 'inativos') $where[] = "f.flativo = 1";

if ($busca) {
  $where[] = "(f.dsferiado ILIKE :busca OR p.dspais ILIKE :busca)";
  $params[':busca'] = "%$busca%";
}

$whereSql = $where ? "WHERE " . implode(" AND ", $where) : "";
$limitSql = ($limit === -1) ? "" : "LIMIT $limit OFFSET $offset";

// =====================================
// CONSULTA
// =====================================
$sql = "
  SELECT
    f.*,
    p.dspais,
    CASE
      WHEN f.flanual = 1 THEN LPAD(f.dia::text,2,'0') || '/' || LPAD(f.mes::text,2,'0')
      ELSE TO_CHAR(f.dtferiado, 'DD/MM/YYYY')
    END AS dsdata
  FROM back.calendario_feriado f
  LEFT JOIN back.pais p ON p.cdpais = f.cdpais
  $whereSql
  ORDER BY $order $dir
  $limitSql
";

$stmt = $pdo->prepare($sql);
foreach ($params as $k => $v) $stmt->bindValue($k, $v);
$stmt->execute();
$feriados = $stmt->fetchAll(PDO::FETCH_ASSOC);

$paises = $pdo->query("SELECT * FROM back.pais ORDER BY dspais")->fetchAll(PDO::FETCH_ASSOC);

function iconeSeta($campo, $order, $dir) {
  if ($campo !== $order) return '';
  return $dir === 'asc' ? '▲' : '▼';
}
?>

<h4 class="mb-3"><i class="bi <?= $icone ?>"></i> <?= $titulo ?></h4>
<hr>

<div class="d-flex justify-content-between align-items-center mb-3 flex-wrap gap-2">
  <div class="btn-group">
    <a href="?m=calendario&status=ativos" class="btn btn-outline-success btn-sm <?= $filtro=='ativos'?'active':'' ?>">Ativos</a>
    <a href="?m=calendario&status=inativos" class="btn btn-outline-secondary btn-sm <?= $filtro=='inativos'?'active':'' ?>">Inativos</a>
    <a href="?m=calendario&status=todos" class="btn btn-outline-dark btn-sm <?= $filtro=='todos'?'active':'' ?>">Todos</a>
  </div>

  <form method="get" class="d-flex align-items-center gap-2 flex-grow-1 justify-content-center" style="max-width:500px;">
    <input type="hidden" name="m" value="calendario">
    <input type="hidden" name="status" value="<?= htmlspecialchars($filtro) ?>">
    <div class="input-group input-group-sm w-100">
      <span class="input-group-text bg-white"><i class="bi bi-search text-secondary"></i></span>
      <input type="text" name="busca" class="form-control"
             placeholder="Pesquisar feriado ou país..."
             value="<?= htmlspecialchars($busca) ?>">
      <button class="btn btn-outline-primary" type="submit">Buscar</button>
    </div>
  </form>

  <button class="btn btn-outline-light btn-sm border-secondary text-dark bg-light"
          data-bs-toggle="modal" data-bs-target="#modalFeriado" id="novoFeriadoBtn">
      <i class="bi bi-plus-circle"></i> Novo Feriado
  </button>
</div>

<div class="table-responsive">
<table class="table table-striped table-hover align-middle">
  <thead class="table-dark">
    <tr>
      <th><a class="text-white text-decoration-none" href="?m=calendario&order=cdferiado&dir=<?= $nextDir ?>"># <?= iconeSeta('cdferiado',$order,$dir) ?></a></th>
      <th><a class="text-white text-decoration-none" href="?m=calendario&order=dsferiado&dir=<?= $nextDir ?>">Feriado <?= iconeSeta('dsferiado',$order,$dir) ?></a></th>
      <th>Data</th>
      <th><a class="text-white text-decoration-none" href="?m=calendario&order=dspais&dir=<?= $nextDir ?>">País <?= iconeSeta('dspais',$order,$dir) ?></a></th>
      <th>Tipo</th>
      <th>Status</th>
      <th class="text-center">Ações</th>
    </tr>
  </thead>
  <tbody>
    <?php if ($feriados): foreach ($feriados as $f): ?>
      <tr>
        <td><?= (int)$f['cdferiado'] ?></td>
        <td><?= htmlspecialchars($f['dsferiado']) ?></td>
        <td><?= htmlspecialchars($f['dsdata']) ?></td>
        <td><?= htmlspecialchars($f['dspais']) ?></td>
        <td><?= ((int)$f['flanual']===1) ? '<span class="badge bg-primary">Anual</span>' : '<span class="badge bg-info text-dark">Data fixa</span>' ?></td>
        <td><?= ((int)$f['flativo']===0) ? '<span class="badge bg-success">Ativo</span>' : '<span class="badge bg-secondary">Inativo</span>' ?></td>
        <td class="text-center">
          <button class="btn btn-sm btn-outline-secondary btnEditarFeriado"
                  data-feriado='<?= json_encode($f, JSON_HEX_APOS|JSON_HEX_QUOT) ?>'>
              <i class="bi bi-pencil"></i>
          </button>

          <a href="?m=calendario_actions&delete=<?= (int)$f['cdferiado'] ?>&status=<?= htmlspecialchars($filtro) ?>"
   class="btn btn-sm btn-outline-dark"
   onclick="return confirm('Deseja realmente EXCLUIR este feriado? Essa ação não pode ser desfeita.')">
   <i class="bi bi-trash"></i>
</a>
          <a href="?m=calendario_actions&toggle=<?= (int)$f['cdferiado'] ?>&status=<?= htmlspecialchars($filtro) ?>"
             class="btn btn-sm <?= ((int)$f['flativo']===0) ? 'btn-outline-danger' : 'btn-outline-success' ?>"
             onclick="return confirm('Deseja realmente <?= ((int)$f['flativo']===0)?'inativar':'reativar' ?> este feriado?')">
             <i class="bi <?= ((int)$f['flativo']===0) ? 'bi-power' : 'bi-arrow-repeat' ?>"></i>
          </a>
        </td>
      </tr>
    <?php endforeach; else: ?>
      <tr><td colspan="7" class="text-center text-muted">Nenhum feriado encontrado.</td></tr>
    <?php endif; ?>
  </tbody>
</table>
</div>

<!-- MODAL -->
<div class="modal fade" id="modalFeriado" tabindex="-1" aria-labelledby="modalFeriadoLabel" aria-hidden="true">
  <div class="modal-dialog modal-lg">
    <form method="post" action="?m=calendario_actions" class="modal-content" id="formFeriado">
      <div class="modal-header">
        <h5 class="modal-title" id="modalFeriadoLabel">Cadastrar Feriado</h5>
        <button type="button" class="btn-close" data-bs-dismiss="modal"></button>
      </div>

      <div class="modal-body">
        <input type="hidden" name="cdferiado" id="cdferiado">

        <div class="row g-3">
          <div class="col-md-6">
            <label>Nome do feriado *</label>
            <input type="text" class="form-control" name="dsferiado" id="dsferiado" required>
          </div>

          <div class="col-md-3">
            <label>País *</label>
            <select class="form-select" name="cdpais" id="cdpais" required>
              <option value="">Selecione</option>
              <?php foreach ($paises as $p): ?>
                <option value="<?= (int)$p['cdpais'] ?>"><?= htmlspecialchars($p['dspais']) ?></option>
              <?php endforeach; ?>
            </select>
          </div>

          <div class="col-md-3">
            <label>Tipo *</label>
            <select class="form-select" name="flanual" id="flanual" required>
              <option value="1">Anual (dia/mês)</option>
              <option value="0">Data fixa (dd/mm/aaaa)</option>
            </select>
          </div>

          <div class="col-md-3">
            <label>Dia</label>
            <input type="number" min="1" max="31" class="form-control" name="dia" id="dia" placeholder="1..31">
          </div>

          <div class="col-md-3">
            <label>Mês</label>
            <input type="number" min="1" max="12" class="form-control" name="mes" id="mes" placeholder="1..12">
          </div>

          <div class="col-md-6">
            <label>Data (quando não anual)</label>
            <input type="date" class="form-control" name="dtferiado" id="dtferiado">
          </div>
        </div>

        <div class="alert alert-secondary mt-3 mb-0">
          <small>
            • Para feriado <b>Anual</b>, informe <b>Dia</b> e <b>Mês</b>.<br>
            • Para <b>Data fixa</b>, informe a <b>Data</b> completa.
          </small>
        </div>

      </div>

      <div class="modal-footer">
        <button type="submit" name="salvar" class="btn btn-success">Salvar</button>
      </div>
    </form>
  </div>
</div>

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.1/jquery.min.js"></script>
<script>
function ajustarCamposTipo() {
  const anual = $('#flanual').val() === '1';
  $('#dia, #mes').prop('disabled', !anual).prop('required', anual);
  $('#dtferiado').prop('disabled', anual).prop('required', !anual);

  if (anual) $('#dtferiado').val('');
  else { $('#dia').val(''); $('#mes').val(''); }
}

$('#flanual').on('change', ajustarCamposTipo);

$('.btnEditarFeriado').on('click', function() {
  const f = $(this).data('feriado');
  // preencher campos que têm id igual às colunas
  for (const k in f) {
    if ($('#' + k).length) $('#' + k).val(f[k]);
  }
  $('#modalFeriadoLabel').text('Editar Feriado');
  $('#modalFeriado').modal('show');
  ajustarCamposTipo();
});

// novo
$('#novoFeriadoBtn').on('click', function() {
  $('#formFeriado')[0].reset();
  $('#cdferiado').val('');
  $('#modalFeriadoLabel').text('Cadastrar Feriado');
  $('#flanual').val('1');
  ajustarCamposTipo();
});

// init
ajustarCamposTipo();
</script>
