53 Commits

Author SHA1 Message Date
427a1180a1 Merge remote-tracking branch 'origin/develop-marcos_assuncao' into develop-bruno_matos 2026-05-21 21:30:00 -03:00
cd82694f38 Desafio loja virtual - parcelamento 2026-05-21 21:27:33 -03:00
8e1b359b9a Merge remote-tracking branch 'origin/develop-gabriel-henrique' into develop-bruno_matos 2026-05-21 21:16:37 -03:00
f339472e01 estrutura for 2026-05-21 21:16:14 -03:00
0838507437 Merge remote-tracking branch 'origin/develop-bruno_matos' into develop-gabriel-henrique 2026-05-21 21:14:37 -03:00
781602af93 Desafio for 2026-05-21 21:13:49 -03:00
26f6c9d63e estrutura de repeticao for 2026-05-21 21:12:13 -03:00
d56c600412 Propôe desafio for 2026-05-21 20:57:12 -03:00
56b9f63594 Merge remote-tracking branch 'origin/develop-marcos_assuncao' into develop-bruno_matos 2026-05-21 20:36:17 -03:00
bb613f4341 Estrutura de repetição for 2026-05-21 20:35:49 -03:00
6df3147138 Merge remote-tracking branch 'origin/develop-marcos_assuncao' into develop-bruno_matos 2026-05-21 20:35:25 -03:00
220741c303 Realizado desafio if-else 2026-05-21 20:30:21 -03:00
fb2845d616 Realizado desafio if-else 2026-05-21 20:29:47 -03:00
a67a58de6a Declaração de variáveis e Condicional if else 2026-05-21 19:53:09 -03:00
b367b06bb0 Declaração de variáveis e Condicional if-else 2026-05-21 19:53:05 -03:00
de65e31aea Merge branch 'develop' into develop-gabriel-henrique 2026-05-20 21:52:37 -03:00
7b91169b33 Merge branch 'develop-marcos_assuncao' into develop 2026-05-20 21:33:20 -03:00
52d7108545 Cria lista para merge 2026-05-20 21:32:21 -03:00
1e42a35fc1 Altera o texto de exemplo 2026-05-20 21:21:32 -03:00
e33f1a6df9 Altera o texto de exemplo 2026-05-20 21:21:12 -03:00
3a92010083 Merge pull request 'Corrige ortografia' (#35) from develop-marcos_assuncao into develop
Reviewed-on: #35
2026-05-18 23:59:48 +00:00
f86b68e4ed Corrige ortografia 2026-05-18 20:59:12 -03:00
2f2eb352bc Merge pull request 'Testa Desploy em develop e main' (#33) from develop-marcos_assuncao into develop
Reviewed-on: #33
2026-05-18 23:57:21 +00:00
839a02fd6a Testa Desploy em develop e main 2026-05-18 20:57:08 -03:00
5f3cb7e176 Merge branch 'develop-marcos_assuncao' into develop 2026-05-18 20:54:52 -03:00
05829c6a46 Realiza teste de deploy das branches develop e main 2026-05-18 20:50:40 -03:00
304cfc8663 Adiciona tag do Google Analytics 2026-05-15 18:15:46 +00:00
31865ce5d9 Testa evento de push com commit 2026-05-15 17:28:34 +00:00
05d8dc2235 Testa evento de push 2026-05-15 17:22:22 +00:00
0e17a24c13 Cria arquivo de teste para demostração aos alunos da turma de 2024 2026-05-14 21:42:48 -03:00
b4e6126252 Merge branch 'develop' into develop-bruno_matos 2026-05-14 20:38:38 -03:00
32cd6c4680 altera o texto para bruno 2026-05-14 20:36:56 -03:00
40a958f6db Merge branch 'develop-marcos_assuncao' into develop 2026-05-14 20:15:06 -03:00
d2b15ee500 Altera o texto para Marcos 2026-05-14 20:12:10 -03:00
d50e3eb070 Atualizar .gitignore 2026-05-12 23:19:16 +00:00
9d0f175f00 Excluir .env 2026-05-12 23:18:46 +00:00
f5ad50dac5 Merge pull request 'Atualiza env.example' (#24) from main into develop
Reviewed-on: #24
2026-05-12 23:17:11 +00:00
398efda11e Atualizar env.example 2026-05-12 23:16:27 +00:00
6e0f6b2753 Merge pull request 'Cria arquivo env.example' (#23) from develop into main
Reviewed-on: #23
2026-05-12 22:50:49 +00:00
2afdbe8f50 Cria arquivo env.example 2026-05-12 22:28:49 +00:00
05124a0092 Merge branch 'develop' 2026-05-11 20:59:42 -03:00
2e9fbe5361 Configura .htaccess para página não encontrada 2026-05-11 20:59:04 -03:00
4467b3ec30 Cria estrutura de pastas 2026-05-11 20:29:29 -03:00
b5c4f500bf Merge pull request 'Criado exemplo bootstrap' (#21) from develop into main
Reviewed-on: #21
2026-05-11 23:15:25 +00:00
f3ba84eb4b Criado exemplo bootstrap 2026-05-11 20:10:36 -03:00
3f3ea89dc4 Merge pull request 'develop' (#20) from develop into main
Reviewed-on: #20
2026-05-07 23:52:02 +00:00
98e544176c Merge pull request 'Altera o texto de teste' (#19) from develop-gabriel-henrique into develop
Reviewed-on: #19
2026-05-07 23:51:02 +00:00
886e27cb41 Altera o texto de teste 2026-05-07 20:44:14 -03:00
55ad55cf2e Atualiza o arquivo README.md 2026-05-05 20:49:15 -03:00
f7edf23937 Adiciona arquivo .env ao projeto 2026-05-05 20:47:11 -03:00
6362eb8a47 Adiciona arquivo CONTRIBUTING.md que instrui como fazer commits usando as boas práticas da comunidade 2026-05-05 20:45:57 -03:00
1479ff9d20 Criado arquivo .gitignore 2026-05-05 20:31:14 -03:00
4186a990e3 Criado arquivo reademe.md 2026-05-05 20:30:54 -03:00
20 changed files with 465 additions and 3 deletions

2
.gitignore vendored Normal file
View File

@@ -0,0 +1,2 @@
.env
.vscode/*

View File

@@ -1,9 +1,19 @@
RewriteEngine On RewriteEngine On
# Impede que acessem pastas confidenciais (opcional, dependendo da estrutura) # 1. Define a página de erro 404 personalizada na nova pasta
ErrorDocument 404 /public/notfound.php
# 2. Protege pastas de sistema, mas permite acesso à pasta public
# Bloqueia src, config e vendor
RewriteRule ^(src|config|vendor)/ - [F,L] RewriteRule ^(src|config|vendor)/ - [F,L]
# Se o arquivo ou diretório não existir fisicamente, manda para o index.php # 3. Regra do Roteador (Front Controller)
# Se o arquivo ou diretório solicitado não existir fisicamente...
RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-d
# ...E não for a própria página de erro (para evitar loops)
RewriteCond %{REQUEST_URI} !^/public/notfound.php
# Envia a requisição para o index.php
RewriteRule ^(.*)$ index.php [QSA,L] RewriteRule ^(.*)$ index.php [QSA,L]

48
.vscode/launch.json vendored Normal file
View File

@@ -0,0 +1,48 @@
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "Listen for Xdebug",
"type": "php",
"request": "launch",
"port": 3000
},
{
"name": "Launch currently open script",
"type": "php",
"request": "launch",
"program": "${file}",
"cwd": "${fileDirname}",
"port": 0,
"runtimeArgs": [
"-dxdebug.start_with_request=yes"
],
"env": {
"XDEBUG_MODE": "debug,develop",
"XDEBUG_CONFIG": "client_port=${port}"
}
},
{
"name": "Launch Built-in web server",
"type": "php",
"request": "launch",
"runtimeArgs": [
"-dxdebug.mode=debug",
"-dxdebug.start_with_request=yes",
"-S",
"localhost:0"
],
"program": "",
"cwd": "${workspaceRoot}",
"port": 9003,
"serverReadyAction": {
"pattern": "Development Server \\(http://localhost:([0-9]+)\\) started",
"uriFormat": "http://localhost:%s",
"action": "openExternally"
}
}
]
}

76
CONTRIBUTING.md Normal file
View File

@@ -0,0 +1,76 @@
# 🚀 Guia de Desenvolvimento - Sistema de Controle de Faltas
Bem-vindos à equipe! Este projeto une nossas duas turmas em uma simulação real de mercado. Como desenvolvedores, vocês serão responsáveis por construir uma ferramenta robusta utilizando **PHP Orientado a Objetos** e **Bootstrap**.
Para que nossa colaboração funcione e o sistema rode perfeitamente no **EasyPanel**, todos devemos seguir este manual.
---
## 🌳 1. Nossas Branches (Onde o código mora)
Para manter a organização, o repositório é dividido em níveis de segurança:
* **`main` (Produção):** É o código que o cliente vê. **Ninguém** faz commit direto aqui. Apenas o Gerente move o código para cá quando tudo está testado.
* **`develop` (Integração):** É onde o trabalho de todos se encontra. Vocês abrirão seus pedidos de união (Pull Requests) para esta branch.
* **`feature/seu-nome-tarefa` (Criação):** Toda nova tarefa deve ser feita em uma branch própria criada a partir da `develop`.
---
## 💬 2. Padrão de Commits (Como você comunica seu progresso)
Mensagens de commit ruins como "ajuste" ou "testando" não serão aceitas. Usaremos o padrão **Conventional Commits**. Escreva sempre no **imperativo** (ex: "Adiciona", e não "Adicionei").
### Tipos que vocês mais usarão:
| Tipo | Quando usar? | Exemplo |
| :--- | :--- | :--- |
| **`feat`** | Quando você cria algo novo. | `feat: adiciona o formulário de login` |
| **`fix`** | Quando você resolve um erro. | `fix: corrige erro de conexão com o banco` |
| **`docs`** | Quando você altera apenas o README ou manuais. | `docs: detalha o funcionamento do banco` |
| **`style`** | Alteração visual com Bootstrap (CSS/Layout). | `style: centraliza os botões do dashboard` |
| **`refactor`** | Quando você melhora um código PHP sem mudar o que ele faz. | `refactor: simplifica o método de busca` |
---
## 🛠 3. O Fluxo de Trabalho (Passo a Passo)
Sempre que você for começar uma tarefa, siga estes passos:
1. **Atualize seu computador:**
```bash
git checkout develop
git pull origin develop
```
2. **Crie sua branch de trabalho:**
```bash
git checkout -b feature/nome-da-sua-tarefa
```
3. **Trabalhe no código:**
Faça commits pequenos e frequentes seguindo os padrões acima.
4. **Suba para o Gitea:**
```bash
git push origin feature/nome-da-sua-tarefa
```
5. **Peça a Revisão (Pull Request):**
No Gitea, abra um Pull Request para a branch `develop`. **Eu (Gerente)** revisarei seu código e, se estiver tudo certo, farei a aprovação.
---
## 📂 4. Arquitetura do Projeto (PHP OOP)
Não utilizaremos frameworks, por isso a organização das pastas é vital para o funcionamento do nosso container Docker:
* **`/config`**: Arquivos de conexão e variáveis de ambiente.
* **`/public`**: É a única pasta visível para o navegador. Contém o `index.php` e arquivos CSS/JS.
* **`/src/Controller`**: Onde ficará a lógica que decide o que mostrar.
* **`/src/Model`**: Onde as classes PHP conversam com o Banco de Dados (Use PDO!).
* **`/src/View`**: Onde o HTML com Bootstrap será escrito.
---
## ⚠️ 5. Regras de Ouro
* **Segurança:** Nunca coloque senhas no código. Se precisar de uma credencial, peça ao Gerente para configurar no EasyPanel.
* **Qualidade:** Antes de abrir um Pull Request, verifique se não esqueceu nenhum `var_dump` ou comentário desnecessário.
* **Colaboração:** Ajude seus colegas. Se o código dele estiver difícil de entender, comente no Pull Request!
---
**Bom trabalho a todos! Vamos construir um sistema incrível.**

7
env.example Normal file
View File

@@ -0,0 +1,7 @@
# Banco de Dados:
DB_HOST_INTERNAL=enredero_interno_do_servidor_db
DB_HOST_EXTERNAL=enredero_interno_do_servidor_db
DB_PORT=porta
DB_NAME=nome_do_banco
DB_USER=_usuario_do_banco
DB_PASS=senha_do_banco

View File

@@ -0,0 +1,3 @@
<?php
echo ""
?>

View File

@@ -0,0 +1,12 @@
<h1>Desafio for</h1>
Missão: A NASA contratou você para criar o painel de
lançamento do novo foguete Artemis!
Você deve criar um programa em PHP que faça uma
contagem regressiva de 10 até 1 usando o laço for.
Cada número deve ser impresso na tela usando a tag HTML <h3>.
Regra de Ouro (O Desafio Lógico):
Quando a contagem chegar nos 3 últimos segundos
(3, 2 e 1), o texto deve ficar em destaque
(por exemplo, na cor vermelha) para alertar a
tripulação. Quando a contagem terminar, o sistema
deve imprimir uma mensagem de "FOGUETE LANÇADO!" em um <h1>.

View File

@@ -0,0 +1,7 @@
<h1>Desafio if-else</h1>
<p>Escreva um programa que receba a quantidade de faltas de
um aluno e informe se ele foi "Aprovado" ou
"Reprovado por frequência".
Cada disciplina tem 4 aulas e o aluno precisa de
pelo menos 50% de presença para aprovação.
</p>

View File

@@ -0,0 +1,16 @@
Missão: Você foi contratado para programar a página de
pagamentos de uma loja virtual!
A loja permite dividir as compras em até 12 vezes.
Você deve criar um programa em PHP que use o laço for para
imprimir uma lista na tela mostrando as opções de parcelamento
de 1x até 12x.
A Regra de Negócio:
Se o número de parcelas for de 1x até 5x,
a loja não cobra juros. Imprima o texto "Sem Juros"
na cor verde ao lado do número.
Se o número de parcelas for de 6x até 12x, a loja cobra juros.
Imprima o texto "Com Juros" na cor vermelha ao lado do número.

View File

@@ -0,0 +1,10 @@
<?php
for ($i = 10; $i >= 1; $i--) {
echo "<h3> $i</h3>";
}
<<<<<<< HEAD
?>
=======
echo $i;
?>
>>>>>>> origin/develop-marcos_assuncao

View File

@@ -0,0 +1,8 @@
<H1>Título HTML</H1>
<?php
if (1 > 2) {
echo "1 é maior do que 2";
} else {
echo "1 não é maior do que 2";
}
?>

View File

@@ -0,0 +1,31 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Título da página</title>
</head>
<body>
<h1>Aula 04</h1>
<p>Esse texto está no html</p>
<?php
//Exemplo inicial de variável e echo
$resultado = 0;
$resultado = 1 + 1;
echo "<p>Esse texto está no PHP</p>";
echo "<p>O resultado é $resultado</p>";
echo "<h1>Aprovação (if-else)</h1>";
$nota = 7; // Declaração de variável
if ($nota > 6) { // Verifica se nota é maior que 6
// Mostra mensagem de aprovação caso
//a nota seja maior que 6
echo "<p>Aluno Aprovado com nota $nota</p>";
}else{
// Mostra mensagem de reprovação caso
// caso a nota seja menor que ou igual a 6
echo "<p>A nota $nota do aluno não
foi suficiente. Aluno Reprovado!</p>";
}
?>
</body>
</html>

77
exemplos/bootstrap.php Normal file
View File

@@ -0,0 +1,77 @@
<!DOCTYPE html>
<html lang="pt-br">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Protótipo de Interface - Reserva de Hotéis</title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.8/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-sRIl4kxILFvY47J16cr9ZwB07vP4J8+LH7qKQnuqkuIAvNWLzeN8tE5YBujZqJLB" crossorigin="anonymous">
</head>
<body class="bg-light">
<nav class="navbar navbar-expand-lg navbar-dark bg-primary shadow-sm">
<div class="container">
<a class="navbar-brand" href="#">HotelReserve</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarNav">
<ul class="navbar-nav ms-auto">
<li class="nav-item"><a class="nav-link active" href="#">Busca</a></li>
<li class="nav-item"><a class="nav-link" href="#">Minhas Reservas</a></li>
<li class="nav-item"><a class="nav-link" href="#">Perfil</a></li>
</ul>
</div>
</div>
</nav>
<main class="container my-5">
<section class="card border-0 shadow-sm p-4 mb-4">
<h2 class="h4 mb-3">Encontre sua próxima estadia</h2>
<form class="row g-3">
<div class="col-md-4">
<label class="form-label">Destino</label>
<input type="text" class="form-control" placeholder="Cidade ou Hotel">
</div>
<div class="col-md-3">
<label class="form-label">Check-in</label>
<input type="date" class="form-control">
</div>
<div class="col-md-3">
<label class="form-label">Hóspedes</label>
<select class="form-select">
<option>1 Pessoa</option>
<option>2 Pessoas</option>
<option>Família</option>
</select>
</div>
<div class="col-md-2 d-flex align-items-end">
<button type="submit" class="btn btn-warning w-100 fw-bold">Pesquisar</button>
</div>
</form>
</section>
<section class="row">
<div class="col-md-6 col-lg-4">
<div class="card h-100 shadow-sm border-0">
<img src="https://via.placeholder.com/400x250" class="card-img-top" alt="Hotel Exemplo">
<div class="card-body">
<h5 class="card-title">Resort Vista Mar</h5>
<p class="card-text text-muted">A apenas 50 metros da praia, com café da manhã incluso.</p>
<div class="d-flex justify-content-between align-items-center">
<span class="fw-bold text-success">R$ 450,00 / dia</span>
<a href="#" class="btn btn-outline-primary btn-sm">Ver Detalhes</a>
</div>
</div>
</div>
</div>
</section>
</main>
<footer class="text-center py-4 text-muted">
<p>&copy; 2026 - Atividade de ADS - Prototipação de Interfaces</p>
</footer>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.8/dist/js/bootstrap.bundle.min.js" integrity="sha384-FKyoEForCGlyvwx9Hj09JcYn3nv7wiPVlz7YYwJrWVcXK/BmnVDxM+D2scQbITxI" crossorigin="anonymous"></script>
</body>
</html>

View File

@@ -0,0 +1,33 @@
<!DOCTYPE html>
<html lang="pt-BR">
<head>
<meta charset="UTF-8">
<title>Contagem Regressiva</title>
<style>
.alerta {
color: red;
font-weight: bold;
}
</style>
</head>
<body>
<?php
for ($i = 10; $i >= 1; $i--) {
// Destacar os 3 últimos segundos
if ($i <= 3) {
echo "<h3 class='alerta'>$i</h3>";
} else {
echo "<h3>$i</h3>";
}
}
// Mensagem final
echo "<h1>FOGUETE LANÇADO! </h1>";
?>
</body>
</html>

View File

@@ -0,0 +1,31 @@
<?php
// Quantidade total de aulas
$totalAulas = 4;
// Quantidade mínima de presença para aprovação
$minimoPresencas = 2;
// Caso 1: Aluno aprovado
$presencasAluno1 = 3;
echo "<p>Aluno 1:<p>";
if ($presencasAluno1 >= $minimoPresencas) {
echo "<p>Sua frequência é suficiente. Aprovado!<p>";
} else {
echo "<p>Sua frequência é insuficiente. Reprovado!<p>";
}
//Caso 2: Aluno Reprovado
$presencasAluno2 = 2;
echo "<p>Aluno 2:<p>";
if ($presencasAluno2 >= $minimoPresencas) {
echo "<p>Sua frequência é suficiente. Aprovado!<p>";
} else {
echo "<p>Sua frequência é insuficiente. Reprovado!<p>";
}
?>

View File

@@ -0,0 +1,5 @@
<?php
for ($i = 1; $i <= 5; $i++){
echo "teste $i<br>";
}
?>

View File

@@ -0,0 +1,31 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<h1>Aula 04<h1>
<p>Esse texto está no html</<p>
<?php
//Exemplo inicial de variável e echo
$resultado = 0;
$resultado = 1 + 1;
echo "<p> Esse texto está no PHP</p>";
echo "<p>O resultado é $resultado</p>";
echo "<h1>Aprovação (if-else)<h1>";
$nota = 5.5; //Declaração de variável
if ($nota > 6) { // Verifica se nota é maior que 6
// Mostra mensagem de aprovação caso
// a nota seja maior que 6
echo "<p> Aluno aprovado com nota $nota<p>";
}else{
// Mostra mensagem de reprovação caso
// a nota seja menor que ou igual a 6
echo "<p> A nota $nota do aluno não foi o suficiente. Aluno reprovado <p>";
}
?>
</body>
</html>

View File

@@ -1 +1,14 @@
<?php echo "Teste de Commit"; <?php echo "Marcos Assunção";?>
<br> 1
<br> 2
<br> 3
<br> 4
<br> 5
<br> 6
<br> 7
<br> 8
<br> 9
<br> 10
<br> 11
<br> 12
<br> 13

1
public/notfound.php Normal file
View File

@@ -0,0 +1 @@
Não encontrado

41
readme.md Normal file
View File

@@ -0,0 +1,41 @@
# 📦 Sistema de Controle de Faltas de Mercadorias
Projeto prático desenvolvido em colaboração pelas turmas de TI da **Faculdade Anhanguera**. O objetivo deste sistema é permitir que uma loja gerencie e registre a falta de produtos em seu estoque ou no recebimento de mercadorias, auxiliando o setor de compras na tomada de decisões.
---
## 🛠 Tecnologias Utilizadas
Para este projeto, adotamos uma stack que equilibra fundamentos de programação e práticas modernas de infraestrutura:
* **Backend:** PHP 8.2 (Orientação a Objetos, sem frameworks).
* **Frontend:** Bootstrap 5 (Interface responsiva).
* **Banco de Dados:** MySQL.
* **Infraestrutura:** Docker & EasyPanel.
* **Versionamento e Gestão:** Gitea.
---
## 📐 Arquitetura do Projeto
O sistema segue o padrão **MVC (Model-View-Controller)** simplificado para garantir a separação de responsabilidades e facilitar o trabalho em equipe:
- **Models:** Responsáveis pela lógica de dados e comunicação com o banco via PDO.
- **Views:** Arquivos PHP/HTML que utilizam Bootstrap para a interface com o usuário.
- **Controllers:** Gerenciam as requisições e conectam o Model à View.
---
## 📂 Estrutura de Pastas
```text
/
├── config/ # Configurações de banco de dados e constantes
├── public/ # Ponto de entrada (index.php), CSS, JS e imagens
├── src/
│ ├── Controller/ # Lógica de controle do sistema
│ ├── Model/ # Classes de entidade e manipulação de dados
│ └── View/ # Templates de exibição (Bootstrap)
├── Dockerfile # Configuração para o container no EasyPanel
└── README.md # Documentação principal