Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
63 commits
Select commit Hold shift + click to select a range
b031686
Arquivo para conexão com o banco
carlosteixeiracruz Jan 20, 2019
93953c0
Arquivo raiz
carlosteixeiracruz Jan 20, 2019
3035a5e
Modificado relacionamento de algumas tabelas
carlosteixeiracruz Jan 21, 2019
cf845e5
SQL da exportação do banco
carlosteixeiracruz Jan 21, 2019
eb73eab
Tela da pasta view de usuário e senha
carlosteixeiracruz Jan 22, 2019
2b8ed28
Tela da pasta view de usuário e senha
carlosteixeiracruz Jan 22, 2019
0c1616f
Controle de acesso via Java Script
carlosteixeiracruz Jan 22, 2019
a736030
Rename view/login.js to view/js/login.js
carlosteixeiracruz Jan 22, 2019
6372c6f
Pacote Java Script
carlosteixeiracruz Jan 22, 2019
770240f
Retorna o login.php da pasta model
carlosteixeiracruz Jan 22, 2019
722d3b4
Retorna o controle do login.php na pasta controller
carlosteixeiracruz Jan 22, 2019
50acfb4
Retorna as query do login.php na pasta database
carlosteixeiracruz Jan 22, 2019
1f5be53
arquivo sem conteúdo
carlosteixeiracruz Jan 22, 2019
c1c46ef
tentando corrigir erro no nome da pasta controller
carlosteixeiracruz Jan 22, 2019
6cb486d
Retorna o controle do login.php na pasta controller
carlosteixeiracruz Jan 22, 2019
5138194
Atualizações para o arquivo login
carlosteixeiracruz Jan 28, 2019
567be79
Arquivo de cadastramento de usuários
carlosteixeiracruz Jan 28, 2019
2d5e889
Subir arquivo como imagem PNG
carlosteixeiracruz Jan 28, 2019
c22184e
Alteração para efetuar o acesso via homologação
carlosteixeiracruz Jan 28, 2019
c3fa0cf
Update desafio-fullstack-master (1).sql
carlosteixeiracruz Jan 28, 2019
b3358ca
Imagem da modelagem de relacionamento do banco
carlosteixeiracruz Jan 28, 2019
6c8e8df
Alteração no menu
carlosteixeiracruz Jan 28, 2019
b98ef29
arquivo de teste
carlosteixeiracruz Jan 29, 2019
b3f5bbb
Imagem da modelagem do banco de dados
carlosteixeiracruz Jan 29, 2019
7bd1455
Atualização para homologação
carlosteixeiracruz Jan 29, 2019
d8399d4
SQL Atualizado e zerado para teste
carlosteixeiracruz Jan 29, 2019
3eb246a
SQL desatualizada
carlosteixeiracruz Jan 29, 2019
d67a168
Versão atualizada das view
carlosteixeiracruz Jan 29, 2019
dcdaf8e
Controle de acesso
carlosteixeiracruz Jan 29, 2019
2feafcc
Arquivos de controle de JS
carlosteixeiracruz Jan 29, 2019
13bd725
Correção do menu horizontal
carlosteixeiracruz Jan 29, 2019
3bba73a
Arquivo de Controle
carlosteixeiracruz Jan 29, 2019
852795c
Repositório dos arquivos de css
carlosteixeiracruz Jan 29, 2019
f510568
Criado errado
carlosteixeiracruz Jan 29, 2019
e7548e1
arquivo de css
carlosteixeiracruz Jan 29, 2019
6780334
Todos os arquivos CSS
carlosteixeiracruz Jan 29, 2019
e81e0bc
Create cad_turma.png
carlosteixeiracruz Jan 29, 2019
d88e73e
Todas as imagens do sistema
carlosteixeiracruz Jan 29, 2019
ad65875
Todos Arquivos de conexão com BD
carlosteixeiracruz Jan 29, 2019
d21231c
Todos arquivos referente ao models
carlosteixeiracruz Jan 29, 2019
6720d9a
Create glyphicons-halflings-regular.eot
carlosteixeiracruz Jan 29, 2019
0001645
todos arquivos de font do sistema
carlosteixeiracruz Jan 29, 2019
3d1ff6a
Alteração na descrição da imagem de visualização.
carlosteixeiracruz Jan 29, 2019
2a1a171
Alteração na opção de alteração
carlosteixeiracruz Jan 29, 2019
6eb61f2
Alteração na opção de perfil
carlosteixeiracruz Jan 29, 2019
5ea007a
Alteração da opção de perfil
carlosteixeiracruz Jan 29, 2019
bf41017
Alteração da opção de perfil
carlosteixeiracruz Jan 29, 2019
ceb5200
Melhorias no marcador de admin
carlosteixeiracruz Jan 29, 2019
d8101f1
Melhorias no marcador de admin
carlosteixeiracruz Jan 29, 2019
666ffdd
Instruções
carlosteixeiracruz Jan 29, 2019
453bb0f
Alteração no nome do cabeçalho de exibição
carlosteixeiracruz Jan 29, 2019
7c58e35
Atualização no arquivo sql
carlosteixeiracruz Jan 29, 2019
0e58c5e
Finalizando projeto
carlosteixeiracruz Jan 29, 2019
0f943dc
Finalizando projeto
carlosteixeiracruz Jan 29, 2019
4d23089
Finalizando projeto
carlosteixeiracruz Jan 29, 2019
87ec2eb
Finalizando projeto
carlosteixeiracruz Jan 29, 2019
5f3805b
Finalizando projeto
carlosteixeiracruz Jan 29, 2019
71fb8a6
Finalizando projeto
carlosteixeiracruz Jan 29, 2019
658225e
Finalizando projeto
carlosteixeiracruz Jan 29, 2019
ec0f034
Finalizando projeto
carlosteixeiracruz Jan 29, 2019
789feb3
Finalizando projeto
carlosteixeiracruz Jan 29, 2019
96954e5
Finalizando projeto
carlosteixeiracruz Jan 29, 2019
f4a2343
Correção na exibição
carlosteixeiracruz Jan 29, 2019
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
124 changes: 95 additions & 29 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,29 +1,95 @@
# Desafio Celso Lisboa para FullStack

### Cenário

**Como** Coordenador Acadêmico de uma Instituição de Ensino
**Eu preciso** realizar a gestão dos cursos oferecidos pela Instituição, com seus respectivos professores, salas e horários
**Para** que o setor de Marketing possa vender os cursos online.

### Segue instruções para realizar o desafio

1. Faça um fork deste repositório.
2. Baseado no cenário acima, modele e crie o esquema do banco de dados para armazenar as informações normalizadas.
* Comite a imagem em jpg ou png do DER e o script do DDL.
3. Desenvolva uma API REST para realizar as operações necessárias com o banco de dados criado.
4. Baseado nas imagens `wireframe/1-login-mobile.png` e `wireframe/2-login-desktop.png`, crie a tela de login da aplicação.
* Considere apenas uma validação simples por e-mail e senha.
* Não existe a necessidade de CRUD de usuário, recuperação de senha ou outra operação mais complexa.
5. Baseado nas imagens `wireframe/3-cursos-mobile.png` e `wireframe/4-cursos-desktop.png`, crie a tela de visualização e deleção de cursos.
* Deve conter as informações de horário, professor e sala.
6. Baseado nas imagens `wireframe/5-detalhe-mobile.png` e `wireframe/6-detalhe-desktop.png`, crie a tela de criação e alteração de cursos.
* Os campos de professor e sala deverão ser um multi-select.
* Não existe a necessidade de CRUD de professor e sala.
7. Realizar um Pull Request para este repositório, com instruções necessárias para instalação e instânciação dos sistemas.

### O que será avaliado

1. Fidelidade às instruções e ao cenário.
2. Clean Code e boas práticas.
3. Boas práticas de versionamento.
#######################################
#####Celso Lisboa para FullStack#######
#######################################

###Versão dos aplicativo###

*Packages:

*Apache 2.4.37

*PHP 7.1.24

*MySQL 5.7.24

*Smarty 3.1.33

*SQLite 3.25.3

*PhpMyAdmin 4.8.3

*Xdebug 2.6.1 / 2.5.5


###Instalação do sistema###

1.Baixe todo sistema (Pastas: controller, database, model, view e Arquivos: conexao.php, index.php) para dentro de uma raiz;

2.Acesse o arquivo de conexão e onde está escrito o trecho a baixo próximo a linha 19 configure o host, usuario e senha:

/*Banco de Homologação*/

private static $dbtypeHomolog = "mysql";

private static $hostHomolog = "localhost";

private static $portHomolog = "3306";

private static $userHomolog = "root";

private static $passwordHomolog = "vertrigo";

/*termino*/

3.Acesse o arquivo de conexão e onde está escrito o trecho a baixo próximo a linha 35 configure o nome do banco no caso está como desafio-fullstack-master:

/*Retorna o nome do banco de Homologação*/

private static $dbHomolog = "desafio-fullstack-master";

/*Homologação*/

4.Baixe o arquivo desafio-fullstack-master.sql e execute no banco para criação das tabelas e dados necessários para efetuar os testes;

###FIM da Instalação do Sistema###

###OBS####
#ATENÇÃO!#
##########
- Verifique se o seu PHP está com a session_start está ativo caso estejá:
1) Retire a linha 6 do arquivo index.php ou desative no arquivo php.ini linha 1444 comando (session.auto_start).


###Utilização das funcionalidades do sistema###

1) já existe 2 admin cadastrado 1 é o e-mail admin2@gmail.com senha 12345678 e o outro é e-mail admin@gmail.com senha 12345678.

2) Acesse o sistema utilizando o campo usuário(e-mail) e senha;

3) O sistema irá te direcionar para a tela painel de controle onde se encontram 6 opções de funcionalidades: Cadastrar Usuário,
Listar Usuário, Cadastrar Turma, Listar turma, Visualizar cursos;

3) Clique em cadastrar usuário para alimentar o sistema;

4) Clique em listar usuários na parte superior da tela mesmo de cadastro de usuário ou clique na seta para voltar para
o painel de controle;

5) Clique em alterar usuário ao lado do nome do usuário cadastrado no link de alteração;

6) Altere o perfil do usuário para Professor se for o caso cadastre mais de 1 usuário para exibir na tela curso como professor;

OBS: Na mesma tela de alteração de usuário é possível transformar os perfins que são diferentes de usuário em administrador do sistema para efetuar as mesmas alterações;

7) Agora na tela curso cadastre os cursos que serão exibidos;

OBS: Repare que os professores que aparecem são os que são apontados como perfil professores na tela de alteração de usuário;

OBS: Perceba que o campo curso resgata os cursos cadastrados para não ser necessário digitar novamente nem ficar com nomes duplicados no banco;

8) Após terem criado os cursos clique na parte superior da tela mesmo de cadastro de cursos ou clique na seta para voltar para
o painel de controle;

OBS: Exibe todos os cursos cadastrados e clicando no botão de alteção ao lado do curso é possível efetuar alterações;

9) Para visualizar como usuário os cursos clique na imagem de olho na parte superior da tela mesmo de lista de cursos ou clique na seta para voltar para
o painel de controle e clique em visualizar, é a ultima imagem do painel de controle;
110 changes: 110 additions & 0 deletions alt_pessoa.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,110 @@
<?php
/*
*Efetua a montagem das telas do sistema
*/
require_once("controller/alt_pessoa.php");

