<?php
include_once("i_event_opo.php");
include_once("c_esmo_magnit_pmo_card_edit_step1.php");
class c_page_cab_esmo_magnit_pmo_card_edit_step5 extends c_page_cab_esmo_magnit_pmo_card_edit_step1
{
  public $h1='Редактирование параметров ПМО - загрузка внешних данных' ;
  function block_main()
  { $this->page_title() ;
    $this->panel_upload_PMO_data() ;
  }

  function panel_upload_PMO_data()
  {
      $files=get_files_list(_DIR_EXT.'/esmo_magnit_pmo/source/') ;
      if (_sizeof($files)) foreach($files as $fname) {?><a href="<?echo hide_server_dir($fname)?>" target="_blank"><?echo basename($fname)?></a><br><?}

       ?><form action="" method="POST" enctype="multipart/form-data"><?
       include_once(_DIR_EXT.'/upload_files/panel_upload_files.php') ;
       panel_upload_files(array('extFilter'=>'xlsx','SendFormOnUploadSuccess'=>1)) ;

       ?><input type="hidden" name="cmd" value="upload_file">
         <input type="submit" class="v1" style="display:none;" cmd="upload_PMO_data_exec" value="Импортировать данные ПМО в базу"></form>
       <?

  }

  function CMD_upload_PMO_data_exec()
  {

      if ($_POST['upload_files'][0] and file_exists(_TEMP_DIR.$_POST['upload_files'][0]))
      {
          //$json_cont=file_get_contents(_TEMP_DIR.$_POST['upload_files'][0]);

          include_once(_DIR_EXT.'/esmo_gateway/i_xls_to_db_import.php') ;
          $XLS_to_DB = new i_xls_to_db_import() ;
          $XLS_to_DB->XLS_fname=hide_server_dir(_TEMP_DIR.$_POST['upload_files'][0]) ;  // /temp/0_a34d0deb97e04aa9409668dddf7666f6.xlsx
          $XLS_to_DB->row_header=1;  // заголовки - строка 1
          $XLS_to_DB->use_only_column_letter=1 ; //  в таблице использовать в качестве названий столбцов буквы A B C D
          $res=$XLS_to_DB->import() ;
          //damp_array($XLS_to_DB) ;
          //$this->setting['view_source']=1 ;
          //if ($this->setting['view_source'])
          {  ?><strong>Прочитанный файл XLS, первые 10 строк с данными</strong><?
             $recs=execSQL('select * from '.$XLS_to_DB->table.' limit 10') ;
             print_2x_arr($recs) ;
          }

          // сверяем данные файла с данными ОПО в таблице
                  $recs=execSQL('select t1.*,
                                 fl.pkey as fl_id,fl.obj_name as person_name,
                                 so.personal_id as so_id,
                                 pass_fl.pkey as fl_pass_id,pass_fl.status as fl_pass_status,pass_fl.block_data as fl_block_data,pass_fl.data_from as fl_data_from,pass_fl.data_to as fl_data_to,pass_fl.block_data as fl_block_data,pass_fl.period as fl_period, 
                                 pass_so.pkey as so_pass_id,pass_so.status as so_pass_status,pass_so.block_data as so_block_data,pass_so.data_from as so_data_from,pass_so.data_to as so_data_to,pass_so.block_data as so_block_data,pass_so.period as so_period 
                                 
                                 from '.$XLS_to_DB->table.'  t1
                                  
                                 left join obj_site_personals fl on fl.uid=t1.A
                                 left join obj_site_events_pass pass_fl on pass_fl.personal_id=fl.pkey and pass_fl.event_id='.$this->rec_event['pkey'].'
                                 
                                 left join obj_site_workers so on so.uid=t1.A
                                 left join obj_site_events_pass pass_so on pass_so.personal_id=so.personal_id and pass_so.event_id='.$this->rec_event['pkey'].'
                                ') ;




             ?><table class="basic fz_small full auto">
                <tr>
                    <th>№ строки файла</th>
                    <th>UID сотрудника</th>
                    <th>ID ФЛ</th>
                    <th>ФИО</th>
                    <th>Статус сотрудника</th>
                    <th>ID участия в мероприятии</th>
                    <th>Внешняя дата ПМО</th>
                    <th>Текущий статус ПМО</th>
                    <th>block_data</th>
                    <th>data_from</th>
                    <th>data_to</th>
                    <th>period</th>

                </tr>
          <?
          $result=[] ;
          if (_sizeof($recs)) foreach($recs as $i=>$rec)
          {
              $pass_id='' ; $pass_status=0 ; $block_data=0 ; $data_from=0 ; $data_to=0 ; $period=0 ;
              if ($rec['fl_id']) $personal_id=$rec['fl_id'] ;
              if ($rec['fl_pass_id']) $pass_id=$rec['fl_pass_id'] ;
              if ($rec['fl_pass_status']) $pass_status=$rec['fl_pass_status'] ;
              if ($rec['fl_block_data']) $block_data=$rec['fl_block_data'] ;
              if ($rec['fl_data_from']) $data_from=$rec['fl_data_from'] ;
              if ($rec['fl_data_to']) $data_to=$rec['fl_data_to'] ;
              if ($rec['fl_period']) $period=$rec['fl_period'] ;

              if ($rec['so_id']) $personal_id=$rec['so_id'] ;
              if ($rec['so_pass_id']) $pass_id=$rec['so_pass_id'] ;
              if ($rec['so_pass_status']) $pass_status=$rec['so_pass_status'] ;
              if ($rec['so_block_data']) $block_data=$rec['so_block_data'] ;
              if ($rec['so_data_from']) $data_from=$rec['so_data_from'] ;
              if ($rec['so_data_to']) $data_to=$rec['so_data_to'] ;
              if ($rec['so_period']) $period=$rec['so_period'] ;

              $rec['pass_status']=($rec['fl_pass_status'])? $rec['fl_pass_status']:$rec['so_pass_status'] ;

              // проверяем внешнюю дату ПМО
              // если внешняя дата ПМО более чем текущий день - необходимо установить срок действия ПМО в эту дату

              if ($personal_id and $pass_id)
              { if (stripos($rec['B'],'-')!==false)
                  { list($month,$day,$year)=explode('-',$rec['B']) ;
                    $year='20'.$year ;
                    $pmo_from=strtotime($day.'.'.$month.'.'.$year) ;
                  }
                  else $pmo_from=strtotime($rec['B']) ;
                // $check_data - есть срок действия ПМО менее этой даты, надо ПМО не расчитывается
                //$now=getdate() ;
                //$check_data=mktime($now['hours'],$now['minutes'],$now['seconds'],$now['mon'],$now['mday']+$this->rec_event['_ext_info']['pmo_before'],$now['year']);
                //if ($pmo_from>time())
                { echo 'Для сотрудника '.$rec['person_name'].' ID '.$personal_id.' передана дата сдачи заключения ПМО - '.date('d.m.Y',$pmo_from).', текущий статус ПМО - '.EVENT_PMO()->arr_status[$pass_status].'<br>' ;

                  //if ($pass_status!=8) /// !!! убрать ограничение, иначе не удается продлевать есть ПМО уже пройден
                  { $pass_status=8 ;
                    $pmo_ot_info=EVENT_PMO()->get_pmo_len_info_to_person($this->rec_event,$personal_id) ;
                    $now=getdate($pmo_from) ;
                    $pmo_to=mktime($now['hours'],$now['minutes'],$now['seconds'],$now['mon']+$pmo_ot_info['id'],$now['mday'],$now['year']);

                    // флаг "ignore_not_change_status" - всегда писать это действие в историю
                    EVENTS()->set_event_personal_data($this->rec_event['pkey'],$personal_id,['status'=>8,'data_from'=>$pmo_from,'data_to'=>$pmo_to],'На основании загруженных внешних данных ПМО',['ignore_not_change_status'=>1]) ;
                  }
                }
              }



              ?><tr>
                    <td><?echo $i?></td>
                    <td><?echo $rec['A']?></td>
                    <td><?echo $personal_id?></td>
                    <td><?echo $rec['person_name']?></td>
                    <td><?if ($rec['personal_id']) echo ($rec['person_status'])? 'активен':'уволен'?></td>
                    <td><?echo $pass_id?></td>
                    <td><?echo $rec['B']?><br><?echo date('d.m.Y',$pmo_from)?></td>
                    <td><?echo ($pass_status)? EVENT_PMO()->arr_status[$pass_status]:'-'?></td>
                    <td><?echo ($block_data)? date('d.m.Y',$block_data):'-'?></td>
                    <td><?echo ($data_from)? date('d.m.Y',$data_from):'-'?></td>
                    <td><?echo ($data_to)? date('d.m.Y',$data_to):'-'?></td>
                    <td><?echo ($period)? $period:'-'?></td>
                </tr><?

              if (!$rec['fl_id'] and !$rec['so_id']) $result['person_not_found']++ ;
              else
              { $result['person_found']++ ;
                if (!$pass_id) $result['pass_not_found']++ ; else $result['pass_found']++ ;
              }
          }
          ?></table><?
          damp_array($result,1,-1);




        /*  $data=json_decode($json_cont,true) ;
          echo 'Будет импортировано <strong>'._sizeof($data).'</strong> записей ВПФ<br>' ;
          if (_sizeof($data))
          {   //print_2x_arr($data);
              echo 'Очистка таблицы list_vpf - ok<br>' ;
              execSQL_update('truncate table list_vpf') ;
              echo '<strong>Импорт данных из файла</strong><br>' ;
              foreach($data as $rec)
              { unset($rec['tkey'],$rec['_reffer']) ;
                multiSQL_insert('list_vpf')->append($rec) ;

              }
              multiSQL_insert('list_vpf')->flush() ;
          }
        */
      }
  }





}
?>
