<?php
require_once __DIR__ . '/../includes/header.php';

$aluno_id = intval($_GET['aluno_id'] ?? 0);
$msg = '';

$aluno_selecionado = null;
if ($aluno_id > 0) {
    $stmt = $pdo->prepare("SELECT * FROM alunos WHERE id = :id");
    $stmt->execute(['id' => $aluno_id]);
    $aluno_selecionado = $stmt->fetch();
}

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $aluno_ids = $_POST['aluno_ids'] ?? [];
    $mes_inicio = intval($_POST['mes_inicio'] ?? date('m'));
    $ano = intval($_POST['ano'] ?? date('Y'));
    $qtd_meses = intval($_POST['qtd_meses'] ?? 1);
    $descricao_base = trim($_POST['descricao'] ?? 'Mensalidade');

    $mn = ['','Jan','Fev','Mar','Abr','Mai','Jun','Jul','Ago','Set','Out','Nov','Dez'];
    $gerados = 0;

    foreach ($aluno_ids as $aid) {
        $aid = intval($aid);
        $stmt_a = $pdo->prepare("SELECT * FROM alunos WHERE id = :id");
        $stmt_a->execute(['id' => $aid]);
        $aluno = $stmt_a->fetch();
        if (!$aluno || !$aluno['valor_mensalidade']) continue;

        for ($i = 0; $i < $qtd_meses; $i++) {
            $mes_atual = $mes_inicio + $i;
            $ano_atual = $ano;
            while ($mes_atual > 12) { $mes_atual -= 12; $ano_atual++; }

            $dia_venc = min(intval($aluno['dia_vencimento'] ?: 10), 28);
            $data_venc = sprintf('%04d-%02d-%02d', $ano_atual, $mes_atual, $dia_venc);
            $desc = $descricao_base . ' ' . $mn[$mes_atual] . '/' . $ano_atual;

            $chk = $pdo->prepare("SELECT id FROM contas_receber WHERE aluno_id=:aid AND descricao=:desc AND data_vencimento=:dv");
            $chk->execute(['aid'=>$aid, 'desc'=>$desc, 'dv'=>$data_venc]);
            if ($chk->fetch()) continue;

            $ins = $pdo->prepare("INSERT INTO contas_receber (aluno_id, descricao, valor, data_vencimento, parcela, total_parcelas, status)
                                  VALUES (:aid, :desc, :val, :dv, :p, :tp, 'pendente')");
            $ins->execute(['aid'=>$aid, 'desc'=>$desc, 'val'=>$aluno['valor_mensalidade'], 'dv'=>$data_venc, 'p'=>$i+1, 'tp'=>$qtd_meses]);
            $gerados++;
        }
    }
    $msg = "{$gerados} parcela(s) gerada(s) com sucesso!";
}

$alunos = $pdo->query("SELECT id, nome, valor_mensalidade, dia_vencimento FROM alunos WHERE status='Ativo' AND valor_mensalidade > 0 ORDER BY nome")->fetchAll();
?>

<div class="page-header">
    <div>
        <h2>Gerar Financeiro</h2>
        <div class="subtitle">Gere mensalidades em lote para os alunos</div>
    </div>
    <a href="contas_receber.php" class="btn btn-secondary">Ver Contas a Receber</a>
</div>

<?php if ($msg): ?>
<div class="alerta alerta-sucesso"><?= sanitize($msg) ?></div>
<?php endif; ?>

<div class="card-premium">
<form method="POST">
<div class="grid-3 mb-3">
    <div class="form-group">
        <label>Descricao Base</label>
        <input name="descricao" value="Mensalidade" required>
    </div>
    <div class="form-group">
        <label>Mes Inicio</label>
        <select name="mes_inicio">
            <?php $nomes = ['','Janeiro','Fevereiro','Marco','Abril','Maio','Junho','Julho','Agosto','Setembro','Outubro','Novembro','Dezembro'];
            for ($m=1;$m<=12;$m++): ?>
            <option value="<?= $m ?>" <?= $m==date('m')?'selected':'' ?>><?= $nomes[$m] ?></option>
            <?php endfor; ?>
        </select>
    </div>
    <div class="form-group">
        <label>Ano</label>
        <select name="ano">
            <?php for ($a=date('Y')-1;$a<=date('Y')+1;$a++): ?>
            <option value="<?= $a ?>" <?= $a==date('Y')?'selected':'' ?>><?= $a ?></option>
            <?php endfor; ?>
        </select>
    </div>
</div>
<div class="form-group" style="max-width:250px;">
    <label>Quantidade de Meses</label>
    <select name="qtd_meses">
        <?php for ($q=1;$q<=12;$q++): ?>
        <option value="<?= $q ?>"><?= $q ?> mes(es)</option>
        <?php endfor; ?>
    </select>
</div>

<div class="card-title mb-2 mt-3">Selecione os Alunos</div>
<div class="table-responsive">
<table class="table-premium">
<thead>
<tr>
    <th style="width:40px;"><input type="checkbox" id="checkAll" onclick="document.querySelectorAll('input[name=\'aluno_ids[]\']').forEach(c=>c.checked=this.checked)"></th>
    <th>Nome</th>
    <th>Mensalidade</th>
    <th>Dia Vencimento</th>
</tr>
</thead>
<tbody>
<?php foreach ($alunos as $a): ?>
<tr>
    <td><input type="checkbox" name="aluno_ids[]" value="<?= $a['id'] ?>" <?= $aluno_selecionado && $aluno_selecionado['id']==$a['id'] ? 'checked' : '' ?>></td>
    <td><?= sanitize($a['nome']) ?></td>
    <td><?= moeda($a['valor_mensalidade']) ?></td>
    <td>Dia <?= intval($a['dia_vencimento'] ?: 10) ?></td>
</tr>
<?php endforeach; ?>
</tbody>
</table>
</div>

<div class="mt-3">
    <button type="submit" class="btn btn-success">Gerar Mensalidades</button>
</div>
</form>
</div>

<?php require_once __DIR__ . '/../includes/footer.php'; ?>
