<?php
/**
 * modules/admin/plans.php — gestión de planes (listado · alta · edición · borrar).
 */
if (!defined('IN_APP')) { die('Acceso denegado'); }

$admin = new Admin($mysqli, $_config);

$id       = (int)$_id;
$creating = !empty($_GET['new']);
$editing  = !$creating && $id > 0;
$error    = '';

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    if (isset($_POST['create_plan'])) {
        if ($admin->createPlan($_POST['name'] ?? '', $_POST['monthly_usd'] ?? 0)) App::redirect('/admin/plans/');
        $error = $admin->_error; $creating = true;
    } elseif (isset($_POST['update_plan']) && $id > 0) {
        if ($admin->updatePlan($id, $_POST['name'] ?? '', $_POST['monthly_usd'] ?? 0)) App::redirect('/admin/plans/' . $id . '/');
        $error = $admin->_error; $editing = true;
    } elseif (!empty($_POST['delete_plan']) && $id > 0) {
        if ($admin->deletePlan($id)) App::redirect('/admin/plans/');
        $error = $admin->_error; $editing = true;
    }
}

$page_title = App::t('plan.title');

$form = function ($action, $btnKey, $btnName, $cur = array()) use ($error) {
    ?>
    <form method="post" action="<?= App::e($action) ?>" class="space-y-4 px-4 py-4">
      <?php if ($error): ?><div class="rounded-lg border border-danger/30 bg-danger/10 px-4 py-3 text-sm text-danger"><?= App::e($error) ?></div><?php endif; ?>
      <div class="grid gap-4 sm:grid-cols-2">
        <div><label class="mb-1 block text-sm font-medium"><?= App::e(App::t('plan.name')) ?></label>
          <input type="text" name="name" required value="<?= App::e($cur['name'] ?? '') ?>" class="w-full rounded-lg border border-gray-200 bg-white px-3 py-2 text-sm dark:border-ink-700 dark:bg-ink-800"></div>
        <div><label class="mb-1 block text-sm font-medium"><?= App::e(App::t('plan.monthly')) ?></label>
          <input type="number" name="monthly_usd" step="0.01" min="0" required value="<?= App::e($cur['monthly_usd'] ?? '0') ?>" class="w-full rounded-lg border border-gray-200 bg-white px-3 py-2 text-sm dark:border-ink-700 dark:bg-ink-800"></div>
      </div>
      <button name="<?= App::e($btnName) ?>" value="1" class="rounded-lg bg-primary-600 px-4 py-2 text-sm font-medium text-white hover:bg-primary-700"><?= App::e(App::t($btnKey)) ?></button>
    </form>
    <?php
};

/* ---------- ALTA ---------- */
if ($creating):
    $page_title   = App::t('plan.new');
    $page_actions = '<a href="/admin/plans/" class="rounded-lg border border-gray-200 px-3 py-1.5 text-sm hover:bg-gray-50 dark:border-ink-700 dark:hover:bg-ink-800">' . App::e(App::t('common.back')) . '</a>';
?>
<div class="px-4 py-6">
  <section class="max-w-2xl rounded-lg border border-gray-200 bg-white dark:border-ink-700 dark:bg-ink-900">
    <div class="border-b border-gray-200 px-4 py-3 dark:border-ink-700"><h2 class="font-medium"><?= App::e(App::t('plan.new')) ?></h2></div>
    <?php $form('/admin/plans/?new=1', 'plan.add', 'create_plan'); ?>
  </section>
</div>

<?php
/* ---------- EDICIÓN ---------- */
elseif ($editing):
    $p = $admin->getPlan($id);
    if (!$p) App::redirect('/admin/plans/');
    $page_title   = App::e($p['name']);
    $page_actions = '<a href="/admin/plans/" class="rounded-lg border border-gray-200 px-3 py-1.5 text-sm hover:bg-gray-50 dark:border-ink-700 dark:hover:bg-ink-800">' . App::e(App::t('common.back')) . '</a>';
?>
<div class="space-y-6 px-4 py-6">
  <section class="max-w-2xl rounded-lg border border-gray-200 bg-white dark:border-ink-700 dark:bg-ink-900">
    <div class="border-b border-gray-200 px-4 py-3 dark:border-ink-700"><h2 class="font-medium"><?= App::e(App::t('plan.edit')) ?></h2></div>
    <?php $form('/admin/plans/' . $id . '/', 'common.save', 'update_plan', $p); ?>
  </section>

  <section class="max-w-2xl rounded-lg border border-gray-200 bg-white dark:border-ink-700 dark:bg-ink-900">
    <div class="border-b border-gray-200 px-4 py-3 dark:border-ink-700"><h2 class="font-medium"><?= App::e(App::t('user.danger')) ?></h2></div>
    <div class="px-4 py-4">
      <form method="post" action="/admin/plans/<?= $id ?>/" onsubmit="return confirm('<?= App::e(App::t('plan.delete_confirm')) ?>');">
        <button name="delete_plan" value="1" class="rounded-lg border border-danger/30 px-3 py-1.5 text-sm text-danger hover:bg-danger/10"><?= App::e(App::t('plan.delete')) ?></button>
        <span class="ml-2 text-xs text-gray-dark dark:text-gray-light"><?= App::e(App::t('plan.delete_hint')) ?></span>
      </form>
    </div>
  </section>
</div>

<?php
/* ---------- LISTADO ---------- */
else:
    $list = $admin->listPlans();
    $page_actions = '<a href="/admin/plans/?new=1" class="rounded-lg bg-primary-600 px-3 py-1.5 text-sm font-medium text-white hover:bg-primary-700">' . App::e(App::t('plan.add')) . '</a>';
?>
<div class="px-4 py-6">
  <div class="overflow-hidden rounded-lg border border-gray-200 bg-white dark:border-ink-700 dark:bg-ink-900">
    <table class="w-full text-sm">
      <thead>
        <tr class="border-b border-gray-200 bg-gray-50 text-left text-xs uppercase tracking-wide text-gray-dark dark:border-ink-700 dark:bg-ink-800 dark:text-gray-light">
          <th class="px-4 py-2 font-semibold"><?= App::e(App::t('plan.name')) ?></th>
          <th class="px-4 py-2 font-semibold"><?= App::e(App::t('plan.monthly')) ?></th>
          <th class="px-4 py-2 font-semibold"><?= App::e(App::t('plan.users')) ?></th>
        </tr>
        <tr class="border-b border-gray-200 bg-gray-50 dark:border-ink-700 dark:bg-ink-800">
          <th class="px-3 py-2"><input type="search" data-col-filter="name" data-filter-target="plans" placeholder="<?= App::e(App::t('admin.filter')) ?>" class="w-full rounded-md border border-gray-200 bg-white px-2 py-1 text-xs font-normal outline-none focus:border-primary-600 dark:border-ink-700 dark:bg-ink-900"></th>
          <th class="px-3 py-2"></th>
          <th class="px-3 py-2"></th>
        </tr>
      </thead>
      <tbody class="divide-y divide-gray-200 dark:divide-ink-700" data-filter-list="plans">
        <?php if (!$list): ?>
          <tr><td colspan="3" class="px-4 py-4 text-gray-dark dark:text-gray-light"><?= App::e(App::t('plan.empty')) ?></td></tr>
        <?php else: foreach ($list as $p): ?>
          <tr data-href="/admin/plans/<?= (int)$p['id_plan'] ?>/" data-filter-row data-col-name="<?= App::e(strtolower($p['name'])) ?>" class="cursor-pointer hover:bg-gray-50 dark:hover:bg-ink-800/50">
            <td class="px-4 py-2 font-medium"><?= App::e($p['name']) ?></td>
            <td class="px-4 py-2">$<?= App::e(number_format((float)$p['monthly_usd'], 2)) ?>/mes</td>
            <td class="px-4 py-2 text-gray-dark dark:text-gray-light"><?= (int)$p['users'] ?></td>
          </tr>
        <?php endforeach; endif; ?>
      </tbody>
    </table>
  </div>
</div>
<?php endif; ?>
