Created
September 1, 2016 23:02
-
-
Save viniciusss/ce07ac9950ff4dedbd29b000515bdf13 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
include("../includes/global.php"); | |
require("../includes/funcoes.inc.php"); | |
try { | |
if (isset($_FILES['dne_zip'])) { | |
geraDebugOn(); | |
define('ATUALIZAR', 'UPD'); | |
define('APAGAR', 'DEL'); | |
define('INSERIR', 'INS'); | |
if ( !in_array($_FILES['dne_zip']['type'], ['application/zip', 'application/x-zip-compressed']) ) { | |
throw new \Exception('O arquivo postado deve ser do tipo zip.'); | |
} | |
$zip = new ZipArchive(); | |
if (!$zip->open($_FILES['dne_zip']['tmp_name'])) { | |
throw new \Exception('não foi possível ler o arquivo zip corretamente'); | |
} | |
$extrairDados = function ($name) use ($zip) { | |
$content = $zip->getFromName('Delimitado/' . $name . '.TXT'); | |
if (false === $content) { | |
throw new \Exception('O arquivo ' . $name . ' não foi encontrado no arquivo'); | |
} | |
$content = trim($content); | |
if(empty($content)) { | |
return []; | |
} | |
return array_map(function ($linha) { | |
return explode('@', trim(trim($linha), '@')); | |
}, explode("\n", $content)); | |
}; | |
$dbExecuta = new Vs_Db_Executa(); | |
$getCodigo = function ($localno) use ($dbExecuta) { | |
return $dbExecuta->fetchOne("SELECT codigo FROM webpdv.municipio WHERE localno = {$localno} "); | |
}; | |
$localides = $extrairDados('DELTA_LOG_LOCALIDADE'); | |
$municipios = array_filter($localides, function ($localidade) { | |
return 'M' == $localidade[5]; | |
}); | |
$distritos = array_filter($localides, function ($localidade) { | |
return 'D' == $localidade[5] && !empty($localidade[3]); | |
}); | |
$povoados = array_filter($localides, function ($localidade) { | |
return 'P' == $localidade[5] && !empty($localidade[3]); | |
}); | |
$municipiosSemFaixaCep = array_filter($localides, function ($localidade) { | |
return '0' == $localidade[4]; | |
}); | |
$faixasCep = array_merge($distritos, $povoados, $municipiosSemFaixaCep); | |
$faixasCep = array_map(function ($municipio) { | |
return [ | |
$municipio[6] ?: $municipio[0], | |
$municipio[3], | |
$municipio[3], | |
$municipio[9], | |
isset($municipio[10]) ? $municipio[10] : $municipio[3], | |
]; | |
}, $faixasCep); | |
$faixasCep = array_merge($faixasCep, $extrairDados('DELTA_LOG_FAIXA_LOC')); | |
foreach ($municipios as $dadosMunicipio) { | |
$ativo = (APAGAR == $dadosMunicipio[9]) ? 0 : 1; | |
$dadosMunicipio[2] = g_str_limpa_string($dadosMunicipio[2]); | |
$replace = <<<SQL | |
REPLACE INTO webpdv.municipio SET | |
codigo = {$dadosMunicipio[8]}, | |
nome = '{$dadosMunicipio[2]}', | |
uf = '{$dadosMunicipio[1]}', | |
localno = '{$dadosMunicipio[0]}', | |
cep = '{$dadosMunicipio[3]}', | |
cep_inicio = NULL, | |
cep_fim = NULL, | |
usuario_atualizacao = 1231, | |
atualizacao = now(), | |
ativo = {$ativo} | |
SQL; | |
$dbExecuta->execute($replace); | |
} | |
foreach ($faixasCep as $dadosFaixaCep) { | |
$codigoIbge = $getCodigo($dadosFaixaCep[0]); | |
switch($dadosFaixaCep[3]) { | |
case INSERIR: | |
$sql = <<<SQL | |
INSERT INTO webpdv.municipio_faixa_cep SET | |
codigo = {$codigoIbge}, | |
cep_inicio = {$dadosFaixaCep[1]}, | |
cep_fim = {$dadosFaixaCep[2]}, | |
usuario_alteracao = 1231, | |
alteracao = now() | |
SQL; | |
break; | |
case APAGAR: | |
$sql = <<<SQL | |
DELETE FROM webpdv.municipio_faixa_cep mfc | |
WHERE codigo = {$codigoIbge} | |
AND cep_inicio = {$dadosFaixaCep[1]} | |
AND cep_fim = {$dadosFaixaCep[2]} | |
SQL; | |
case ATUALIZAR: | |
$cepInicio = isset($dadosFaixaCep[4]) ? $dadosFaixaCep[4] : $dadosFaixaCep[1]; | |
$sql = <<<SQL | |
UPDATE webpdv.municipio_faixa_cep SET | |
codigo = {$codigoIbge}, | |
cep_inicio = {$dadosFaixaCep[1]}, | |
cep_fim = {$dadosFaixaCep[2]}, | |
usuario_alteracao = 1231, | |
alteracao = now() | |
WHERE codigo = {$codigoIbge} | |
AND cep_inicio = {$cepInicio} | |
SQL; | |
} | |
$dbExecuta->execute($sql); | |
} | |
} | |
} catch (Exception $e) { | |
echo $e->getMessage(); | |
} | |
?> | |
<html> | |
<head> | |
<title>Importar Atualização Base Correios</title> | |
</head> | |
<body> | |
<form action="atualizar_base_correios.php" method="post" enctype="multipart/form-data"> | |
<fieldset> | |
<legend></legend> | |
<label> | |
<span>Arquivo Zip:</span> | |
<input type="file" name="dne_zip" required/> | |
</label> | |
</fieldset> | |
<input type="submit" value="Atualizar"/> | |
</form> | |
</body> | |
</html> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment