Skip to content

marcosmultisite/TestY2php

Repository files navigation

🧵 Projeto Yii2 – Sistema de Produtos, Clientes e Pessoas

Teste Técnico – Solução Completa com Seeds, Login e Relacionamentos

Desenvolvido por Marcos R C Martins - marcosrcmartins@gmail.com

Bem-vindo ao projeto desenvolvido em Yii2 Basic Template, totalmente configurado, migrado e populado automaticamente por meio de seeders. Este projeto foi criado para demonstrar domínio do framework, boas práticas de arquitetura e organização de código.

✨ Novidades do Projeto

🔐 Autenticação via banco de dados

  • Login real baseado na tabela user
  • Usuário inicial criado pelos seeders
  • Hash de senha seguro gerado pelo Yii

Credenciais geradas automaticamente pelos seeders:

  • Usuário: admin
  • Senha: admin123

👨‍👩‍👧‍👦 Clientes e Pessoas Relacionadas

  • Seeder cria 200 clientes
  • Seeder cria 300 pessoas
  • Cada pessoa é vinculada automaticamente a um cliente
  • Tela que lista clientes + suas pessoas (Eager Loading)

⚡ Otimização + Cache

  • Cache aplicado ao carregamento de clientes
  • Invalidação automática quando clientes ou pessoas são alterados

🗃️ Estrutura do Banco (já existente)

As tabelas pertencem ao banco enviado e não são recriadas pelas migrations.

Tabelas existentes:

  • user
  • product_type
  • product
  • customer
  • person
  • customer_person

Tabelas populadas pelos seeders:

  • 10 tipos de produto (product_type)
  • 1 usuário admin (user)
  • 50 produtos (product)
  • 200 clientes (customer)
  • 300 pessoas com vínculos (person + customer_person)

🚀 Tecnologias Utilizadas

  • PHP 8+
  • Yii2 Framework (Basic)
  • MySQL / MariaDB
  • Bootstrap
  • FileCache

📥 Instalação e Execução

1️⃣ Clonar o repositório

git clone https://github.com/marcosmultisite/TestY2php.git

  • Acesse a pasta: cd TestY2php

  • Realize o download das bibliotecas do framework com o comando: composer install

3️⃣ Configurar o banco de dados

Neste caso o banco de dados Mysql deve estar instalado e funcional com o serviço disponível para uso. O arquivo DDL para geração do banco de dados está na pasta scriptdb/database-test.sql, que deve ser aplicado no banco de dados. Após aplicado, eerá criado um banco de dados chamado default_schema, primeiro tem que gerar esse banco de dados com tabelas sem registros, para o procedimento de migration.

Uma vez o banco de dados gerado, edite o arquivo config/db.php: Neste caso o arquivo pode não existir, mas basta criar um novo e preencher com a configuração do seu banco de dados Mysql alterando a configuração conforme abaixo:

return [
    'class' => 'yii\db\Connection',
    'dsn' => 'mysql:host=localhost;dbname=default_schema',
    'username' => 'usuario_do_banco',
    'password' => 'a_senha_se_tiver',
    'charset' => 'utf8',        
]

4️⃣ Executar Migrations (somente seeds)

php yii migrate --migrationPath=@app/migrations --interactive=0

5️⃣ Iniciar o servidor local

cd web/
php -S 0.0.0.0:9000

🔑 Login no Sistema

Acesse no seu browser http://<SEU.IP.LOCAL.ROUTER>:9000
Os dados de login são:
Usuário: admin
Senha: admin123

📄 Funcionalidades Disponíveis

🔐 Login

Autenticação via banco, hash de senha e auth_key.

🏠 Tela inicial

Acesso rápido para:

  • Criar Produto
  • Listar Produtos
  • Listar Clientes e Pessoas

🏭 Cadastro de Produtos

Campos:

  • Nome
  • Tipo (drop-down)
  • Preço
  • Descrição
  • Código gerado automaticamente

👨‍👩 Listagem de Clientes

Inclui:

  • Nome
  • Idade
  • Data de Nascimento
  • Pessoas vinculadas
  • Parentesco
  • Idade das pessoas

⚡ Cache Inteligente

  • Cache aplicado na listagem de clientes
  • Invalidação automática ao alterar clientes ou pessoas

📂 Estrutura do Projeto

controllers/
models/
views/
migrations/
config/
web/
runtime/
vendor/

🎉 Conclusão

Este projeto entrega 100% dos requisitos técnicos solicitados:

✔ Login funcional
✔ Módulo completo de produtos
✔ Códigos automáticos
✔ Relacionamento cliente–pessoa
✔ Migrations e Seeds
✔ Cache + invalidação
✔ Código limpo e organizado

About

Projeto teste para Yii2

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors