Guest User

Untitled

a guest
Jan 22nd, 2019
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 16.40 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.                  
  173. //                 $blackListProvider = new CArrayDataProvider($blackList, array(
  174. //                             'pagination' => array(
  175. //                                 'pageSize' => 20,
  176. //                             ),
  177. //                         ));
  178. //
  179. //                 $duplicadosProvider = new CArrayDataProvider($duplicadosList, array(
  180. //                             'pagination' => array(
  181. //                                 'pageSize' => 20,
  182. //                             ),
  183. //                         ));
  184.  
  185. //                 print"<h3>Lista de clientes duplicados</h3>";
  186.                  $this->widget('ext.Ts.TsGridView', array(
  187.                      'id' => 'gridCorretos',
  188.                      'type' => ' bordered condensed',
  189.                      'dataProvider' => $corretosProvider,
  190.                      'pager' => array(
  191.                          'class' => 'bootstrap.widgets.TbPager',
  192.                          'alignment' => 'right',
  193.                          'displayFirstAndLast' => true,
  194.                          'firstPageLabel' => 'Primeira',
  195.                          'lastPageLabel' => 'Última',
  196.                      ),
  197.                      'template' => "{summary}\n{exportbuttons}\n{items}\n{pager}",
  198.                      'htmlOptions' => array('style' => 'font-size: 11px; margin-top: -20px;'),
  199.                      'columns' => array(
  200.                          array('name' => 'nome', 'header' => 'Nome', 'htmlOptions' => array('width' => '35%'),),
  201.                          array('name' => 'email', 'header' => 'Email'),
  202. //                    array('name' => 'email', 'header' => 'E-mail', 'htmlOptions' => array('width' => '90px'),),
  203. //                    array('name' => 'notaNPS', 'header' => 'Nota NPS', 'htmlOptions' => array('width' => '50px', 'text-align' => 'center'),
  204. //                        'cssClassExpression' => '$data[\'corNPS\']'),
  205. //                    array('name' => 'comentario', 'header' => 'Comentário', 'htmlOptions' => array('width' => '450px'),),
  206.                      ),
  207.                  ));
  208.  
  209.  
  210.                  print"<h3>Lista de clientes duplicados</h3>";
  211.                  $this->widget('ext.Ts.TsGridView', array(
  212.                      'id' => 'gridDuplicados',
  213.                      'type' => ' bordered condensed',
  214.                      'dataProvider' => $duplicadosProvider,
  215.                      'pager' => array(
  216.                          'class' => 'bootstrap.widgets.TbPager',
  217.                          'alignment' => 'right',
  218.                          'displayFirstAndLast' => true,
  219.                          'firstPageLabel' => 'Primeira',
  220.                          'lastPageLabel' => 'Última',
  221.                      ),
  222.                      'template' => "{summary}\n{exportbuttons}\n{items}\n{pager}",
  223.                      'htmlOptions' => array('style' => 'font-size: 11px; margin-top: -20px;'),
  224.                      'columns' => array(
  225.                          array('name' => 'nome', 'header' => 'Nome', 'htmlOptions' => array('width' => '35%'),),
  226.                          array('name' => 'email', 'header' => 'Email'),
  227. //                    array('name' => 'email', 'header' => 'E-mail', 'htmlOptions' => array('width' => '90px'),),
  228. //                    array('name' => 'notaNPS', 'header' => 'Nota NPS', 'htmlOptions' => array('width' => '50px', 'text-align' => 'center'),
  229. //                        'cssClassExpression' => '$data[\'corNPS\']'),
  230. //                    array('name' => 'comentario', 'header' => 'Comentário', 'htmlOptions' => array('width' => '450px'),),
  231.                      ),
  232.                  ));
  233. ////
  234. //                 print"<h3>Lista de clientes ignorados/com erro</h3>";
  235. //                 $this->widget('ext.Ts.TsGridView', array(
  236. //                     'id' => 'gridIgnorados',
  237. //                     'type' => 'bordered condensed',
  238. //                     'dataProvider' => $blackListProvider,
  239. //                     'pager' => array(
  240. //                         'class' => 'bootstrap.widgets.TbPager',
  241. //                         'alignment' => 'right',
  242. //                         'displayFirstAndLast' => true,
  243. //                         'firstPageLabel' => 'Primeira',
  244. //                         'lastPageLabel' => 'Última',
  245. //                     ),
  246. //                     'template' => "{summary}\n{exportbuttons}\n{items}\n{pager}",
  247. //                     'htmlOptions' => array('style' => 'font-size: 11px; margin-top: -20px;'),
  248. //                     'columns' => array(
  249. //                         array('name' => 'nome', 'header' => 'Nome', 'htmlOptions' => array('width' => '35%'),),
  250. //                         array('name' => 'email', 'header' => 'Email'),
  251. ////                    array('name' => 'email', 'header' => 'E-mail', 'htmlOptions' => array('width' => '90px'),),
  252. ////                    array('name' => 'notaNPS', 'header' => 'Nota NPS', 'htmlOptions' => array('width' => '50px', 'text-align' => 'center'),
  253. ////                        'cssClassExpression' => '$data[\'corNPS\']'),
  254. ////                    array('name' => 'comentario', 'header' => 'Comentário', 'htmlOptions' => array('width' => '450px'),),
  255. //                     ),
  256. //                 ));
  257. //                 foreach ($clienteList as $key => $value) {
  258. //
  259. //                     $results = Listabranca::model()->findAll(array(
  260. //                         'condition' => 'email=:email',
  261. //                         'params' => array(':email' => $value['email']),
  262. //                             ));
  263. //
  264. //                     $count = count($results);
  265. //
  266. //                     if ($count > 0) {
  267. //                         $query = $connection->createCommand("insert into DUPLICADOS (nome, email) values ('" . $value['nome'] . '\',\'' . $value['email'] . "');")->query();
  268. //                     } else {
  269. //                         $query = $connection->createCommand("insert into LISTABRANCA (nome, email) values ('" . $value['nome'] . '\',\'' . $value['email'] . "');")->query();
  270. //                     }
  271. //                 }
  272. //
  273. //                 foreach ($blackList as $key => $value) {
  274. //
  275. //                     $query = $connection->createCommand("insert into LISTANEGRA (nome, email) values ('" . $value['nome'] . '\',\'' . $value['email'] . "');")->query();
  276. //                 }
  277.  
  278.  
  279.                  fclose($fp) or die("can't close file");
  280. //    echo CHtml::submitButton('Salvar Lista', array('class' => 'btn btn-success', 'style' => 'margin-top: 10px;'));
  281.                  ?>
  282.  
  283.             </div><!--fim da div content-->
  284.             <div style="margin-bottom: 10px;
  285.                  margin-top: 20px;
  286.                  display: inline-block;
  287.                  width: 176px;">
  288.                 <h5 style="color:#008945;">Cadastros Corretos: </h5><?php echo $corretos; ?>
  289.                 <h5 style="color:#ffc818;"><?php echo CHtml::Link('Cadastros Duplicados', array('gestor/FiltragemDuplicados', 'caminho' => $caminho)); ?></h5><?php echo $duplicados; ?>
  290.                 <h5 style="color:#e03e00;"><?php echo CHtml::link('Cadastros Ignorados', array('gestor/FiltragemIgnorados', 'caminho' => $caminho)); ?></h5><?php echo $erros; ?>
  291.                 <br>
  292.             </div>
  293.         </div>
  294.     </div>
  295. </div>
Add Comment
Please, Sign In to add comment