<?php
require '../../conexao/conexao.php';
//require '../sessao.php';
require '../../configuacoes.php';
require '../../conexao/acesso.php';

// Definir o título da página
$pageTitle = "Alterar Módulos"; // Buscar todos os módulos
$sql_modulos = "SELECT m.*, p.nome_pacote 
                FROM modulo m
                LEFT JOIN pacote p ON m.id_pacote = p.id
                ORDER BY p.nome_pacote, m.modulo";
$result_modulos = $connectionmysql->query($sql_modulos);

// Buscar pacotes ativos
$sql_pacotes = "SELECT id, nome_pacote FROM pacote WHERE status = 'Ativo'";
$result_pacotes = $connectionmysql->query($sql_pacotes);

// Guardar lista de pacotes para usar várias vezes
$pacotes = [];
while ($p = $result_pacotes->fetch_assoc()) {
	$pacotes[$p['id']] = $p['nome_pacote'];
}
?>

<!DOCTYPE html>
<html lang="pt-br">

<?php include('../header.php'); ?>

<body>
	<?php include('../menu.php'); ?>

	<div class="wrapper">
		<div class="container-fluid">
			<div class="card-box mt-3">
				<div class="row">
					<div class="col-6 text-left">
						<h4 class="page-title"><?php echo $pageTitle ?></h4>
					</div>
					<div class="col-6 text-right">
						<a href="javascript:void(0);" class="btn btn-light" onclick="goBack()">
							<i class="mdi mdi-keyboard-backspace"></i> Voltar
						</a>
					</div>
					<div class="col-12">
						<hr>
					</div>

					<div class="col-12">
						<form id="formModulos" method="post" action="processa_alteracao.php">
							<div class="table-responsive">
								<table id="minhatabela" class="table table-bordered table-striped align-middle">
									<thead class="text-center">
										<tr>
											<th>ID</th>
											<th>Pacote</th>
											<th>Módulo</th>
											<th>Caminho</th>
											<th>Descrição</th>
										</tr>
									</thead>
									<tbody>
										<?php while ($row = $result_modulos->fetch_assoc()): ?>
											<tr>
												<td>
													<input type="hidden" name="id_modulo[]" value="<?php echo htmlspecialchars($row['id_modulo']); ?>">
													<?php echo htmlspecialchars($row['id_modulo']); ?>
												</td>

												<td>
													<select name="id_pacote[]" class="form-control">
														<option value="">Selecione...</option>
														<?php foreach ($pacotes as $id => $nome): ?>
															<option value="<?php echo $id; ?>"
																<?php echo ($row['id_pacote'] == $id) ? 'selected' : ''; ?>>
																<?php echo htmlspecialchars($nome); ?>
															</option>
														<?php endforeach; ?>
													</select>
												</td>

												<td>
													<input type="text" name="modulo[]" class="form-control"
														value="<?php echo htmlspecialchars($row['modulo']); ?>">
												</td>

												<td>
													<input type="text" name="caminho[]" class="form-control"
														value="<?php echo htmlspecialchars($row['caminho']); ?>">
												</td>

												<td>
													<textarea name="descricao[]" class="form-control" rows="2"><?php echo htmlspecialchars($row['descricao']); ?></textarea>
												</td>
											</tr>
										<?php endwhile; ?>
									</tbody>
								</table>
							</div>

							<div class="text-right mt-3">
								<button type="submit" class="btn btn-primary">
									<i class="mdi mdi-content-save"></i> Salvar Alterações
								</button>
							</div>
						</form>
					</div>
				</div>
			</div>
		</div>
	</div>

	<?php include('../footer.php'); ?>
	<?php include('../mensagens_modais.php'); ?>

	<script src="../../../assets/js/vendor.min.js"></script>
	<script src="../../../assets/js/app.min.js"></script>
	<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
	<script src="https://cdn.datatables.net/1.11.3/js/jquery.dataTables.min.js"></script>
	<script src="https://cdn.datatables.net/1.11.3/js/dataTables.bootstrap5.min.js"></script>
	<link rel="stylesheet" href="https://cdn.datatables.net/1.11.3/css/dataTables.bootstrap5.min.css">

	<script>
		$(document).ready(function() {
			// Inicializa a DataTable
			var table = $('#minhatabela').DataTable({
				language: {
					url: "https://cdn.datatables.net/plug-ins/1.10.21/i18n/Portuguese-Brasil.json"
				},
				dom: '<"d-flex justify-content-between align-items-center mb-2"Bf>t<"datatable-footer d-flex justify-content-between align-items-center mt-2 w-100"<"footer-left"l><"footer-center"i><"footer-right"p>>',
				order: [
					[0, 'asc']
				]
			});

			// Ajusta estilo dos labels (após renderização do DataTables)
			setTimeout(function() {
				$("#minhatabela_filter label, #minhatabela_length label").css("font-size", "15px");
			}, 150);

			// Intercepta o envio do formulário
			$('#formModulos').on('submit', function(e) {
				var form = this;

				// Pega todos os inputs, selects e textareas de todas as páginas
				table.$('input, select, textarea').each(function() {
					// Se o elemento não está visível no DOM (em outra página da DataTable)
					if (!$.contains(document, this)) {
						// Clona o campo e adiciona como hidden no formulário antes do envio
						$(form).append(
							$('<input>')
							.attr('type', 'hidden')
							.attr('name', $(this).attr('name'))
							.val($(this).val())
						);
					}
				});

				// Pega o botão de submit para desativá-lo durante o salvamento (evita cliques duplos)
				var btnSubmit = form.find('button[type="submit"]');
				var btnTextOriginal = btnSubmit.html();
				btnSubmit.html('<i class="mdi mdi-spin mdi-loading"></i> Salvando...').prop('disabled', true);

				// Envio via AJAX
				$.ajax({
					url: form.attr('action'), // Vai para processa_alteracao.php
					type: 'POST',
					data: form.serialize(),
					dataType: 'json',
					success: function(response) {
						// Restaura o botão
						btnSubmit.html(btnTextOriginal).prop('disabled', false);

						if(response.status === 'sucesso') {
							// Aqui usamos um alert simples, mas você pode usar o SweetAlert2 se tiver no seu projeto!
							console.info(response.mensagem); 
						} else {
							console.warn("Atenção: " + response.mensagem);
						}
					},
					error: function() {
						// Restaura o botão
						btnSubmit.html(btnTextOriginal).prop('disabled', false);
						console.error("Ocorreu um erro de comunicação com o servidor.");
					}
				});
			});
		});
	</script>

	<script>
		function goBack() {
			window.history.back();
		}
	</script>
</body>

</html>