Skip to content

Feat: Pagination and CRUD enhancement - #17

Merged
lanamaiumy merged 6 commits into
developmentfrom
feature/crud-enhancement
Oct 26, 2025
Merged

Feat: Pagination and CRUD enhancement#17
lanamaiumy merged 6 commits into
developmentfrom
feature/crud-enhancement

Conversation

@lanamaiumy

Copy link
Copy Markdown
Collaborator

Este PR implementa a funcionalidade completa de paginação para o projetos e refatora o CRUD para seguir as boas práticas discutidas nos vídeos apresentados pelo professor Diego.

Implementação da Paginação
O ProjectsController agora calcula a página e o offset. Foi criado a classe Paginator reutilizável para cuidar da lógica e uma view _pages.phtml para renderizar os links.

  • lib/Paginator.php (novo)
  • app/views/layouts/_pages.phtml (novo)
  • app/Controllers/ProjectsController.php (modificado)
  • app/Models/Project.php (modificado)
  • app/views/projects/index.phtml (modificado)

Centralização da Autenticação
Toda a lógica duplicada de autenticação (currentUser, authenticated, adminOnly, e etc.) foi movida do ProjectsController para o BaseController, limpando o código.

  • app/Controllers/BaseController.php (modificado)
  • app/Controllers/ProjectsController.php (modificado)

Validação de Formulário
Os formulários de new e edit agora exibem corretamente as mensagens de erro do Model, aplicando as classes is-invalid do Bootstrap quando a validação falha.

  • app/views/projects/new.phtml (modificado)
  • app/views/projects/edit.phtml (modificado)

Padronização e Encapsulamento dos Models
O User.php foi refatorado para usar propriedades private e o mesmo sistema de validação (isValid, hasErrors) do Project.php.

  • app/Models/User.php (modificado)
  • app/Controllers/AuthenticationsController.php (modificado)
  • database/Populate/UsersPopulate.php (modificado)

Correção dos Testes
Os testes unitários foram corrigidos para passar no novo fluxo de autenticação (usando mockAdminUser) e validação. O TestCase agora limpa o ambiente ($_SESSION e Router) entre os testes.

  • tests/TestCase.php (modificado)
  • tests/Unit/Models/UserTest.php (modificado)
  • tests/Unit/Controllers/ProjectsControllerTest.php (modificado)
  • tests/Unit/Controllers/ControllerTestCase.php (modificado)

Melhorias Adicionais de Código Limpo e Boas Práticas

Além dessas mudanças principais, tivemos várias refatorações menores que foram feitas para alinhar o código com as aulas do professor, são elas:

  • Padronização dos Caminhos: O BaseController agora usa Constants::rootPath() para carregar as views, em vez de caminhos "hardcoded".

  • Tipagem Estrita de Parâmetros PDO: Garantimos o uso de PDO::PARAM_INT nos métodos dos models para aumentar a segurança e robustez das consultas.

  • Padronização da Sintaxe das Views: As views de layout agora usam a sintaxe if: e foreach: em vez de chaves {}.

  • Prevenção de XSS Simples: Adicionamos htmlspecialchars() nos campos de formulário para evitar que código malicioso seja re-renderizado na tela após uma falha de validação.

  • Correção de Bug no Layout: O BaseController agora garante que $this->currentUser() seja chamado antes de renderizar o layout, para que a variável esteja sempre disponível no menu superior.

  • Remoção de Código Morto/Duplicado: Removemos um bloco de $_SESSION['error'] (legado) da view de login e o método duplicado find() do User.php.

@lanamaiumy
lanamaiumy merged commit 015d631 into development Oct 26, 2025
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants