salvar.php — leitura técnica completa

sistema/painel/paginas/manutencoes/salvar.php
Endpoint que grava manutenção, calcula próxima manutenção e guarda dados técnicos da aplicação.

ManutençõesEndpoint AJAX de persistência148 linhas

Responsabilidade do arquivo

Endpoint que grava manutenção, calcula próxima manutenção e guarda dados técnicos da aplicação.

Dependências observadas:
Conexão PDO / configurações globaisBanco de dados

Tipo

Endpoint AJAX de persistência

Grupo

Manutenções

Total de linhas

148

Código completo

1<?php 2require_once("../../../conexao.php"); 3$tabela = 'manutencoes_protese'; 4 5$id = @$_POST['id']; 6$cliente = @$_POST['cliente']; 7$id_protese = @$_POST['id_protese']; 8$data_manutencao = @$_POST['data_manutencao']; 9$tipo = @$_POST['tipo']; 10$produtos_utilizados = @$_POST['produtos_utilizados']; 11$observacoes = @$_POST['observacoes']; 12$proxima_manutencao = @$_POST['proxima_manutencao']; 13 14$tipo_pele = @$_POST['tipo_pele']; 15$nivel_sudorese = @$_POST['nivel_sudorese']; 16$clima = @$_POST['clima']; 17$tipo_adesivo = @$_POST['tipo_adesivo']; 18 19if($cliente == ""){ 20 echo 'Selecione um Cliente'; 21 exit(); 22} 23 24if($id_protese == ""){ 25 echo 'Selecione uma Prótese'; 26 exit(); 27} 28 29if($data_manutencao == ""){ 30 echo 'Informe a Data da Manutenção'; 31 exit(); 32} 33 34/* 35 Se a próxima manutenção vier em branco, 36 o sistema calcula automaticamente com base no perfil técnico 37*/ 38if($proxima_manutencao == "" && $data_manutencao != ""){ 39 40 $dias_manutencao = 15; 41 42 // Tipo de pele 43 if($tipo_pele == 'Oleosa'){ 44 $dias_manutencao -= 3; 45 }else if($tipo_pele == 'Seca'){ 46 $dias_manutencao += 2; 47 } 48 49 // Nível de sudorese 50 if($nivel_sudorese == '1'){ 51 $dias_manutencao += 2; 52 }else if($nivel_sudorese == '2'){ 53 $dias_manutencao += 1; 54 }else if($nivel_sudorese == '4'){ 55 $dias_manutencao -= 2; 56 }else if($nivel_sudorese == '5'){ 57 $dias_manutencao -= 4; 58 } 59 60 // Clima 61 if($clima == 'Frio'){ 62 $dias_manutencao += 2; 63 }else if($clima == 'Quente'){ 64 $dias_manutencao -= 2; 65 } 66 67 // Tipo de adesivo 68 if($tipo_adesivo == 'Ultra Hold'){ 69 $dias_manutencao += 4; 70 }else if($tipo_adesivo == 'Gold / Amarela'){ 71 $dias_manutencao += 2; 72 }else if($tipo_adesivo == 'No-Shine'){ 73 $dias_manutencao += 1; 74 }else if($tipo_adesivo == 'Fita Branca'){ 75 $dias_manutencao += 0; 76 }else if($tipo_adesivo == 'Cola Acrílica'){ 77 $dias_manutencao += 3; 78 } 79 80 // Limite mínimo para não gerar data muito curta 81 if($dias_manutencao < 5){ 82 $dias_manutencao = 5; 83 } 84 85 $proxima_manutencao = date('Y-m-d', strtotime("+$dias_manutencao days", strtotime($data_manutencao))); 86} 87 88$query = $pdo->prepare("SELECT * FROM $tabela WHERE cliente = :cliente AND id_protese = :id_protese AND data_manutencao = :data_manutencao"); 89$query->bindValue(":cliente", $cliente); 90$query->bindValue(":id_protese", $id_protese); 91$query->bindValue(":data_manutencao", $data_manutencao); 92$query->execute(); 93$res = $query->fetchAll(PDO::FETCH_ASSOC); 94 95if(@count($res) > 0 and $id != $res[0]['id']){ 96 echo 'Registro já Cadastrado, escolha outro!!'; 97 exit(); 98} 99 100if($id == ""){ 101 $query = $pdo->prepare("INSERT INTO $tabela SET 102 cliente = :cliente, 103 id_protese = :id_protese, 104 data_manutencao = :data_manutencao, 105 tipo = :tipo, 106 produtos_utilizados = :produtos_utilizados, 107 observacoes = :observacoes, 108 proxima_manutencao = :proxima_manutencao, 109 tipo_pele = :tipo_pele, 110 nivel_sudorese = :nivel_sudorese, 111 clima = :clima, 112 tipo_adesivo = :tipo_adesivo, 113 alerta_manutencao_enviado = 0, 114 data_alerta_manutencao = NULL"); 115}else{ 116 $query = $pdo->prepare("UPDATE $tabela SET 117 cliente = :cliente, 118 id_protese = :id_protese, 119 data_manutencao = :data_manutencao, 120 tipo = :tipo, 121 produtos_utilizados = :produtos_utilizados, 122 observacoes = :observacoes, 123 proxima_manutencao = :proxima_manutencao, 124 tipo_pele = :tipo_pele, 125 nivel_sudorese = :nivel_sudorese, 126 clima = :clima, 127 tipo_adesivo = :tipo_adesivo, 128 alerta_manutencao_enviado = 0, 129 data_alerta_manutencao = NULL 130 WHERE id = :id"); 131 $query->bindValue(":id", $id); 132} 133 134$query->bindValue(":cliente", $cliente); 135$query->bindValue(":id_protese", $id_protese); 136$query->bindValue(":data_manutencao", $data_manutencao); 137$query->bindValue(":tipo", $tipo); 138$query->bindValue(":produtos_utilizados", $produtos_utilizados); 139$query->bindValue(":observacoes", $observacoes); 140$query->bindValue(":proxima_manutencao", $proxima_manutencao); 141$query->bindValue(":tipo_pele", $tipo_pele); 142$query->bindValue(":nivel_sudorese", $nivel_sudorese); 143$query->bindValue(":clima", $clima); 144$query->bindValue(":tipo_adesivo", $tipo_adesivo); 145$query->execute(); 146 147echo 'Salvo com Sucesso'; 148?>

Leitura linha por linha

LinhaCódigoExplicação técnica
1<?php Abre um bloco PHP. A partir daqui o arquivo passa a executar lógica no servidor.
2require_once("../../../conexao.php");Importa `../../../conexao.php` para disponibilizar conexão, sessão, funções utilitárias ou validações necessárias ao restante do fluxo.
3$tabela = 'manutencoes_protese';Centraliza o nome da tabela `manutencoes_protese` em uma variável, facilitando reaproveitamento do valor nas queries do arquivo.
4 Linha em branco usada para separar blocos e melhorar a leitura.
5$id = @$_POST['id'];Lê dados de entrada vindos da requisição, sessão ou upload e normaliza o valor para uso no restante da rotina.
6$cliente = @$_POST['cliente'];Lê dados de entrada vindos da requisição, sessão ou upload e normaliza o valor para uso no restante da rotina.
7$id_protese = @$_POST['id_protese'];Lê dados de entrada vindos da requisição, sessão ou upload e normaliza o valor para uso no restante da rotina.
8$data_manutencao = @$_POST['data_manutencao'];Lê dados de entrada vindos da requisição, sessão ou upload e normaliza o valor para uso no restante da rotina.
9$tipo = @$_POST['tipo'];Lê dados de entrada vindos da requisição, sessão ou upload e normaliza o valor para uso no restante da rotina.
10$produtos_utilizados = @$_POST['produtos_utilizados'];Lê dados de entrada vindos da requisição, sessão ou upload e normaliza o valor para uso no restante da rotina.
11$observacoes = @$_POST['observacoes'];Lê dados de entrada vindos da requisição, sessão ou upload e normaliza o valor para uso no restante da rotina.
12$proxima_manutencao = @$_POST['proxima_manutencao'];Lê dados de entrada vindos da requisição, sessão ou upload e normaliza o valor para uso no restante da rotina.
13 Linha em branco usada para separar blocos e melhorar a leitura.
14$tipo_pele = @$_POST['tipo_pele'];Lê dados de entrada vindos da requisição, sessão ou upload e normaliza o valor para uso no restante da rotina.
15$nivel_sudorese = @$_POST['nivel_sudorese'];Lê dados de entrada vindos da requisição, sessão ou upload e normaliza o valor para uso no restante da rotina.
16$clima = @$_POST['clima'];Lê dados de entrada vindos da requisição, sessão ou upload e normaliza o valor para uso no restante da rotina.
17$tipo_adesivo = @$_POST['tipo_adesivo'];Lê dados de entrada vindos da requisição, sessão ou upload e normaliza o valor para uso no restante da rotina.
18 Linha em branco usada para separar blocos e melhorar a leitura.
19if($cliente == ""){Abre uma condição para validar pré-requisitos ou desviar o fluxo conforme os dados recebidos.
20 echo 'Selecione um Cliente';Envia saída para o navegador ou para o AJAX. O conteúdo retornado aqui precisa respeitar o contrato esperado pela tela.
21 exit();Linha de implementação que compõe a lógica normal do arquivo e deve ser lida em conjunto com o bloco onde está inserida.
22}Marca abertura/fechamento de bloco de código, objeto, array ou estrutura de controle.
23 Linha em branco usada para separar blocos e melhorar a leitura.
24if($id_protese == ""){Abre uma condição para validar pré-requisitos ou desviar o fluxo conforme os dados recebidos.
25 echo 'Selecione uma Prótese';Envia saída para o navegador ou para o AJAX. O conteúdo retornado aqui precisa respeitar o contrato esperado pela tela.
26 exit();Linha de implementação que compõe a lógica normal do arquivo e deve ser lida em conjunto com o bloco onde está inserida.
27}Marca abertura/fechamento de bloco de código, objeto, array ou estrutura de controle.
28 Linha em branco usada para separar blocos e melhorar a leitura.
29if($data_manutencao == ""){Abre uma condição para validar pré-requisitos ou desviar o fluxo conforme os dados recebidos.
30 echo 'Informe a Data da Manutenção';Envia saída para o navegador ou para o AJAX. O conteúdo retornado aqui precisa respeitar o contrato esperado pela tela.
31 exit();Linha de implementação que compõe a lógica normal do arquivo e deve ser lida em conjunto com o bloco onde está inserida.
32}Marca abertura/fechamento de bloco de código, objeto, array ou estrutura de controle.
33 Linha em branco usada para separar blocos e melhorar a leitura.
34/*Comentário do código. Serve para contextualizar o bloco seguinte para quem fizer manutenção.
35 Se a próxima manutenção vier em branco,Linha de implementação que compõe a lógica normal do arquivo e deve ser lida em conjunto com o bloco onde está inserida.
36 o sistema calcula automaticamente com base no perfil técnicoLinha de implementação que compõe a lógica normal do arquivo e deve ser lida em conjunto com o bloco onde está inserida.
37*/Comentário do código. Serve para contextualizar o bloco seguinte para quem fizer manutenção.
38if($proxima_manutencao == "" && $data_manutencao != ""){Abre uma condição para validar pré-requisitos ou desviar o fluxo conforme os dados recebidos.
39 Linha em branco usada para separar blocos e melhorar a leitura.
40 $dias_manutencao = 15;Define a variável `$dias_manutencao`, que será usada pelo restante do arquivo para controlar dados, estado ou resposta.
41 Linha em branco usada para separar blocos e melhorar a leitura.
42 // Tipo de peleComentário do código. Serve para contextualizar o bloco seguinte para quem fizer manutenção.
43 if($tipo_pele == 'Oleosa'){Abre uma condição para validar pré-requisitos ou desviar o fluxo conforme os dados recebidos.
44 $dias_manutencao -= 3;Manipula uma variável PHP usada na construção do fluxo.
45 }else if($tipo_pele == 'Seca'){Marca abertura/fechamento de bloco de código, objeto, array ou estrutura de controle.
46 $dias_manutencao += 2;Manipula uma variável PHP usada na construção do fluxo.
47 }Marca abertura/fechamento de bloco de código, objeto, array ou estrutura de controle.
48 Linha em branco usada para separar blocos e melhorar a leitura.
49 // Nível de sudoreseComentário do código. Serve para contextualizar o bloco seguinte para quem fizer manutenção.
50 if($nivel_sudorese == '1'){Abre uma condição para validar pré-requisitos ou desviar o fluxo conforme os dados recebidos.
51 $dias_manutencao += 2;Manipula uma variável PHP usada na construção do fluxo.
52 }else if($nivel_sudorese == '2'){Marca abertura/fechamento de bloco de código, objeto, array ou estrutura de controle.
53 $dias_manutencao += 1;Manipula uma variável PHP usada na construção do fluxo.
54 }else if($nivel_sudorese == '4'){Marca abertura/fechamento de bloco de código, objeto, array ou estrutura de controle.
55 $dias_manutencao -= 2;Manipula uma variável PHP usada na construção do fluxo.
56 }else if($nivel_sudorese == '5'){Marca abertura/fechamento de bloco de código, objeto, array ou estrutura de controle.
57 $dias_manutencao -= 4;Manipula uma variável PHP usada na construção do fluxo.
58 }Marca abertura/fechamento de bloco de código, objeto, array ou estrutura de controle.
59 Linha em branco usada para separar blocos e melhorar a leitura.
60 // ClimaComentário do código. Serve para contextualizar o bloco seguinte para quem fizer manutenção.
61 if($clima == 'Frio'){Abre uma condição para validar pré-requisitos ou desviar o fluxo conforme os dados recebidos.
62 $dias_manutencao += 2;Manipula uma variável PHP usada na construção do fluxo.
63 }else if($clima == 'Quente'){Marca abertura/fechamento de bloco de código, objeto, array ou estrutura de controle.
64 $dias_manutencao -= 2;Manipula uma variável PHP usada na construção do fluxo.
65 }Marca abertura/fechamento de bloco de código, objeto, array ou estrutura de controle.
66 Linha em branco usada para separar blocos e melhorar a leitura.
67 // Tipo de adesivoComentário do código. Serve para contextualizar o bloco seguinte para quem fizer manutenção.
68 if($tipo_adesivo == 'Ultra Hold'){Abre uma condição para validar pré-requisitos ou desviar o fluxo conforme os dados recebidos.
69 $dias_manutencao += 4;Manipula uma variável PHP usada na construção do fluxo.
70 }else if($tipo_adesivo == 'Gold / Amarela'){Marca abertura/fechamento de bloco de código, objeto, array ou estrutura de controle.
71 $dias_manutencao += 2;Manipula uma variável PHP usada na construção do fluxo.
72 }else if($tipo_adesivo == 'No-Shine'){Marca abertura/fechamento de bloco de código, objeto, array ou estrutura de controle.
73 $dias_manutencao += 1;Manipula uma variável PHP usada na construção do fluxo.
74 }else if($tipo_adesivo == 'Fita Branca'){Marca abertura/fechamento de bloco de código, objeto, array ou estrutura de controle.
75 $dias_manutencao += 0;Manipula uma variável PHP usada na construção do fluxo.
76 }else if($tipo_adesivo == 'Cola Acrílica'){Marca abertura/fechamento de bloco de código, objeto, array ou estrutura de controle.
77 $dias_manutencao += 3;Manipula uma variável PHP usada na construção do fluxo.
78 }Marca abertura/fechamento de bloco de código, objeto, array ou estrutura de controle.
79 Linha em branco usada para separar blocos e melhorar a leitura.
80 // Limite mínimo para não gerar data muito curtaComentário do código. Serve para contextualizar o bloco seguinte para quem fizer manutenção.
81 if($dias_manutencao < 5){Abre uma condição para validar pré-requisitos ou desviar o fluxo conforme os dados recebidos.
82 $dias_manutencao = 5;Define a variável `$dias_manutencao`, que será usada pelo restante do arquivo para controlar dados, estado ou resposta.
83 }Marca abertura/fechamento de bloco de código, objeto, array ou estrutura de controle.
84 Linha em branco usada para separar blocos e melhorar a leitura.
85 $proxima_manutencao = date('Y-m-d', strtotime("+$dias_manutencao days", strtotime($data_manutencao)));Inicializa `$proxima_manutencao` com uma data calculada em runtime, usada no controle temporal do fluxo.
86}Marca abertura/fechamento de bloco de código, objeto, array ou estrutura de controle.
87 Linha em branco usada para separar blocos e melhorar a leitura.
88$query = $pdo->prepare("SELECT * FROM $tabela WHERE cliente = :cliente AND id_protese = :id_protese AND data_manutencao = :data_manutencao");Centraliza o nome da tabela `tabela` em uma variável, facilitando reaproveitamento do valor nas queries do arquivo.
89$query->bindValue(":cliente", $cliente);Associa um valor PHP a um parâmetro nomeado da query preparada.
90$query->bindValue(":id_protese", $id_protese);Associa um valor PHP a um parâmetro nomeado da query preparada.
91$query->bindValue(":data_manutencao", $data_manutencao);Associa um valor PHP a um parâmetro nomeado da query preparada.
92$query->execute();Executa a query preparada no banco de dados.
93$res = $query->fetchAll(PDO::FETCH_ASSOC);Lê o resultado retornado pelo banco e o converte para uma estrutura PHP que o restante do arquivo consegue consumir.
94 Linha em branco usada para separar blocos e melhorar a leitura.
95if(@count($res) > 0 and $id != $res[0]['id']){Abre uma condição para validar pré-requisitos ou desviar o fluxo conforme os dados recebidos.
96 echo 'Registro já Cadastrado, escolha outro!!';Envia saída para o navegador ou para o AJAX. O conteúdo retornado aqui precisa respeitar o contrato esperado pela tela.
97 exit();Linha de implementação que compõe a lógica normal do arquivo e deve ser lida em conjunto com o bloco onde está inserida.
98}Marca abertura/fechamento de bloco de código, objeto, array ou estrutura de controle.
99 Linha em branco usada para separar blocos e melhorar a leitura.
100if($id == ""){Abre uma condição para validar pré-requisitos ou desviar o fluxo conforme os dados recebidos.
101 $query = $pdo->prepare("INSERT INTO $tabela SET Centraliza o nome da tabela `tabela` em uma variável, facilitando reaproveitamento do valor nas queries do arquivo.
102 cliente = :cliente, Linha de implementação que compõe a lógica normal do arquivo e deve ser lida em conjunto com o bloco onde está inserida.
103 id_protese = :id_protese, Linha de implementação que compõe a lógica normal do arquivo e deve ser lida em conjunto com o bloco onde está inserida.
104 data_manutencao = :data_manutencao, Linha de implementação que compõe a lógica normal do arquivo e deve ser lida em conjunto com o bloco onde está inserida.
105 tipo = :tipo, Linha de implementação que compõe a lógica normal do arquivo e deve ser lida em conjunto com o bloco onde está inserida.
106 produtos_utilizados = :produtos_utilizados, Linha de implementação que compõe a lógica normal do arquivo e deve ser lida em conjunto com o bloco onde está inserida.
107 observacoes = :observacoes, Linha de implementação que compõe a lógica normal do arquivo e deve ser lida em conjunto com o bloco onde está inserida.
108 proxima_manutencao = :proxima_manutencao,Linha de implementação que compõe a lógica normal do arquivo e deve ser lida em conjunto com o bloco onde está inserida.
109 tipo_pele = :tipo_pele,Linha de implementação que compõe a lógica normal do arquivo e deve ser lida em conjunto com o bloco onde está inserida.
110 nivel_sudorese = :nivel_sudorese,Linha de implementação que compõe a lógica normal do arquivo e deve ser lida em conjunto com o bloco onde está inserida.
111 clima = :clima,Linha de implementação que compõe a lógica normal do arquivo e deve ser lida em conjunto com o bloco onde está inserida.
112 tipo_adesivo = :tipo_adesivo,Linha de implementação que compõe a lógica normal do arquivo e deve ser lida em conjunto com o bloco onde está inserida.
113 alerta_manutencao_enviado = 0,Linha de implementação que compõe a lógica normal do arquivo e deve ser lida em conjunto com o bloco onde está inserida.
114 data_alerta_manutencao = NULL");Linha de implementação que compõe a lógica normal do arquivo e deve ser lida em conjunto com o bloco onde está inserida.
115}else{Marca abertura/fechamento de bloco de código, objeto, array ou estrutura de controle.
116 $query = $pdo->prepare("UPDATE $tabela SET Centraliza o nome da tabela `tabela` em uma variável, facilitando reaproveitamento do valor nas queries do arquivo.
117 cliente = :cliente, Linha de implementação que compõe a lógica normal do arquivo e deve ser lida em conjunto com o bloco onde está inserida.
118 id_protese = :id_protese, Linha de implementação que compõe a lógica normal do arquivo e deve ser lida em conjunto com o bloco onde está inserida.
119 data_manutencao = :data_manutencao, Linha de implementação que compõe a lógica normal do arquivo e deve ser lida em conjunto com o bloco onde está inserida.
120 tipo = :tipo, Linha de implementação que compõe a lógica normal do arquivo e deve ser lida em conjunto com o bloco onde está inserida.
121 produtos_utilizados = :produtos_utilizados, Linha de implementação que compõe a lógica normal do arquivo e deve ser lida em conjunto com o bloco onde está inserida.
122 observacoes = :observacoes, Linha de implementação que compõe a lógica normal do arquivo e deve ser lida em conjunto com o bloco onde está inserida.
123 proxima_manutencao = :proxima_manutencao,Linha de implementação que compõe a lógica normal do arquivo e deve ser lida em conjunto com o bloco onde está inserida.
124 tipo_pele = :tipo_pele,Linha de implementação que compõe a lógica normal do arquivo e deve ser lida em conjunto com o bloco onde está inserida.
125 nivel_sudorese = :nivel_sudorese,Linha de implementação que compõe a lógica normal do arquivo e deve ser lida em conjunto com o bloco onde está inserida.
126 clima = :clima,Linha de implementação que compõe a lógica normal do arquivo e deve ser lida em conjunto com o bloco onde está inserida.
127 tipo_adesivo = :tipo_adesivo,Linha de implementação que compõe a lógica normal do arquivo e deve ser lida em conjunto com o bloco onde está inserida.
128 alerta_manutencao_enviado = 0,Linha de implementação que compõe a lógica normal do arquivo e deve ser lida em conjunto com o bloco onde está inserida.
129 data_alerta_manutencao = NULLLinha de implementação que compõe a lógica normal do arquivo e deve ser lida em conjunto com o bloco onde está inserida.
130 WHERE id = :id");Linha de implementação que compõe a lógica normal do arquivo e deve ser lida em conjunto com o bloco onde está inserida.
131 $query->bindValue(":id", $id);Associa um valor PHP a um parâmetro nomeado da query preparada.
132}Marca abertura/fechamento de bloco de código, objeto, array ou estrutura de controle.
133 Linha em branco usada para separar blocos e melhorar a leitura.
134$query->bindValue(":cliente", $cliente);Associa um valor PHP a um parâmetro nomeado da query preparada.
135$query->bindValue(":id_protese", $id_protese);Associa um valor PHP a um parâmetro nomeado da query preparada.
136$query->bindValue(":data_manutencao", $data_manutencao);Associa um valor PHP a um parâmetro nomeado da query preparada.
137$query->bindValue(":tipo", $tipo);Associa um valor PHP a um parâmetro nomeado da query preparada.
138$query->bindValue(":produtos_utilizados", $produtos_utilizados);Associa um valor PHP a um parâmetro nomeado da query preparada.
139$query->bindValue(":observacoes", $observacoes);Associa um valor PHP a um parâmetro nomeado da query preparada.
140$query->bindValue(":proxima_manutencao", $proxima_manutencao);Associa um valor PHP a um parâmetro nomeado da query preparada.
141$query->bindValue(":tipo_pele", $tipo_pele);Associa um valor PHP a um parâmetro nomeado da query preparada.
142$query->bindValue(":nivel_sudorese", $nivel_sudorese);Associa um valor PHP a um parâmetro nomeado da query preparada.
143$query->bindValue(":clima", $clima);Associa um valor PHP a um parâmetro nomeado da query preparada.
144$query->bindValue(":tipo_adesivo", $tipo_adesivo);Associa um valor PHP a um parâmetro nomeado da query preparada.
145$query->execute();Executa a query preparada no banco de dados.
146 Linha em branco usada para separar blocos e melhorar a leitura.
147echo 'Salvo com Sucesso';Envia saída para o navegador ou para o AJAX. O conteúdo retornado aqui precisa respeitar o contrato esperado pela tela.
148?>Fecha o bloco PHP atual para voltar à saída HTML.

Navegação entre arquivos do grupo