<?php
declare(strict_types=1);

require_once __DIR__ . '/_bootstrap.php';
admin_require_login();

$configuracoes = admin_get_configuracoes();
$regioes = admin_get_tarifa_regioes();
$flash = admin_flash();
$regioesJson = json_encode(
    $regioes,
    JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES | JSON_HEX_TAG | JSON_HEX_APOS | JSON_HEX_QUOT | JSON_HEX_AMP
);

function valor_config_admin(array $configuracoes, string $chave): string
{
    return number_format((float) ($configuracoes[$chave]['valor'] ?? 0), 2, '.', '');
}
?>
<!doctype html>
<html lang="pt-BR">
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>Bulo Admin - Tarifas</title>
  <link rel="stylesheet" href="https://unpkg.com/leaflet@1.9.4/dist/leaflet.css">
  <link rel="stylesheet" href="assets/admin.css?v=20260705-2">
</head>
<body>
  <?php admin_sidebar('configuracoes'); ?>

  <main class="page">
    <?php if ($flash): ?>
      <div class="flash <?= e($flash['type']) ?>"><?= e($flash['message']) ?></div>
    <?php endif; ?>

    <section class="panel">
      <div class="panel-header">
        <h1>Tarifas por região</h1>
        <p>Defina geocercas no mapa para cada região. Fora de uma região ativa, o app informa que ainda não atendemos.</p>
      </div>

      <div class="panel-body">
        <form method="post" action="salvar_configuracoes.php">
          <div class="section-title">
            <h2>Tarifa padrao</h2>
            <p>Valores usados como base ao criar novas regiões e quando o app consulta sem localização.</p>
          </div>

          <div class="grid">
            <?php foreach ($configuracoes as $chave => $config): ?>
              <div class="field">
                <label for="global_<?= e($chave) ?>"><?= e(label_configuracao($chave)) ?></label>
                <input
                  id="global_<?= e($chave) ?>"
                  name="<?= e($chave) ?>"
                  type="number"
                  min="0"
                  step="0.01"
                  value="<?= e(number_format((float) $config['valor'], 2, '.', '')) ?>"
                  required
                >
                <small><?= e((string) $config['descricao']) ?></small>
                <?php if (!empty($config['atualizado_por'])): ?>
                  <small>
                    Ultima alteracao por <?= e((string) $config['atualizado_por']) ?>
                    <?php if (!empty($config['atualizado_em'])): ?>
                      em <?= e((string) $config['atualizado_em']) ?>
                    <?php endif; ?>
                  </small>
                <?php endif; ?>
              </div>
            <?php endforeach; ?>
          </div>

          <div class="actions">
            <button class="button" type="submit">Salvar tarifa padrao</button>
            <a class="button secondary" href="../configuracoes/app.php" target="_blank">Ver JSON do app</a>
          </div>
        </form>
      </div>
    </section>

    <section class="panel tariff-panel">
      <div class="panel-header">
        <h1>Regiões tarifarias</h1>
        <p>Clique no mapa para marcar os pontos da geocerca. A ordem menor tem prioridade quando duas regiões se sobrepoem.</p>
      </div>

      <div class="panel-body">
        <div class="tariff-layout">
          <div class="tariff-map-card">
            <div id="tarifaMap" class="tariff-map"></div>
            <div class="tariff-map-actions">
              <button class="button secondary small" type="button" id="limparGeocerca">Limpar desenho</button>
              <span id="contadorPontos">0 pontos marcados</span>
            </div>
          </div>

          <form class="tariff-form" method="post" action="salvar_configuracoes.php" id="formRegiaoTarifa">
            <input type="hidden" name="tipo" value="regiao">
            <input type="hidden" name="id_regiao" id="id_regiao">
            <input type="hidden" name="geocerca_json" id="geocerca_json">

            <div class="section-title compact">
              <h2 id="tituloFormRegiao">Nova região</h2>
              <p>Defina os valores de cada categoria dentro dessa geocerca.</p>
            </div>

            <div class="grid compact-grid">
              <div class="field">
                <label for="nome">Nome da região</label>
                <input id="nome" name="nome" type="text" maxlength="120" placeholder="Ex.: Centro" required>
              </div>
              <div class="field">
                <label for="ordem">Prioridade</label>
                <input id="ordem" name="ordem" type="number" min="0" step="1" value="100" required>
                <small>Menor número vence em regiões sobrepostas.</small>
              </div>
              <div class="field checkbox-field">
                <label>
                  <input id="ativo" name="ativo" type="checkbox" value="1" checked>
                  Região ativa
                </label>
              </div>
              <div class="field checkbox-field">
                <label>
                  <input id="dinamica_ativa" name="dinamica_ativa" type="checkbox" value="1">
                  Preco dinamico ativo
                </label>
              </div>
              <div class="field">
                <label for="dinamica_multiplicador_max">Multiplicador maximo</label>
                <input id="dinamica_multiplicador_max" name="dinamica_multiplicador_max" type="number" min="1" max="3" step="0.05" value="1.80" required>
                <small>Limite aplicado quando a demanda subir.</small>
              </div>
              <div class="field">
                <label for="dinamica_sensibilidade">Sensibilidade</label>
                <select id="dinamica_sensibilidade" name="dinamica_sensibilidade">
                  <option value="baixa">Baixa</option>
                  <option value="media" selected>Media</option>
                  <option value="alta">Alta</option>
                </select>
                <small>Alta reage mais cedo; baixa espera mais pressao.</small>
              </div>
              <div class="field">
                <label for="dinamica_celula_km">Tamanho da celula</label>
                <input id="dinamica_celula_km" name="dinamica_celula_km" type="number" min="0.8" max="8" step="0.1" value="2.00" required>
                <small>Medida aproximada em km para formar os octagonos.</small>
              </div>
              <div class="field">
                <label for="dinamica_janela_minutos">Janela de demanda</label>
                <input id="dinamica_janela_minutos" name="dinamica_janela_minutos" type="number" min="1" max="60" step="1" value="12" required>
                <small>Quantos minutos de chamadas pendentes entram no calculo.</small>
              </div>
            </div>

            <div class="tariff-category-prices">
              <section class="tariff-category-box">
                <label class="tariff-category-title">
                  <input name="economica_ativo" id="economica_ativo" type="checkbox" checked>
                  Economica
                </label>
                <div class="grid compact-grid">
                  <div class="field">
                    <label for="preco_base">Preco base</label>
                    <input id="preco_base" name="preco_base" type="number" min="0" step="0.01" value="<?= e(valor_config_admin($configuracoes, 'preco_base')) ?>" required>
                  </div>
                  <div class="field">
                    <label for="preco_por_km">Preco por km</label>
                    <input id="preco_por_km" name="preco_por_km" type="number" min="0" step="0.01" value="<?= e(valor_config_admin($configuracoes, 'preco_por_km')) ?>" required>
                  </div>
                  <div class="field">
                    <label for="preco_por_minuto">Preco por minuto</label>
                    <input id="preco_por_minuto" name="preco_por_minuto" type="number" min="0" step="0.01" value="<?= e(valor_config_admin($configuracoes, 'preco_por_minuto')) ?>" required>
                  </div>
                  <div class="field">
                    <label for="taxa_servico">Taxa de servico</label>
                    <input id="taxa_servico" name="taxa_servico" type="number" min="0" step="0.01" value="<?= e(valor_config_admin($configuracoes, 'taxa_servico')) ?>" required>
                  </div>
                  <div class="field">
                    <label for="valor_minimo">Valor mínimo</label>
                    <input id="valor_minimo" name="valor_minimo" type="number" min="0" step="0.01" value="<?= e(valor_config_admin($configuracoes, 'valor_minimo')) ?>" required>
                  </div>
                </div>
              </section>

              <section class="tariff-category-box">
                <label class="tariff-category-title">
                  <input name="plus_ativo" id="plus_ativo" type="checkbox" checked>
                  Plus
                </label>
                <div class="grid compact-grid">
                  <div class="field">
                    <label for="plus_preco_base">Preco base</label>
                    <input id="plus_preco_base" name="plus_preco_base" type="number" min="0" step="0.01" value="<?= e(valor_config_admin($configuracoes, 'plus_preco_base')) ?>" required>
                  </div>
                  <div class="field">
                    <label for="plus_preco_por_km">Preco por km</label>
                    <input id="plus_preco_por_km" name="plus_preco_por_km" type="number" min="0" step="0.01" value="<?= e(valor_config_admin($configuracoes, 'plus_preco_por_km')) ?>" required>
                  </div>
                  <div class="field">
                    <label for="plus_preco_por_minuto">Preco por minuto</label>
                    <input id="plus_preco_por_minuto" name="plus_preco_por_minuto" type="number" min="0" step="0.01" value="<?= e(valor_config_admin($configuracoes, 'plus_preco_por_minuto')) ?>" required>
                  </div>
                  <div class="field">
                    <label for="plus_taxa_servico">Taxa de servico</label>
                    <input id="plus_taxa_servico" name="plus_taxa_servico" type="number" min="0" step="0.01" value="<?= e(valor_config_admin($configuracoes, 'plus_taxa_servico')) ?>" required>
                  </div>
                  <div class="field">
                    <label for="plus_valor_minimo">Valor mínimo</label>
                    <input id="plus_valor_minimo" name="plus_valor_minimo" type="number" min="0" step="0.01" value="<?= e(valor_config_admin($configuracoes, 'plus_valor_minimo')) ?>" required>
                  </div>
                </div>
              </section>

              <section class="tariff-category-box">
                <label class="tariff-category-title">
                  <input name="pro_ativo" id="pro_ativo" type="checkbox" checked>
                  Pro
                </label>
                <div class="grid compact-grid">
                  <div class="field">
                    <label for="pro_preco_base">Preco base</label>
                    <input id="pro_preco_base" name="pro_preco_base" type="number" min="0" step="0.01" value="<?= e(valor_config_admin($configuracoes, 'pro_preco_base')) ?>" required>
                  </div>
                  <div class="field">
                    <label for="pro_preco_por_km">Preco por km</label>
                    <input id="pro_preco_por_km" name="pro_preco_por_km" type="number" min="0" step="0.01" value="<?= e(valor_config_admin($configuracoes, 'pro_preco_por_km')) ?>" required>
                  </div>
                  <div class="field">
                    <label for="pro_preco_por_minuto">Preco por minuto</label>
                    <input id="pro_preco_por_minuto" name="pro_preco_por_minuto" type="number" min="0" step="0.01" value="<?= e(valor_config_admin($configuracoes, 'pro_preco_por_minuto')) ?>" required>
                  </div>
                  <div class="field">
                    <label for="pro_taxa_servico">Taxa de servico</label>
                    <input id="pro_taxa_servico" name="pro_taxa_servico" type="number" min="0" step="0.01" value="<?= e(valor_config_admin($configuracoes, 'pro_taxa_servico')) ?>" required>
                  </div>
                  <div class="field">
                    <label for="pro_valor_minimo">Valor mínimo</label>
                    <input id="pro_valor_minimo" name="pro_valor_minimo" type="number" min="0" step="0.01" value="<?= e(valor_config_admin($configuracoes, 'pro_valor_minimo')) ?>" required>
                  </div>
                </div>
              </section>
            </div>

            <div class="actions">
              <button class="button" type="submit">Salvar região</button>
              <button class="button secondary" type="button" id="novaRegiao">Nova região</button>
            </div>
          </form>
        </div>
      </div>
    </section>

    <section class="panel">
      <div class="panel-header">
        <h1>Regiões cadastradas</h1>
        <p><?= count($regioes) ?> regiao(oes) configurada(s).</p>
      </div>
      <div class="panel-body">
        <?php if (!$regioes): ?>
          <div class="empty-state">Nenhuma região criada ainda. Desenhe uma geocerca no mapa para comecar.</div>
        <?php else: ?>
          <div class="tariff-region-list">
            <?php foreach ($regioes as $regiao): ?>
              <article class="tariff-region-card">
                <div>
                  <div class="region-title">
                    <h2><?= e($regiao['nome']) ?></h2>
                    <span class="status-pill <?= $regiao['ativo'] ? 'approved' : 'muted' ?>">
                      <?= $regiao['ativo'] ? 'Ativa' : 'Inativa' ?>
                    </span>
                  </div>
                  <p>
                    Prioridade <?= (int) $regiao['ordem'] ?> |
                    <?= count($regiao['geocerca']) ?> pontos
                  </p>
                  <div class="tariff-card-values">
                    <span>Eco: min. R$ <?= e(number_format((float) $regiao['valor_minimo'], 2, ',', '.')) ?> | base R$ <?= e(number_format((float) $regiao['preco_base'], 2, ',', '.')) ?> + R$ <?= e(number_format((float) $regiao['preco_por_km'], 2, ',', '.')) ?>/km</span>
                    <span>Plus: min. R$ <?= e(number_format((float) $regiao['plus_valor_minimo'], 2, ',', '.')) ?> | base R$ <?= e(number_format((float) $regiao['plus_preco_base'], 2, ',', '.')) ?> + R$ <?= e(number_format((float) $regiao['plus_preco_por_km'], 2, ',', '.')) ?>/km</span>
                    <span>Pro: min. R$ <?= e(number_format((float) $regiao['pro_valor_minimo'], 2, ',', '.')) ?> | base R$ <?= e(number_format((float) $regiao['pro_preco_base'], 2, ',', '.')) ?> + R$ <?= e(number_format((float) $regiao['pro_preco_por_km'], 2, ',', '.')) ?>/km</span>
                  </div>
                  <div class="category-badges">
                    <span class="<?= $regiao['economica_ativo'] ? 'on' : 'off' ?>">Economica</span>
                    <span class="<?= $regiao['plus_ativo'] ? 'on' : 'off' ?>">Plus</span>
                    <span class="<?= $regiao['pro_ativo'] ? 'on' : 'off' ?>">Pro</span>
                    <span class="<?= $regiao['dinamica_ativa'] ? 'dynamic-on' : 'off' ?>">
                      Dinamico <?= $regiao['dinamica_ativa'] ? 'ate ' . e(number_format((float) $regiao['dinamica_multiplicador_max'], 2, ',', '.')) . 'x / ' . (int) $regiao['dinamica_janela_minutos'] . ' min' : 'off' ?>
                    </span>
                  </div>
                  <?php if (!empty($regiao['atualizado_por'])): ?>
                    <small>Atualizada por <?= e((string) $regiao['atualizado_por']) ?> em <?= e((string) $regiao['atualizado_em']) ?></small>
                  <?php endif; ?>
                </div>
                <button class="button secondary small" type="button" onclick="editarRegiaoTarifa(<?= (int) $regiao['id'] ?>)">Editar no mapa</button>
              </article>
            <?php endforeach; ?>
          </div>
        <?php endif; ?>
      </div>
    </section>
  </main>

  <script src="https://unpkg.com/leaflet@1.9.4/dist/leaflet.js"></script>
  <script>
    const regioesTarifa = <?= $regioesJson ?: '[]' ?>;
    const valoresPadrao = {
      preco_base: '<?= e(number_format((float) $configuracoes['preco_base']['valor'], 2, '.', '')) ?>',
      preco_por_km: '<?= e(number_format((float) $configuracoes['preco_por_km']['valor'], 2, '.', '')) ?>',
      preco_por_minuto: '<?= e(number_format((float) $configuracoes['preco_por_minuto']['valor'], 2, '.', '')) ?>',
      taxa_servico: '<?= e(number_format((float) $configuracoes['taxa_servico']['valor'], 2, '.', '')) ?>',
      valor_minimo: '<?= e(valor_config_admin($configuracoes, 'valor_minimo')) ?>',
      plus_preco_base: '<?= e(valor_config_admin($configuracoes, 'plus_preco_base')) ?>',
      plus_preco_por_km: '<?= e(valor_config_admin($configuracoes, 'plus_preco_por_km')) ?>',
      plus_preco_por_minuto: '<?= e(valor_config_admin($configuracoes, 'plus_preco_por_minuto')) ?>',
      plus_taxa_servico: '<?= e(valor_config_admin($configuracoes, 'plus_taxa_servico')) ?>',
      plus_valor_minimo: '<?= e(valor_config_admin($configuracoes, 'plus_valor_minimo')) ?>',
      pro_preco_base: '<?= e(valor_config_admin($configuracoes, 'pro_preco_base')) ?>',
      pro_preco_por_km: '<?= e(valor_config_admin($configuracoes, 'pro_preco_por_km')) ?>',
      pro_preco_por_minuto: '<?= e(valor_config_admin($configuracoes, 'pro_preco_por_minuto')) ?>',
      pro_taxa_servico: '<?= e(valor_config_admin($configuracoes, 'pro_taxa_servico')) ?>',
      pro_valor_minimo: '<?= e(valor_config_admin($configuracoes, 'pro_valor_minimo')) ?>',
    };

    const primeiraRegiao = regioesTarifa.find((item) => item.centro_lat && item.centro_lng);
    const map = L.map('tarifaMap').setView(
      primeiraRegiao ? [primeiraRegiao.centro_lat, primeiraRegiao.centro_lng] : [-31.7669, -52.3420],
      primeiraRegiao ? 13 : 12
    );
    L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
      maxZoom: 19,
      attribution: '&copy; OpenStreetMap'
    }).addTo(map);

    const regioesLayer = L.layerGroup().addTo(map);
    const desenhoLayer = L.layerGroup().addTo(map);
    let pontosDesenho = [];

    const ids = [
      'id_regiao', 'geocerca_json', 'nome', 'ordem', 'ativo', 'preco_base',
      'preco_por_km', 'preco_por_minuto', 'taxa_servico', 'valor_minimo', 'economica_ativo',
      'plus_ativo', 'pro_ativo', 'plus_preco_base', 'plus_preco_por_km',
      'plus_preco_por_minuto', 'plus_taxa_servico', 'plus_valor_minimo', 'pro_preco_base',
      'pro_preco_por_km', 'pro_preco_por_minuto', 'pro_taxa_servico', 'pro_valor_minimo',
      'dinamica_ativa', 'dinamica_multiplicador_max', 'dinamica_sensibilidade', 'dinamica_celula_km',
      'dinamica_janela_minutos'
    ];
    const el = Object.fromEntries(ids.map((id) => [id, document.getElementById(id)]));
    const contadorPontos = document.getElementById('contadorPontos');
    const tituloFormRegiao = document.getElementById('tituloFormRegiao');

    function dinheiroInput(valor, fallback = '0.00') {
      const numero = Number(valor);
      return Number.isFinite(numero) ? numero.toFixed(2) : fallback;
    }

    function atualizarDesenho() {
      desenhoLayer.clearLayers();
      el.geocerca_json.value = JSON.stringify(pontosDesenho);
      contadorPontos.textContent = `${pontosDesenho.length} ponto${pontosDesenho.length === 1 ? '' : 's'} marcado${pontosDesenho.length === 1 ? '' : 's'}`;

      pontosDesenho.forEach((ponto, index) => {
        L.circleMarker([ponto.lat, ponto.lng], {
          radius: 6,
          color: '#ffffff',
          weight: 2,
          fillColor: '#1683f7',
          fillOpacity: 1
        }).addTo(desenhoLayer).bindTooltip(String(index + 1), {permanent: false});
      });

      if (pontosDesenho.length >= 3) {
        L.polygon(pontosDesenho.map((p) => [p.lat, p.lng]), {
          color: '#1683f7',
          weight: 3,
          fillColor: '#1683f7',
          fillOpacity: 0.15
        }).addTo(desenhoLayer);
      } else if (pontosDesenho.length >= 2) {
        L.polyline(pontosDesenho.map((p) => [p.lat, p.lng]), {
          color: '#1683f7',
          weight: 3
        }).addTo(desenhoLayer);
      }
    }

    function limparDesenho() {
      pontosDesenho = [];
      atualizarDesenho();
    }

    function preencherFormulario(regiao) {
      el.id_regiao.value = regiao?.id ?? '';
      el.nome.value = regiao?.nome ?? '';
      el.ordem.value = regiao?.ordem ?? 100;
      el.ativo.checked = regiao ? Boolean(regiao.ativo) : true;
      el.preco_base.value = dinheiroInput(regiao?.preco_base, valoresPadrao.preco_base);
      el.preco_por_km.value = dinheiroInput(regiao?.preco_por_km, valoresPadrao.preco_por_km);
      el.preco_por_minuto.value = dinheiroInput(regiao?.preco_por_minuto, valoresPadrao.preco_por_minuto);
      el.taxa_servico.value = dinheiroInput(regiao?.taxa_servico, valoresPadrao.taxa_servico);
      el.valor_minimo.value = dinheiroInput(regiao?.valor_minimo, valoresPadrao.valor_minimo);
      el.plus_preco_base.value = dinheiroInput(regiao?.plus_preco_base, valoresPadrao.plus_preco_base);
      el.plus_preco_por_km.value = dinheiroInput(regiao?.plus_preco_por_km, valoresPadrao.plus_preco_por_km);
      el.plus_preco_por_minuto.value = dinheiroInput(regiao?.plus_preco_por_minuto, valoresPadrao.plus_preco_por_minuto);
      el.plus_taxa_servico.value = dinheiroInput(regiao?.plus_taxa_servico, valoresPadrao.plus_taxa_servico);
      el.plus_valor_minimo.value = dinheiroInput(regiao?.plus_valor_minimo, valoresPadrao.plus_valor_minimo);
      el.pro_preco_base.value = dinheiroInput(regiao?.pro_preco_base, valoresPadrao.pro_preco_base);
      el.pro_preco_por_km.value = dinheiroInput(regiao?.pro_preco_por_km, valoresPadrao.pro_preco_por_km);
      el.pro_preco_por_minuto.value = dinheiroInput(regiao?.pro_preco_por_minuto, valoresPadrao.pro_preco_por_minuto);
      el.pro_taxa_servico.value = dinheiroInput(regiao?.pro_taxa_servico, valoresPadrao.pro_taxa_servico);
      el.pro_valor_minimo.value = dinheiroInput(regiao?.pro_valor_minimo, valoresPadrao.pro_valor_minimo);
      el.economica_ativo.checked = regiao ? Boolean(regiao.economica_ativo) : true;
      el.plus_ativo.checked = regiao ? Boolean(regiao.plus_ativo) : true;
      el.pro_ativo.checked = regiao ? Boolean(regiao.pro_ativo) : true;
      el.dinamica_ativa.checked = regiao ? Boolean(regiao.dinamica_ativa) : false;
      el.dinamica_multiplicador_max.value = dinheiroInput(regiao?.dinamica_multiplicador_max, '1.80');
      el.dinamica_sensibilidade.value = regiao?.dinamica_sensibilidade || 'media';
      el.dinamica_celula_km.value = dinheiroInput(regiao?.dinamica_celula_km, '2.00');
      el.dinamica_janela_minutos.value = regiao?.dinamica_janela_minutos || 12;
      tituloFormRegiao.textContent = regiao ? `Editando ${regiao.nome}` : 'Nova regiao';
    }

    function editarRegiaoTarifa(id) {
      const regiao = regioesTarifa.find((item) => Number(item.id) === Number(id));
      if (!regiao) return;
      preencherFormulario(regiao);
      pontosDesenho = Array.isArray(regiao.geocerca) ? regiao.geocerca.map((ponto) => ({
        lat: Number(ponto.lat),
        lng: Number(ponto.lng)
      })) : [];
      atualizarDesenho();
      if (pontosDesenho.length >= 3) {
        map.fitBounds(L.polygon(pontosDesenho.map((p) => [p.lat, p.lng])).getBounds(), {padding: [32, 32]});
      }
      document.getElementById('formRegiaoTarifa').scrollIntoView({behavior: 'smooth', block: 'start'});
    }

    function novaRegiao() {
      preencherFormulario(null);
      limparDesenho();
    }

    function desenharRegioesExistentes() {
      let bounds = null;
      regioesTarifa.forEach((regiao) => {
        if (!Array.isArray(regiao.geocerca) || regiao.geocerca.length < 3) return;
        const pontos = regiao.geocerca.map((p) => [Number(p.lat), Number(p.lng)]);
        const polygon = L.polygon(pontos, {
          color: regiao.ativo ? '#08a957' : '#6d7a8a',
          weight: 2,
          fillColor: regiao.ativo ? '#08a957' : '#6d7a8a',
          fillOpacity: 0.12
        }).addTo(regioesLayer);
        polygon.bindTooltip(regiao.nome);
        polygon.on('click', () => editarRegiaoTarifa(regiao.id));
        bounds = bounds ? bounds.extend(polygon.getBounds()) : polygon.getBounds();
      });

      if (bounds) {
        map.fitBounds(bounds, {padding: [24, 24]});
      }
    }

    map.on('click', (event) => {
      pontosDesenho.push({
        lat: Number(event.latlng.lat.toFixed(7)),
        lng: Number(event.latlng.lng.toFixed(7))
      });
      atualizarDesenho();
    });

    document.getElementById('limparGeocerca').addEventListener('click', limparDesenho);
    document.getElementById('novaRegiao').addEventListener('click', novaRegiao);
    document.getElementById('formRegiaoTarifa').addEventListener('submit', (event) => {
      if (pontosDesenho.length < 3) {
        event.preventDefault();
        alert('Desenhe a geocerca com pelo menos 3 pontos no mapa.');
        return;
      }
      if (!el.economica_ativo.checked && !el.plus_ativo.checked && !el.pro_ativo.checked) {
        event.preventDefault();
        alert('Ative pelo menos uma categoria nessa regiao.');
      }
    });

    preencherFormulario(null);
    desenharRegioesExistentes();
    atualizarDesenho();
  </script>
</body>
</html>
