Guest User

Untitled

a guest
Jan 22nd, 2019
166
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 16.42 KB | None | 0 0
  1. <?php
  2. $this->pageTitle = Yii::app()->name;
  3. $this->titulo = "Lista Arquivo CSV";
  4. $this->barraSuperior = true;
  5. ?>
  6.  
  7. <div class="row-fluid">
  8.     <div class="offset-campanha">
  9.         <div class="white-box">
  10.             <div class="white-box-title">
  11.                 <h3>Relatório</h3>
  12.                 <h5></h5>
  13.             </div>
  14.             <div class="white-box-content" style="display: inline-block;
  15.                  float: right;
  16.                  width: 660px;">
  17.                  <?php
  18.                  Yii::import('ext.GUtils.GUtils');
  19.                  $connection = Yii::app()->db;
  20.                  ini_set("max_execution_time", 60);
  21.  
  22.                  // Define uma função que poderá ser usada para validar e-mails usando regexp
  23.                  function validaEmail($mail) {
  24.                      if (preg_match("/^([[:alnum:]_.-]){3,}@([[:lower:][:digit:]_.-]{3,})(\.[[:lower:]]{2,3})(\.[[:lower:]]{2})?$/", $mail)) {
  25.                          return true;
  26.                      } else {
  27.                          return false;
  28.                      }
  29.                  }
  30.  
  31.                  $clienteList = array();
  32.                  $blackList = array();
  33.                  $duplicadosList = array();
  34.                  $csv_line = array();
  35.  
  36.                  $ic = 0;
  37.                  $id = 0;
  38.                  $ie = 0;
  39.                  $index = 0;
  40.                  $index2 = 0;
  41.                  $count = 0;
  42.                  $erros = 0;
  43.                  $corretos = 0;
  44.                  $duplicados = 0;
  45.  
  46.                  $fp = fopen(Yii::getPathOfAlias('webroot') . '/csvUpload/' . $caminho, 'r') or die("Não foi possível abrir o arquivo.");
  47.  
  48.  
  49.                  while ($csv_line1 = fgetcsv($fp, 1024, ';')) {
  50.                      $csv_line[$index][1] = trim($csv_line1[1]);
  51.                      $csv_line[$index][0] = $csv_line1[0];
  52.                      $index = $index + 1;
  53.                  }
  54.  
  55.                  while ($index2 < $index) {
  56.                      //$csv_line[$index2][0] = trim($csv_line1[$index2][0]);
  57.                      //$csv_line[$index2][1] = $csv_line1[$index2][1];
  58.  
  59.                      if ($csv_line[$index2][1] == validaEmail(trim($csv_line[$index2][1]))) {
  60.  
  61.                          if (!(strstr(trim($csv_line[$index2][1]), "@gmail.com.br")) && !(strstr(trim($csv_line[$index2][1]), "@hotmail.com.br"))) {
  62.  
  63.                              $csv_line[$index2][0] = GUtils::normalizarNome($csv_line[$index2][0]);
  64.  
  65.                              if (preg_match("/^[_a-zA-Z0-9-.áàâãÁÀÂÃéêÉÊíÍóôöÖÓÔúüÚÜçÇ\s]*$/i", $csv_line[$index2][0])) {
  66.  
  67.                                  $results = Listabranca::model()->findAll(array(
  68.                                      'condition' => 'email=:email',
  69.                                      'params' => array(':email' => $csv_line[$index2][1]),
  70.                                          ));
  71.                                  $count = count($results);
  72.  
  73.                                  if ($count > 0) {
  74.                                      $duplicadosList[$id]['id'] = $id;
  75.                                      $duplicadosList[$id]['email'] = $csv_line[$index2][1];
  76.                                      $duplicadosList[$id]['nome'] = $csv_line[$index2][0];
  77.                                      $duplicados = $duplicados + 1;
  78.                                      $query = $connection->createCommand("insert into DUPLICADOS (nome, email) values ('" . $duplicadosList[$id]['nome'] . '\',\'' . $duplicadosList[$id]['email'] . "');")->query();
  79.                                      $id = $id + 1;
  80.                                  } else {
  81.                                      $clienteList[$ic]['id'] = $ic;
  82.                                      $clienteList[$ic]['email'] = $csv_line[$index2][1];
  83.                                      $clienteList[$ic]['nome'] = $csv_line[$index2][0];
  84.                                      $corretos = $corretos + 1;
  85.                                      $query = $connection->createCommand("insert into LISTABRANCA (nome, email) values ('" . $clienteList[$ic]['nome'] . '\',\'' . $clienteList[$ic]['email'] . "');")->query();
  86.                                      $ic = $ic + 1;
  87.                                  }
  88.                              } else {
  89.  
  90.                                  $results = Listanegra::model()->findAll(array(
  91.                                      'condition' => 'email=:email',
  92.                                      'params' => array(':email' => $csv_line[$index2][1]),
  93.                                          ));
  94.  
  95.                                  $count = count($results);
  96.  
  97.                                  if ($count > 0) {
  98.                                      $duplicadosList[$id]['id'] = $id;
  99.                                      $duplicadosList[$id]['email'] = $csv_line[$index2][1];
  100.                                      $duplicadosList[$id]['nome'] = $csv_line[$index2][0];
  101.                                      $duplicados = $duplicados + 1;
  102.                                      $query = $connection->createCommand("insert into DUPLICADOS (nome, email) values ('" . $duplicadosList[$id]['nome'] . '\',\'' . $duplicadosList[$id]['email'] . "');")->query();
  103.                                      $id = $id + 1;
  104.                                  } else {
  105.                                      $blackList[$ie]['id'] = $ie;
  106.                                      $blackList[$ie]['email'] = $csv_line[$index2][1];
  107.                                      $blackList[$ie]['nome'] = $csv_line[$index2][0];
  108.                                      $erros = $erros + 1;
  109.                                      $query = $connection->createCommand("insert into LISTANEGRA (nome, email) values ('" . $blackList[$ie]['nome'] . '\',\'' . $blackList[$ie]['email'] . "');")->query();
  110.                                      $ie = $ie + 1;
  111.                                  }
  112.                              }
  113.                          } else {
  114.  
  115.                              $results = Listanegra::model()->findAll(array(
  116.                                  'condition' => 'email=:email',
  117.                                  'params' => array(':email' => $csv_line[$index2][1]),
  118.                                      ));
  119.  
  120.                              $count = count($results);
  121.  
  122.                              if ($count > 0) {
  123.                                  $duplicadosList[$id]['id'] = $id;
  124.                                  $duplicadosList[$id]['email'] = $csv_line[$index2][1];
  125.                                  $duplicadosList[$id]['nome'] = $csv_line[$index2][0];
  126.                                  $duplicados = $duplicados + 1;
  127.                                  $query = $connection->createCommand("insert into DUPLICADOS (nome, email) values ('" . $duplicadosList[$id]['nome'] . '\',\'' . $duplicadosList[$id]['email'] . "');")->query();
  128.                                  $id = $id + 1;
  129.                              } else {
  130.                                  $blackList[$ie]['id'] = $ie;
  131.                                  $blackList[$ie]['email'] = $csv_line[$index2][1];
  132.                                  $blackList[$ie]['nome'] = $csv_line[$index2][0];
  133.                                  $erros = $erros + 1;
  134.                                  $query = $connection->createCommand("insert into LISTANEGRA (nome, email) values ('" . $blackList[$ie]['nome'] . '\',\'' . $blackList[$ie]['email'] . "');")->query();
  135.                                  $ie = $ie + 1;
  136.                              }
  137.                          }
  138.                      } else {
  139.  
  140.                          $results = Listanegra::model()->findAll(array(
  141.                              'condition' => 'email=:email',
  142.                              'params' => array(':email' => $csv_line[$index2][1]),
  143.                                  ));
  144.  
  145.                          $count = count($results);
  146.  
  147.                          if ($count > 0) {
  148.                              $duplicadosList[$id]['id'] = $id;
  149.                              $duplicadosList[$id]['email'] = $csv_line[$index2][1];
  150.                              $duplicadosList[$id]['nome'] = $csv_line[$index2][0];
  151.                              $duplicados = $duplicados + 1;
  152.                              $query = $connection->createCommand("insert into DUPLICADOS (nome, email) values ('" . $duplicadosList[$id]['nome'] . '\',\'' . $duplicadosList[$id]['email'] . "');")->query();
  153.                              $id = $id + 1;
  154.                          } else {
  155.                              $blackList[$ie]['id'] = $ie;
  156.                              $blackList[$ie]['email'] = $csv_line[$index2][1];
  157.                              $blackList[$ie]['nome'] = $csv_line[$index2][0];
  158.                              $erros = $erros + 1;
  159.                              $query = $connection->createCommand("insert into LISTANEGRA (nome, email) values ('" . $blackList[$ie]['nome'] . '\',\'' . $blackList[$ie]['email'] . "');")->query();
  160.                              $ie = $ie + 1;
  161.                          }
  162.                      }
  163.  
  164.                      $index2 = $index2 + 1;
  165.                  }
  166.  
  167. //                 $corretosProvider = new CArrayDataProvider($clienteList, array(
  168. //                             'pagination' => array(
  169. //                                 'pageSize' => 20,
  170. //                             ),
  171. //                         ));
  172. //                 $blackListProvider = new CArrayDataProvider($blackList, array(
  173. //                             'pagination' => array(
  174. //                                 'pageSize' => 20,
  175. //                             ),
  176. //                         ));
  177. //
  178.                  $duplicadosProvider = new CArrayDataProvider($duplicadosList, array(
  179.                              'pagination' => array(
  180.                                  'pageSize' => 20,
  181.                              ),
  182.                          ));
  183.  
  184. //                 print"<h3>Lista de clientes corretos</h3>";
  185. //                 $this->widget('ext.Ts.TsGridView', array(
  186. //                     'id' => 'gridCorretos',
  187. //                     'type' => ' bordered condensed',
  188. //                     'dataProvider' => $corretosProvider,
  189. //                     'pager' => array(
  190. //                         'class' => 'bootstrap.widgets.TbPager',
  191. //                         'alignment' => 'right',
  192. //                         'displayFirstAndLast' => true,
  193. //                         'firstPageLabel' => 'Primeira',
  194. //                         'lastPageLabel' => 'Última',
  195. //                     ),
  196. //                     'template' => "{summary}\n{exportbuttons}\n{items}\n{pager}",
  197. //                     'htmlOptions' => array('style' => 'font-size: 11px; margin-top: -20px;'),
  198. //                     'columns' => array(
  199. //                         array('name' => 'nome', 'header' => 'Nome', 'htmlOptions' => array('width' => '35%'),),
  200. //                         array('name' => 'email', 'header' => 'Email'),
  201. ////                    array('name' => 'email', 'header' => 'E-mail', 'htmlOptions' => array('width' => '90px'),),
  202. ////                    array('name' => 'notaNPS', 'header' => 'Nota NPS', 'htmlOptions' => array('width' => '50px', 'text-align' => 'center'),
  203. ////                        'cssClassExpression' => '$data[\'corNPS\']'),
  204. ////                    array('name' => 'comentario', 'header' => 'Comentário', 'htmlOptions' => array('width' => '450px'),),
  205. //                     ),
  206. //                 ));
  207.  
  208.  
  209.                  print"<h3>Lista de clientes duplicados</h3>";
  210.                  $this->widget('ext.Ts.TsGridView', array(
  211.                      'id' => 'gridDuplicados',
  212.                      'type' => ' bordered condensed',
  213.                      'dataProvider' => $duplicadosProvider,
  214.                      'pager' => array(
  215.                          'class' => 'bootstrap.widgets.TbPager',
  216.                          'alignment' => 'right',
  217.                          'displayFirstAndLast' => true,
  218.                          'firstPageLabel' => 'Primeira',
  219.                          'lastPageLabel' => 'Última',
  220.                      ),
  221.                      'template' => "{summary}\n{exportbuttons}\n{items}\n{pager}",
  222.                      'htmlOptions' => array('style' => 'font-size: 11px; margin-top: -20px;'),
  223.                      'columns' => array(
  224.                          array('name' => 'nome', 'header' => 'Nome', 'htmlOptions' => array('width' => '35%'),),
  225.                          array('name' => 'email', 'header' => 'Email'),
  226. //                    array('name' => 'email', 'header' => 'E-mail', 'htmlOptions' => array('width' => '90px'),),
  227. //                    array('name' => 'notaNPS', 'header' => 'Nota NPS', 'htmlOptions' => array('width' => '50px', 'text-align' => 'center'),
  228. //                        'cssClassExpression' => '$data[\'corNPS\']'),
  229. //                    array('name' => 'comentario', 'header' => 'Comentário', 'htmlOptions' => array('width' => '450px'),),
  230.                      ),
  231.                  ));
  232. ////
  233. //                 print"<h3>Lista de clientes ignorados/com erro</h3>";
  234. //                 $this->widget('ext.Ts.TsGridView', array(
  235. //                     'id' => 'gridIgnorados',
  236. //                     'type' => 'bordered condensed',
  237. //                     'dataProvider' => $blackListProvider,
  238. //                     'pager' => array(
  239. //                         'class' => 'bootstrap.widgets.TbPager',
  240. //                         'alignment' => 'right',
  241. //                         'displayFirstAndLast' => true,
  242. //                         'firstPageLabel' => 'Primeira',
  243. //                         'lastPageLabel' => 'Última',
  244. //                     ),
  245. //                     'template' => "{summary}\n{exportbuttons}\n{items}\n{pager}",
  246. //                     'htmlOptions' => array('style' => 'font-size: 11px; margin-top: -20px;'),
  247. //                     'columns' => array(
  248. //                         array('name' => 'nome', 'header' => 'Nome', 'htmlOptions' => array('width' => '35%'),),
  249. //                         array('name' => 'email', 'header' => 'Email'),
  250. ////                    array('name' => 'email', 'header' => 'E-mail', 'htmlOptions' => array('width' => '90px'),),
  251. ////                    array('name' => 'notaNPS', 'header' => 'Nota NPS', 'htmlOptions' => array('width' => '50px', 'text-align' => 'center'),
  252. ////                        'cssClassExpression' => '$data[\'corNPS\']'),
  253. ////                    array('name' => 'comentario', 'header' => 'Comentário', 'htmlOptions' => array('width' => '450px'),),
  254. //                     ),
  255. //                 ));
  256. //                 foreach ($clienteList as $key => $value) {
  257. //
  258. //                     $results = Listabranca::model()->findAll(array(
  259. //                         'condition' => 'email=:email',
  260. //                         'params' => array(':email' => $value['email']),
  261. //                             ));
  262. //
  263. //                     $count = count($results);
  264. //
  265. //                     if ($count > 0) {
  266. //                         $query = $connection->createCommand("insert into DUPLICADOS (nome, email) values ('" . $value['nome'] . '\',\'' . $value['email'] . "');")->query();
  267. //                     } else {
  268. //                         $query = $connection->createCommand("insert into LISTABRANCA (nome, email) values ('" . $value['nome'] . '\',\'' . $value['email'] . "');")->query();
  269. //                     }
  270. //                 }
  271. //
  272. //                 foreach ($blackList as $key => $value) {
  273. //
  274. //                     $query = $connection->createCommand("insert into LISTANEGRA (nome, email) values ('" . $value['nome'] . '\',\'' . $value['email'] . "');")->query();
  275. //                 }
  276.  
  277.  
  278.                  fclose($fp) or die("can't close file");
  279. //    echo CHtml::submitButton('Salvar Lista', array('class' => 'btn btn-success', 'style' => 'margin-top: 10px;'));
  280.                  ?>
  281.  
  282.             </div><!--fim da div content-->
  283.             <div style="margin-bottom: 10px;
  284.                  margin-top: 20px;
  285.                  display: inline-block;
  286.                  width: 176px;">
  287.                 <h5 style="color:#008945;"><?php echo CHtml::Link('Cadastros Corretos', array('gestor/FiltragemCorretos', 'caminho' => $caminho)); ?></h5><?php echo $corretos; ?>
  288.                 <h5 style="color:#ffc818;">Cadastros Duplicados: </h5><?php echo $duplicados; ?>
  289.                 <h5 style="color:#e03e00;"><?php echo CHtml::link('Cadastros Ignorados', array('gestor/FiltragemIgnorados', 'caminho' => $caminho)); ?></h5><?php echo $erros; ?>
  290.                 <br>
  291.             </div>
  292.         </div>
  293.     </div>
  294. </div>
Add Comment
Please, Sign In to add comment