Documentacao tecnica principal do sistema.
- Tela de login (
login.php) para entrada no painel interno. - Tela de registro (
registro.php) para criacao de usuarios administradores. - Validacao de credenciais usando tabela
usuarios. - Controle de sessao para impedir acesso nao autenticado ao painel.
- Tela de logout (
logout.php) para encerramento da sessao.
- Tela
cliente_busca.phppara busca de imoveis. - Tela
cliente_resultados.phppara exibicao dos imoveis encontrados. - Filtros publicos por finalidade, tipo e valor maximo.
- Todas as acoes principais passam por
index.php. - Rota baseada em dois parametros:
entidade(modulo)acao(operacao)
- Operacoes padrao implementadas por entidade:
- listar
- novo
- editar
- salvar
- excluir
- Proprietarios.
- Corretores.
- Clientes.
- Imoveis.
- Visitas.
- Contratos.
- Upload de planta baixa no modulo de imoveis.
- Bloqueio de novo contrato para imovel indisponivel.
- Atualizacao automatica do status do imovel apos salvar contrato.
- Calculo automatico de periodo da visita (manha/tarde/noite) com base no horario informado.
- Persistencia com PDO e SQLite (
database.sqlite). - Uso de chaves estrangeiras para garantir relacionamentos validos.
- Uso de restricoes
CHECKno schema para valores de dominio.
- Arquivo:
login.php - Objetivo: autenticar usuario para liberar acesso ao painel interno.
- Entradas: e-mail e senha.
- Saida esperada: sessao ativa e redirecionamento para
index.php.
- Arquivo:
registro.php - Objetivo: cadastrar novo usuario administrador na tabela
usuarios. - Entradas: nome, e-mail, senha, confirmar senha.
- Validacoes implementadas:
- campos obrigatorios
- formato valido de e-mail
- senha igual a confirmacao
- e-mail nao duplicado
- Saida esperada: mensagem de sucesso e orientacao para login.
- Arquivo:
index.php(estado home, quandoentidade=home). - Objetivo: ser a pagina central de navegacao do sistema.
- Conteudo:
- menu de modulos
- atalhos de acao
- indicadores gerais (totais por entidade)
- Arquivos:
cliente_busca.phpecliente_resultados.php - Objetivo: permitir busca de imoveis sem login.
- Entradas: filtros de finalidade, tipo e valor maximo.
- Saida esperada: listagem de imoveis disponiveis conforme filtros.
- Arquivo:
view/proprietario/form.php - Campos: nome, cpf, telefone, email.
- Objetivo: criar/editar proprietarios.
- Arquivo:
view/corretor/form.php - Campos: nome, creci, telefone, email.
- Objetivo: criar/editar corretores.
- Arquivo:
view/cliente/form.php - Campos: nome, cpf, telefone, email, interesse.
- Objetivo: criar/editar clientes.
- Arquivo:
view/imovel/form.php - Campos: titulo, tipo, endereco, metros_quadrados, valor, finalidade, status, planta_baixa, id_proprietario.
- Objetivo: criar/editar imoveis.
- Arquivo:
view/visita/form.php - Campos: id_imovel, nome, email, celular, dia_semana, horario_preferencia.
- Objetivo: agendar/editar visitas.
- Arquivo:
view/contrato/form.php - Campos: id_imovel, id_cliente, id_corretor, tipo, valor, data_inicio, data_fim.
- Objetivo: criar/editar contratos.
[Navegador]
|
v
[login.php / registro.php]
|
+--> [index.php / Front Controller]
|
v
[Controller da Entidade]
|
v
[Model]
|
v
[DAO] ---- PDO ----> [SQLite]
|
v
[View]
Fluxo padrao:
- Usuario interage com tela (formulario/listagem).
- Requisicao chega no
index.phpcomentidadeeacao. - Controller organiza e valida entrada.
- Model representa dados no dominio.
- DAO persiste/consulta no banco.
- View renderiza resposta.
controller/ImovelController.php: CRUD de imoveis, upload de planta, carga de proprietarios.controller/ProprietarioController.php: CRUD de proprietarios.controller/CorretorController.php: CRUD de corretores.controller/ClienteController.php: CRUD de clientes.controller/VisitaController.php: CRUD de visitas e calculo de periodo por horario.controller/ContratoController.php: CRUD de contratos, validacao de disponibilidade e atualizacao do status do imovel.
Arquivos:
dao/ImovelDAO.phpdao/ProprietarioDAO.phpdao/CorretorDAO.phpdao/ClienteDAO.phpdao/VisitaDAO.phpdao/ContratoDAO.php
Responsabilidades:
listar(),buscarPorId($id),salvar($objeto),excluir($id).- SQL isolado da camada de controller.
Arquivos:
model/Imovel.phpmodel/Proprietario.phpmodel/Corretor.phpmodel/Cliente.phpmodel/Visita.phpmodel/Contrato.php
Papel:
- Estruturar dados de dominio e servir de contrato entre controller e DAO.
- Arquivo:
config/conexao.php - Singleton via
Conexao::getConn(). - Banco: SQLite (
database.sqlite).
- Arquivo:
config/schema_sqlite.sql - Tabelas: usuarios, proprietarios, corretores, clientes, imoveis, visitas, contratos.
imoveis.id_proprietario -> proprietarios.idvisitas.id_imovel -> imoveis.idcontratos.id_imovel -> imoveis.idcontratos.id_cliente -> clientes.idcontratos.id_corretor -> corretores.id
Pre-requisitos:
- PHP 8+
- Extensao PDO com SQLite
- SQLite3 CLI (para criar o schema via terminal)
No diretorio raiz do projeto, crie o banco e as tabelas:
sqlite3 database.sqlite < config/schema_sqlite.sqlRodar local:
php -S localhost:8000Acesso:
- Entrada principal:
http://localhost:8000/index.php(redireciona para a busca publica quando nao autenticado) - Busca de clientes:
http://localhost:8000/cliente_busca.php - Resultado da busca:
http://localhost:8000/cliente_resultados.php - Registro:
http://localhost:8000/registro.php - Login:
http://localhost:8000/login.php - Painel administrativo:
http://localhost:8000/index.php
- CRUD: Create, Read, Update, Delete.
- MVC: Model, View, Controller.
- DAO: Data Access Object.
- PDO: API de acesso a banco no PHP.
- Front Controller: ponto unico de entrada (
index.php). - Sessao: dados temporarios do usuario no servidor.
- PRG: Post/Redirect/Get.
- PK: Primary Key.
- FK: Foreign Key.
- CRECI: registro profissional do corretor de imoveis.