· 8 years ago · Jul 13, 2018, 12:22 PM
1<?php
2session_start();
3
4require_once('config.php');
5
6if (!empty($_POST) and $_POST['module'] != "") {
7 if (isset($_POST['module'])) {
8 if (isset($_POST['ip_address'])) {
9 $db_link = mysqli_connect($_POST['ip_address'],DB_USER,DB_PASSWORD);
10 switch ($_POST['module']) {
11 case 'db-check':
12 if (!$db_link)
13 echo json_encode("Não foi possÃvel conectar ao servidor");
14 else {
15 $rs = mysqli_query($db_link,"SHOW DATABASES LIKE 'ipasa_bilheteria';");
16 if (!$rs) {
17 echo json_encode("Erro ao executar o comando no banco de dados");
18 }
19 else {
20 if (mysqli_num_rows($rs) > 0) {
21 echo json_encode(array("message"=>"DB_EXISTS"));
22 }
23 else {
24 // cria o banco
25 $rs = mysqli_query($db_link,"CREATE DATABASE IF NOT EXISTS ipasa_bilheteria");
26 echo json_encode(array("message"=>"DB_SUCCESS"));
27 }
28 }
29 }
30 break;
31 case 'db-tables':
32 $db_selected = mysqli_select_db($db_link,DB_NAME);
33 if (!$db_selected) {
34 echo json_encode("Não foi possÃvel acessar o banco de dados: ".mysqli_errno($db_link) . ": " . mysqli_error($db_link));
35 break;
36 }
37 $rs = mysqli_query($db_link,"DROP TABLE IF EXISTS sec_users;");
38 if (!$rs) {
39 echo json_encode("Erro no banco de dados ".mysqli_errno($db_link) . ": " . mysqli_error($db_link));
40 break;
41 }
42 $rs = mysqli_query($db_link,"DROP TABLE IF EXISTS ingressos;");
43 if (!$rs) {
44 echo json_encode("Erro no banco de dados ".mysqli_errno($db_link) . ": " . mysqli_error($db_link));
45 break;
46 }
47 $rs = mysqli_query($db_link,"DROP TABLE IF EXISTS vendas;");
48 if (!$rs) {
49 echo json_encode("Erro no banco de dados ".mysqli_errno($db_link) . ": " . mysqli_error($db_link));
50 break;
51 }
52 $rs = mysqli_query($db_link,"DROP TABLE IF EXISTS vendas_ingressos;");
53 if (!$rs) {
54 echo json_encode("Erro no banco de dados ".mysqli_errno($db_link) . ": " . mysqli_error($db_link));
55 break;
56 }
57 $rs = mysqli_query($db_link,"DROP TABLE IF EXISTS vendas_pagamento;");
58 if (!$rs) {
59 echo json_encode("Erro no banco de dados ".mysqli_errno($db_link) . ": " . mysqli_error($db_link));
60 break;
61 }
62 $rs = mysqli_query($db_link,"DROP TABLE IF EXISTS formas_pagto;");
63 if (!$rs) {
64 echo json_encode("Erro no banco de dados ".mysqli_errno($db_link) . ": " . mysqli_error($db_link));
65 break;
66 }
67 $rs = mysqli_query($db_link,"DROP TABLE IF EXISTS ci_sessions;");
68 if (!$rs) {
69 echo json_encode("Erro no banco de dados ".mysqli_errno($db_link) . ": " . mysqli_error($db_link));
70 break;
71 }
72 $_sql = "CREATE TABLE `sec_users` (
73 login varchar(255) NOT NULL,
74 pswd varchar(32) NOT NULL,
75 name varchar(64) NOT NULL,
76 pdv_id int(11),
77 PRIMARY KEY (login)
78 ) ENGINE=InnoDB DEFAULT CHARSET=latin1";
79 $rs = mysqli_query($db_link,$_sql);
80 if (!$rs) {
81 echo json_encode("Erro ao criar tabela: ".mysqli_errno($db_link) . ": " . mysqli_error($db_link));
82 break;
83 }
84
85 $_sql = "CREATE TABLE `ingressos` (
86 `evento_id` int(11) NOT NULL,
87 `evento_nome` varchar(100) NOT NULL,
88 `ingresso_tipo_id` int(11) NOT NULL,
89 `ingresso_tipo_nome` varchar(100) NOT NULL,
90 `sequencia` decimal(6,0) NOT NULL,
91 `pdv_id` int(11),
92 `ingressos_status_id` int(11) NOT NULL,
93 `log` text,
94 `codigo_barra` varchar(11) NOT NULL,
95 `preco_venda` decimal(15,2) NOT NULL DEFAULT 0,
96 PRIMARY KEY (`evento_id`,`ingresso_tipo_id`,`sequencia`),
97 KEY `ind_codigo_barra` (`codigo_barra`)
98 ) ENGINE=InnoDB DEFAULT CHARSET=latin1";
99 $rs = mysqli_query($db_link,$_sql);
100 if (!$rs) {
101 echo json_encode("Erro ao criar tabela: ".mysqli_errno($db_link) . ": " . mysqli_error($db_link));
102 break;
103 }
104
105 $_sql = "CREATE TABLE `vendas` (
106 `venda_id` int(11) NOT NULL AUTO_INCREMENT,
107 `pdv_id` int(11) NOT NULL,
108 `data` date NOT NULL,
109 `hora` time NOT NULL,
110 `cpf` varchar(11) DEFAULT NULL,
111 `created_by` varchar(30) NOT NULL,
112 PRIMARY KEY (`venda_id`),
113 KEY `pdv_id` (`pdv_id`)
114 ) ENGINE=InnoDB DEFAULT CHARSET=latin1";
115 $rs = mysqli_query($db_link,$_sql);
116 if (!$rs) {
117 echo json_encode("Erro ao criar tabela: ".mysqli_errno($db_link) . ": " . mysqli_error($db_link));
118 break;
119 }
120
121 $_sql = "CREATE TABLE `vendas_ingressos` (
122 `venda_id` int(11) NOT NULL,
123 `evento_id` int(11) NOT NULL,
124 `ingresso_tipo_id` int(11) NOT NULL,
125 `sequencia` decimal(6,0) NOT NULL,
126 `preco_venda` decimal(15,2) NOT NULL,
127 PRIMARY KEY (`venda_id`,`evento_id`,`ingresso_tipo_id`,`sequencia`),
128 KEY `pdv_id` (`venda_id`,`evento_id`,`ingresso_tipo_id`,`sequencia`)
129 ) ENGINE=InnoDB DEFAULT CHARSET=latin1";
130 $rs = mysqli_query($db_link,$_sql);
131 if (!$rs) {
132 echo json_encode("Erro ao criar tabela: ".mysqli_errno($db_link) . ": " . mysqli_error($db_link));
133 break;
134 }
135
136 $_sql = "CREATE TABLE `vendas_pagamento` (
137 `venda_id` int(11) NOT NULL,
138 `forma_pagto_id` int(11) NOT NULL,
139 `valor` decimal(15,2) NOT NULL DEFAULT '0.00',
140 PRIMARY KEY (`venda_id`,`forma_pagto_id`),
141 KEY `forma_pagto_id` (`forma_pagto_id`)
142 ) ENGINE=InnoDB DEFAULT CHARSET=latin1";
143 $rs = mysqli_query($db_link,$_sql);
144 if (!$rs) {
145 echo json_encode("Erro ao criar tabela: ".mysqli_errno($db_link) . ": " . mysqli_error($db_link));
146 break;
147 }
148
149 $_sql = "CREATE TABLE `formas_pagto` (
150 `forma_pagto_id` int(11) NOT NULL AUTO_INCREMENT,
151 `forma_pagto` varchar(50) NOT NULL,
152 `ativo` char(1) NOT NULL DEFAULT 'S',
153 PRIMARY KEY (`forma_pagto_id`)
154 ) ENGINE=InnoDB DEFAULT CHARSET=latin1";
155 $rs = mysqli_query($db_link,$_sql);
156 if (!$rs) {
157 echo json_encode("Erro ao criar tabela: ".mysqli_errno($db_link) . ": " . mysqli_error($db_link));
158 break;
159 }
160
161 $_sql = "CREATE TABLE `ci_sessions` (
162 `id` varchar(128) NOT NULL,
163 `ip_address` varchar(45) NOT NULL,
164 `timestamp` int(10) unsigned NOT NULL DEFAULT '0',
165 `data` blob NOT NULL,
166 PRIMARY KEY (`id`),
167 KEY `ci_sessions_timestamp` (`timestamp`)
168 ) ENGINE=MyISAM DEFAULT CHARSET=utf8";
169 $rs = mysqli_query($db_link,$_sql);
170 if (!$rs) {
171 echo json_encode("Erro ao criar tabela: ".mysqli_errno($db_link) . ": " . mysqli_error($db_link));
172 break;
173 }
174
175 $_SESSION['ip_address'] = $_POST['ip_address'];
176
177 echo json_encode(true);
178 break;
179 default:
180 # code...
181 break;
182 }
183 return;
184 }
185 else {
186 // upload
187 $uploaddir = 'uploads/';
188 $uploadfile = $uploaddir . basename($_FILES['datafile']['name']);
189 $upload_error = "";
190
191 $content = file_get_contents( $_FILES['datafile']['tmp_name']);
192
193 $json = json_decode($content);
194
195 if (isset($json->header->company) and $json->header->company == COMPANY) {
196 if ($json->header->version == VERSION) {
197 $db_link = mysqli_connect($_SESSION['ip_address'],DB_USER,DB_PASSWORD);
198 $db_selected = mysqli_select_db($db_link,DB_NAME);
199
200 mysqli_query($db_link,"START TRANSACTION");
201
202 foreach ($json->sec_users as $row) {
203 $_insert = "INSERT INTO sec_users (login, pswd, name, pdv_id) VALUES ('{$row->login}','{$row->pswd}','{$row->name}', {$row->pdv_id});";
204 $rs = mysqli_query($db_link,$_insert);
205 if (!$rs) {
206 exit("Erro no banco de dados ".mysqli_errno($db_link) . ": " . mysqli_error($db_link));
207 }
208 }
209
210 foreach ($json->ingressos as $row) {
211 $_insert = "INSERT INTO ingressos (evento_id, evento_nome, ingresso_tipo_id, ingresso_tipo_nome, sequencia, pdv_id, ingressos_status_id, codigo_barra)
212 VALUES ({$row->evento_id},'{$row->evento_nome}',{$row->ingresso_tipo_id},'{$row->ingresso_tipo}',{$row->sequencia}, null, {$row->ingressos_status_id}, '{$row->codigo_barra}');";
213 $_insert = str_replace(', ,', ',null,', $_insert);
214 $rs = mysqli_query($db_link,$_insert);
215 if (!$rs) {
216 exit("Erro no banco de dados ".mysqli_errno($db_link) . ": " . mysqli_error($db_link));
217 }
218
219 }
220
221 foreach ($json->formas_pagto as $row) {
222 $_insert = "INSERT INTO formas_pagto (forma_pagto_id, forma_pagto, ativo) VALUES ({$row->forma_pagto_id},'{$row->forma_pagto}','{$row->ativo}');";
223 $rs = mysqli_query($db_link,$_insert);
224 if (!$rs) {
225 exit("Erro no banco de dados ".mysqli_errno($db_link) . ": " . mysqli_error($db_link));
226 }
227 }
228 mysqli_query($db_link,"COMMIT");
229 }
230 else
231 $upload_error = "Arquivo com versão inválida!";
232 }
233 else {
234 $upload_error = "Arquivo inválido!";
235 }
236 }
237 }
238}
239if (!empty($_GET)) {
240}
241?>
242<!doctype html>
243<html lang="pt-BR">
244<head>
245 <meta charset="utf-8" />
246 <link rel="apple-touch-icon" sizes="76x76" href="assets/img/apple-icon.png">
247 <link rel="icon" type="image/png" sizes="96x96" href="assets/img/favicon.png">
248 <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
249
250 <title>IPASA - Configuração da Bilheteria</title>
251
252 <meta content='width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0' name='viewport' />
253 <meta name="viewport" content="width=device-width" />
254
255
256 <!-- Bootstrap core CSS -->
257 <link href="../assets/css/bootstrap.min.css" rel="stylesheet" />
258
259 <!-- Animation library for notifications -->
260 <link href="../assets/css/animate.min.css" rel="stylesheet"/>
261
262 <!-- Paper Dashboard core CSS -->
263 <link href="../assets/css/paper-dashboard.css" rel="stylesheet"/>
264
265 <!-- CSS for Demo Purpose, don't include it in your project -->
266 <link href="../assets/css/demo.css" rel="stylesheet" />
267
268 <!-- Fonts and icons -->
269 <link href="http://maxcdn.bootstrapcdn.com/font-awesome/latest/css/font-awesome.min.css" rel="stylesheet">
270 <link href='https://fonts.googleapis.com/css?family=Muli:400,300' rel='stylesheet' type='text/css'>
271 <link href="../assets/css/themify-icons.css" rel="stylesheet">
272
273</head>
274<body>
275
276<div class="wrapper">
277 <div class="sidebar" data-background-color="white" data-active-color="danger">
278
279 <!--
280 Tip 1: you can change the color of the sidebar's background using: data-background-color="white | black"
281 Tip 2: you can change the color of the active button using the data-active-color="primary | info | success | warning | danger"
282 -->
283
284 <div class="sidebar-wrapper">
285 <div class="logo">
286 <img src="../assets/img/logo-full.png" width="200px"/>
287 </div>
288
289 <ul class="nav">
290 <li <?php echo !isset($_GET['page2']) ? 'class="active"' : ''?>>
291 <a href="#">
292 <i class="ti-server"></i>
293 <p>Banco de Dados</p>
294 </a>
295 </li>
296 <li <?php echo isset($_GET['page2']) ? 'class="active"' : ''?>>
297 <a href="#">
298 <i class="ti-zip"></i>
299 <p>Arquivo de Dados</p>
300 </a>
301 </li>
302 </ul>
303 </div>
304 </div>
305
306 <div class="main-panel">
307 <?php if (!isset($_GET['page2'])) :?>
308 <nav class="navbar navbar-default">
309 <div class="container-fluid">
310 <div class="navbar-header">
311 <button type="button" class="navbar-toggle">
312 <span class="sr-only">Configuração da Bilheteria</span>
313 <span class="icon-bar bar1"></span>
314 <span class="icon-bar bar2"></span>
315 <span class="icon-bar bar3"></span>
316 </button>
317 <a class="navbar-brand" href="#">Configuração da Bilheteria</a>
318 </div>
319 </div>
320 </nav>
321
322 <div class="content">
323 <div class="container-fluid">
324 <div class="row">
325 <div class="col-md-12">
326 <div class="card">
327 <div class="header">
328 <h4 class="title">Configurações do Banco de Dados</h4>
329 </div>
330 <div class="content">
331 <form>
332 <div class="row">
333 <div class="col-md-5">
334 <div class="form-group">
335 <label>Endereço IP do servidor</label>
336 <input type="text" class="form-control border-input" id="ip_address" name="ip_address" value="">
337 </div>
338 </div>
339 </div>
340 <div id="log"></div>
341 <div class="text-center">
342 <button type="button" class="btn btn-info btn-fill btn-wd" id="btn-database">Próximo <i class="ti-angle-right"></i></button>
343 </div>
344 <div class="clearfix"></div>
345 </form>
346 </div>
347 </div>
348 </div>
349
350 </div>
351 </div>
352 </div>
353 <?php else : ?>
354 <nav class="navbar navbar-default">
355 <div class="container-fluid">
356 <div class="navbar-header">
357 <button type="button" class="navbar-toggle">
358 <span class="sr-only">Arquivo de Dados</span>
359 <span class="icon-bar bar1"></span>
360 <span class="icon-bar bar2"></span>
361 <span class="icon-bar bar3"></span>
362 </button>
363 <a class="navbar-brand" href="#">Configuração da Bilheteria</a>
364 </div>
365 </div>
366 </nav>
367 <div class="content">
368 <div class="container-fluid">
369 <div class="row">
370 <div class="col-md-12">
371 <div class="card">
372 <div class="header">
373 <h4 class="title">Arquivo de Dados</h4>
374 </div>
375 <div class="content">
376 <form enctype="multipart/form-data" action="process.php?page2" method="POST">
377 <input type="hidden" name="module" id="module" value="upload"/>
378 <div class="row">
379 <div class="col-md-5">
380 <div class="form-group">
381 <label>Arquivo contendo os dados para bilhetera</label>
382 <input type="file" class="form-control border-input" id="datafile" name="datafile" value="">
383 </div>
384 </div>
385 </div>
386 <div id="log_file">
387 <?php
388 if (!empty($upload_error)) {
389 echo '<p class="text-warning">'.$upload_error.'</p>';
390 }
391 ?>
392 </div>
393 <div class="text-center">
394 <button type="submit" class="btn btn-info btn-fill btn-wd" id="btn-file">Processar <i class="ti-angle-right"></i></button>
395 </div>
396 <div class="clearfix"></div>
397 </form>
398 </div>
399 </div>
400 </div>
401
402 </div>
403 </div>
404 </div>
405 <?php endif; ?>
406
407
408 </div>
409</div>
410</body>
411
412 <!-- Core JS Files -->
413 <script src="../assets/js/jquery-1.10.2.js" type="text/javascript"></script>
414 <script src="../assets/js/bootstrap.min.js" type="text/javascript"></script>
415
416 <!-- Checkbox, Radio & Switch Plugins -->
417 <script src="../assets/js/bootstrap-checkbox-radio.js"></script>
418
419 <!-- Charts Plugin -->
420 <script src="../assets/js/chartist.min.js"></script>
421
422 <!-- Notifications Plugin -->
423 <script src="../assets/js/bootstrap-notify.js"></script>
424
425 <!-- Google Maps Plugin -->
426 <script type="text/javascript" src="https://maps.googleapis.com/maps/api/js"></script>
427
428 <!-- Paper Dashboard Core javascript and methods for Demo purpose -->
429 <script src="../assets/js/paper-dashboard.js"></script>
430
431 <script src="../assets/js/rcerqueira.js"></script>
432
433 <script type="text/javascript">
434 jQuery(document).ready(function() {
435 $('#endereco_ip').focus();
436
437 $('#btn-database').click(function(e){
438 if ($('#ip_address').val() == '') {
439 rcerqueira.showNotification('top','right','Informe o endereço IP do servidor web!','danger', 4000);
440 $('#ip_address').focus();
441 return;
442 }
443
444 $('#log').empty().append('<p class="text-info">Conectando...</p>');
445 $('#btn-database').hide();
446 $.ajax({
447 type:'POST',
448 dataType:'json',
449 data: {
450 module: 'db-check',
451 ip_address: $('#ip_address').val()
452 },
453 success: function(result) {
454 if (typeof result === 'string') {
455 alert(result);
456 $('#btn-database').show();
457 }
458 else {
459 if (result.message == 'DB_EXISTS') {
460 if (confirm('Banco de dados já existe!\n\n Deseja substituir o banco de dados?\nAtenção! Todos os dados serão apagados')) {
461 createTables();
462 }
463 else {
464 $('#log').append('<p class="text-danger">Operação cancelada pelo usuário.</p>');
465 $('#btn-database').show();
466 }
467 }
468 else if (result.message == 'DB_SUCCESS') {
469 $('#log').append('<p class="text-warning">Banco de dados criado com sucesso.</p>');
470 createTables();
471 }
472 }
473 },
474 error: function(e) {
475 $('#btn-database').show();
476 $('#log').append(JSON.stringify(e.responseText));
477 }
478 });
479 });
480 });
481
482 function createTables() {
483 $('#log').append('<p class="text-info">Criando tabelas...</p>');
484 $.ajax({
485 type:'POST',
486 dataType:'json',
487 data: {
488 module: 'db-tables',
489 ip_address: $('#ip_address').val()
490 },
491 success: function(result) {
492 if (typeof result === 'string') {
493 $('#log').append('<p class="text-danger">'+result+'</p>');
494 $('#btn-database').show();
495 }
496 else {
497 if (result) {
498 $('#log').append('<p class="text-warning">Tabelas criadas com sucesso.</p>');
499 window.location.href = '?page2';
500 }
501 }
502 },
503 error: function(e) {
504 $('#btn-database').show();
505 $('#log').append(JSON.stringify(e.responseText));
506 }
507 });
508 }
509 </script>
510
511
512</html>