<?php

include_once("c_client.php");
class c_page_cab_client_cars_upload_from_excel extends c_page_cab_client
{
  public $h1='Загрузка списка автомобилей из Excel' ;

 function block_main()
 { $this->page_title() ;
   if (!$this->cmd_exec_result['no_default_panel']) $this->panel_upload_promt() ;
 }

 function panel_upload_promt()
 {
     ?><div id="panel_upload_promt"><form action="" method="POST" enctype="multipart/form-data"><input type="hidden" name="cmd" value="upload_file">
      <p>Загрузите список автомобилей, используя заранее подготовленный файл Excel. <a href="<?echo _PATH_TO_EXT?>/aspmo_client/docs/demo_cars.xls">Образец файла</a><p>
      <p><strong>Внимание!</strong><p>
      <ul class="info"><li>Записи из файла будут добавлены к существующим записям базы</li>
          <li>При совпадении номера машины записи в базе будут затерты.</li>
      </ul>
      <div class=comment>Размер файла не более 1М, формат файла - Excel XLS.</div>

      <div class=buttons><input name="upload_file[]" type="file" size="50"><input type="submit" value="Загрузить файл" class=button_green>&nbsp;&nbsp;&nbsp;&nbsp;<input type="checkbox" name=read_only value="1"> Не добавлять записи в базу, только показать</div>
     </form></div><?
 }

 function CMD_upload_file()
  { //damp_array($_POST)  ;
    if (_sizeof($_FILES))
    { $recs_files=conver_FILES_to_recs($_FILES['upload_file']) ;
      if (_sizeof($recs_files[0]))
        { if ($recs_files[0]['type']=='application/vnd.ms-excel')
          { ?><h2>Загружаем данные из файла "<?echo $recs_files[0]['name']?>"</h2><?
            if ($_POST['read_only']) {?><strong>Только чтение загруженного файла</strong><?}

              $cars=$this->upload_cars_from_excel($recs_files[0]['tmp_name']) ;
              $res['Загружено из файла XLS']=_sizeof($cars) ;

              if ($_POST['read_only']) print_2x_arr($cars) ;
              else                     { $result=$this->adding_cars_from_array($cars) ;
                                         $res['Добавлено записей в базу']=$result[0] ;
                                         $res['Обновлено записей в базе']=$result[1] ;
                                         $res['Заблокировано обновление']=$result[2] ;
                                         $res['Ошибка при добавлении']=$result[3] ;

                                       }
              echo '<br><strong>Загрузка завершена</strong><br>'  ;
              damp_array($res,1,-1) ;


            return(array('type'=>'success','no_default_panel'=>1)) ;
          }
          else return(array('type'=>'error','code'=>'failed_type','text'=>'Неверный тип файла. Загрузите файл в формате Excel.')) ;
        }
      else return(array('type'=>'error','code'=>'not_uploaded_file','text'=>'Не был выбран файл')) ;
    }
    else return(array('type'=>'error','code'=>'not_uploaded_file','text'=>'Не был выбран файл')) ;
  }

   //==========================================================================================================================================================================
   // ЗАГРУЗКА АВТОМОБИЛЕЙ ИЗ EXCEL
   //==========================================================================================================================================================================

   function upload_cars_from_excel($tmp_file_name)
   { $file_name=_DIR_TO_ROOT.'/tmp/cars_'.rand(1,100).'.xls' ;  $recs = array();
     move_uploaded_file($tmp_file_name,$file_name) ;
     set_include_path(_DIR_TO_ROOT.'/AddOns/PHPExcel/');
     include_once 'PHPExcel/IOFactory.php';
     $objPHPExcel = PHPExcel_IOFactory::load($file_name);
     $objPHPExcel->setActiveSheetIndex(0);
     $aSheet = $objPHPExcel->getActiveSheet();
     if (is_object($aSheet))
     {   $rowIterator = $objPHPExcel->getActiveSheet()->getRowIterator();
         $line=1 ; $arr_row_names=array() ;
         foreach($rowIterator as $row)
         { $cellIterator = $row->getCellIterator();
           $cur_row=$row->getRowIndex() ;
           $cellIterator->setIterateOnlyExistingCells(false); // Loop all cells, even if it is not set
           $rec=array() ; $col=1 ; $_name=array() ;
           foreach ($cellIterator as $cell)
             { $value=$cell->getCalculatedValue();
               if ($cur_row==1) $arr_row_names[$cell->getColumn()]=str_replace("\n",'',$value) ;  // первая строка - заголовки
               else
               { $res_arr[$cur_row][$arr_row_names[$cell->getColumn()]]=$value ;
                 $col_name=trim($arr_row_names[$cell->getColumn()]);
                 switch($col_name)
                 { case 'Марка, Модель':        if ($value) $rec['MODEL']=$value ;  break ;
                   case 'Госномер':             if ($value) $rec['GOSNOMER']=$value ;  break ;
                   case 'Класс авто':           if ($value) $rec['KLASS']=$value ;  break ;
                   case 'Дата окончания ОСАГО': if ($value) $rec['OSAGO']=$value ;  break ;
                   case 'Дата окончания СТС':   if ($value) $rec['STS']=$value ;  break ;
                   case 'Дата окончания ТО':    if ($value) $rec['TO']=$value ;  break ;
                 }
               }
               $col++ ;
             }
          if ($line>1 and $rec['GOSNOMER']) $recs[]=$rec ;
          $line++ ;
         }
     }
     return($recs) ;
  }

  function adding_cars_from_array($recs)
  {   $cnt_added=0 ; $cnt_error=0 ; $cnt_update=0 ; $cnt_blocked=0 ;
      if (_sizeof($recs)) foreach($recs as $rec)
      { $data=array() ;
        $data['model']=$rec['MODEL'] ;
        $data['obj_name']=$rec['GOSNOMER'] ;
        $data['typ']=$rec['KLASS'] ;
        $data['e_osago']=strtotime($rec['OSAGO']) ;
        $data['e_sts']=strtotime($rec['STS']) ;
        $data['e_to']=strtotime($rec['TO']) ;
        $data['permit']=$rec['permit'] ;

        $rec_car=execSQL_van('select pkey,parent from obj_site_personals_cars where obj_name like "'.$rec['GOSNOMER'].'" and enabled=1') ;
        if (!$rec_car['pkey'])
        {   $data['clss']=361 ;
            $data['parent']=$this->client->main_org_id ;
            $id=adding_rec_to_table('obj_site_personals_cars',$data) ;
            if ($id) {?><div class="green"><strong><?echo $rec['GOSNOMER']?></strong> - успешно добавлен</div><? $cnt_added++ ; }
            else     {?><div class="red"><strong><?echo $rec['GOSNOMER']?></strong> - не удалоль добавить</div><? $cnt_error++ ;}
        }
        else if ($rec_car['parent']==$this->client->main_org_id)
        {   update_rec_in_table('obj_site_personals_cars',$data,'pkey='.$rec_car['pkey']) ;
            ?><div class="green"><strong><?echo $rec['GOSNOMER']?></strong> -  обновлен</div><?
            $cnt_update++ ;
        }
        else {?><div class="red"><strong><?echo $rec['GOSNOMER']?></strong> -  обновление заблокировано, атомобиль принадлежит другому клиенту</div><?
              $cnt_blocked++ ;
             }

      }
      return(array($cnt_added,$cnt_update,$cnt_blocked,$cnt_error)) ;

  }

}



?>