class model_altPessoa {
/*Retorna o NOME digitado para cadastro do comprador*/
public function modelsAltPessoaPostNome() {
$objControllerAltPessoa = new controller_altPessoa();

return $objControllerAltPessoa->controllersAltPessoaPostNome();
}

/*Retorna o EMAIL digitado para cadastro do comprador*/
public function modelsAltPessoaPostEmail() {
$objControllerAltPessoa = new controller_altPessoa();

return $objControllerAltPessoa->controllersAltPessoaPostEmail();
}

/*Retorna o CELULAR digitado para cadastro do comprador*/
public function modelsAltPessoaPostCelular() {
$objControllerAltPessoa = new controller_altPessoa();

return $objControllerAltPessoa->controllersAltPessoaPostCelular();
}

/*Retorna a Senha*/
public function modelsAltPessoaPostSenha() {
$objControllerAltPessoa = new controller_altPessoa();

return $objControllerAltPessoa->controllersAltPessoaPostSenha();
}

/*Retorna a repeticao da senha*/
public function modelsAltPessoaPostRepSenha() {
$objControllerAltPessoa = new controller_altPessoa();

return $objControllerAltPessoa->controllersAltPessoaPostRepSenha();
}

/*Retorna dados do usuário para alteração*/
public function modelsAltPessoaListaDados() {
$objControllerAltPessoa = new controller_altPessoa();

return $objControllerAltPessoa->controllersAltPessoaListaDados();
}

/*Lista todas as funções cadastradas*/
public function modelsAltPessoaListaFuncao($rowFuncaoId = null, $varAltNome = null, $rowUserId = null) {
$objControllerAltPessoa = new controller_altPessoa();

if ($varAltNome != "admin" AND $varAltNome != "admin2") {
$result = $objControllerAltPessoa->controllersAltPessoaListaFuncao($rowFuncaoId);

$HTML = null;
while($row = mysqli_fetch_assoc($result)) {
$HTML .= '<option value="'.$row['funcaoid'].'">'.$row['funcao'].'</option>';
}

print($HTML);
}
}

/*Retorna a informação se já é ADMIN*/
public function modelsAltPessoaAdmin($varAltFuncao = null) {
$objControllerAltPessoa = new controller_altPessoa();

$rowAdminSenha = $objControllerAltPessoa->controllersAltPessoaAdmin();

$HTML = null;

if (empty($rowAdminSenha)) {
$HTML .= '<div class="col-md-8">';
$HTML .= '<div id="avisoForm1" class="admin"></div>';
$HTML .= '</div>';
} else if (!empty($rowAdminSenha) AND $varAltFuncao != "usuário" ) {
$HTML .= '<div class="col-md-8">';
$HTML .= '<div id="avisoForm1" class="admin" >
<label class="col-md-3 control-label" for="admin">
Admin
<input id="admin" name="admin" type="checkbox" value="1" checked>
</label>
</div>';
$HTML .= '</div>';
}

return $HTML;
}

/*função Altastrar Comprador*/
public function modelsAltPessoa() {
/*Retorna o NOME digitado para altastro do comprador*/
$postNome = model_altPessoa::modelsAltPessoaPostNome();
/*Retorna o EMAIL digitado para altastro do comprador*/
$postEmail = model_altPessoa::modelsAltPessoaPostEmail();
/*Retorna o CELULAR digitado para altastro do comprador*/
$postCelular = model_altPessoa::modelsAltPessoaPostCelular();
/*Retorna a Senha*/
$postSenha = model_altPessoa::modelsAltPessoaPostSenha();
/*Retorna a repeticao da senha*/
$postRepSenha = model_altPessoa::modelsAltPessoaPostRepSenha();

$objControllerAltPessoa = new controller_altPessoa();

$objControllerAltPessoa->controllersAltPessoa();
}
}
?>
146 changes: 146 additions & 0 deletions conexao.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,146 @@
<?php
class conexao {
/*Servidor de Produ��o*/
private static $dbtypeProd = "mysql";
private static $hostProd = " ";
private static $portProd = "3306";
private static $userProd = " ";
private static $passwordProd = " ";
/*Termino*/

/*Banco de Desenvolvimento*/
private static $dbtypeLocal = "mysql";
private static $hostLocal = "localhost";
private static $portLocal = "3306";
private static $userLocal = "root";
private static $passwordLocal = "vertrigo";
/*termino*/

/*Banco de Homologa��o*/
private static $dbtypeHomolog = "mysql";
private static $hostHomolog = "localhost";
private static $portHomolog = "3306";
private static $userHomolog = "root";
private static $passwordHomolog = "vertrigo";
/*termino*/

/*Retorna o nome do banco de Produ��o*/
private static $dbProd = "desafio-fullstack-master";
/*Homologa��o*/

/*Retorna o nome do banco de Desenvolvimento*/
private static $dbLocalHost = "desafio-fullstack-master";
/*Homologa��o*/

/*Retorna o nome do banco de Homologa��o*/
private static $dbHomolog = "desafio-fullstack-master";
/*Homologa��o*/

/*Efetua a conex�o com o Banco de Dados de Produ��o*/
private function getHostProd() {
return self::$hostProd;
}

private function getPortProd() {
return self::$portProd;
}

private function getUserProd() {
return self::$userProd;
}

private function getPasswordProd() {
return self::$passwordProd;
}
/*termino*/


/*Efetua a conex�o com o Desenvolvimento*/
private function getHostLocal() {
return self::$hostLocal;
}

private function getPortLocal() {
return self::$portLocal;
}

private function getUserLocal() {
return self::$userLocal;
}

private function getPasswordLocal() {
return self::$passwordLocal;
}
/*termino*/

/*Efetua a conex�o com o Homologa��o*/
private function getHostHomolog() {
return self::$hostHomolog;
}

private function getPortHomolog() {
return self::$portHomolog;
}

private function getUserHomolog() {
return self::$userHomolog;
}

private function getPasswordHomolog() {
return self::$passwordHomolog;
}
/*termino*/

/*Chama o Banco de Dados de Produ��o*/
private function getDBProd() {
return self::$dbProd;
}

/*Chama o banco de Desenvolvimento*/
private function getDBLocalHost() {
return self::$dbLocalHost;
}

/*Chama o banco de Homologa��o*/
private function getDBHomolog() {
return self::$dbHomolog;
}

/* Fun��o que faz a conex�o com o banco de dados */
public function bd() {
/*DATA Modifica a zona de tempo a ser utilizada. Disnov�vel desde o PHP 5.1*/
date_default_timezone_set('UTC');

/*Efetua a conex�o com o Banco de Dados de Produ��o*/
if ($_SERVER['HTTP_HOST'] == " ") {
$conect = mysqli_connect($this->getHostProd(), $this->getUserProd(), $this->getPasswordProd(),$this->getDBProd());

return $conect;
/*Efetua a conex�o com o Banco de Dados Desenvolvimento*/
} else if($_SERVER['HTTP_HOST'] == "" OR $_SERVER['HTTP_HOST'] == "127.0.0.1") {
$conect = mysqli_connect($this->getHostLocal(), $this->getUserLocal(), $this->getPasswordLocal(),$this->getDBLocalHost());

return $conect;
/*Efetua a conex�o com o Banco para Homologacao*/
} else {
$conect = mysqli_connect($this->getHostHomolog(), $this->getUserHomolog(), $this->getPasswordHomolog(),$this->getDBHomolog());

return $conect;
/*Efetua a conex�o com o Banco de Dados Desenvolvimento*/
}

/*exibe a mensagem de erro em caso de n�o conectar*/
if (empty($conect)) {
print("� necess�rio verificar a conex�o com o banco");

die;
}

/*Aqui est� o segredo do erro de caracter quando houver*/
#mysql_query("SET NAMES 'utf8'");
#mysql_query('SET character_set_connection=utf8');
#mysql_query('SET character_set_client=utf8');
#mysql_query('SET character_set_results=utf8');
}
}
?>
Loading