<?php
include_once("c_esmo_magnit_instruction_card_edit_step1.php");
class c_page_cab_esmo_magnit_instruction_card_edit_upload_status_from_xls extends c_page_cab_esmo_magnit_instruction_card_edit_step1
{
  public $h1='Редактирование параметров инструктажа - загрузка списка прошедших внешний инструктаж из xls' ;
  public $rec_doc=array();

    function block_main()
   { $this->page_title($this->h1.' - загрузка списка сотрудников, прошедших внешний инструктаж из xls') ;
     if (!sizeof($_POST['upload_files'])) $this->panel_upload_file() ;
     else $this->parse_file() ;
   }

   function panel_upload_file()
   {
       //$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>

        <strong>Пример XLS файла:</strong>: <a href="/<?echo _CLASS_?>/ext/esmo_magnit_instruction/demo/demo.xlsx" target="_blank">Скачать</a><br>
        В таблице надо первым столбцом указать список UID сотрудников, которые прошли мероприятие вне ЭСМО. ФИО сотрудников и другие данные не нужны.

        <?


   }

   function parse_file()
   {

       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) ;
           }

           //  получаем список сотрудников по UID
           // внимание, в качестве UID может быть переден как UID ФЛ так и UID СО
           $recs_personals_ids=execSQL('select t1.*,fl.pkey as fl_personal_id,so.personal_id as so_personal_id
                                          from '.$XLS_to_DB->table.'  t1
                                          left join obj_site_personals fl on fl.uid=t1.A
                                          left join obj_site_workers so on so.uid=t1.A
                                         ') ;
           $arr_personal_ids=[] ;
           if (sizeof($recs_personals_ids)) foreach ($recs_personals_ids as $rec)
           { $personal_id=($rec['fl_personal_id'])?:0 ;
             if (!$personal_id and $rec['so_personal_id']) $personal_id=$rec['so_personal_id'] ;
             $arr_personal_ids[$rec['ai_key']]=$personal_id ;
           }
           //damp_array($arr_personal_ids);

           // сверяем данные файла с данными по мероприятию
           $recs_pass=execSQL('select fl.*,
                               pass.pkey as pass_id,pass.status as pass_status,pass.enabled as pass_enabled
                               from obj_site_personals fl
                               left join obj_site_events_pass pass on pass.personal_id=fl.pkey and pass.event_id='.$this->rec_event['pkey'].'
                               where fl.pkey in ('.implode(',',$arr_personal_ids).')
                              ') ;


           $result=[] ;
           if (_sizeof($recs_personals_ids)) foreach($recs_personals_ids as $rec)
           {  $personal_id=$arr_personal_ids[$rec['ai_key']] ;
              $rec_personal_pass=(isset($recs_pass[$personal_id]))? $recs_pass[$personal_id]:[] ;
              if (!$personal_id) $result['person_not_found']++ ;
              else
              {   $result['person_found']++ ;
                  if ($rec_personal_pass['pass_id'] and $rec_personal_pass['pass_status']==7) $result['status_is_set']++ ; // сотрудники, которые уже имеют искомый статус
                  if (!$rec_personal_pass['pass_enabled']) $result['pass_disabled']++ ;

                  if ($rec_personal_pass['pass_status']!=7 or !$rec_personal_pass['pass_enabled'])
                  {
                      if (!$rec_personal_pass['pass_id']) $result['pass_not_found']++ ;
                      if ($rec_personal_pass['pass_id'] and $rec_personal_pass['pass_status']!=7) $result['status_not_found']++ ;

                      $result['personals_ids'][]=$personal_id ;
                  }
                    else  $result['pass_found']++ ;
              }
          }
           //damp_array($result);
           if ($result['person_not_found']) echo '<strong class="size20">'.$result['person_not_found'].'</strong> сотрудников не найдено по UID<br>' ;
           if ($result['person_found']) echo '<strong class="size20">'.$result['person_found'].'</strong> сотрудников найдено по UID<br>' ;
           if ($result['pass_found']) echo 'У  <strong class="size20">'.$result['pass_found'].'</strong> сотрудников, уже установлен статус "Инструктаж пройден"<br>' ;
           if ($result['pass_disabled']) echo '<strong class="size20">'.$result['pass_disabled'].'</strong> сотрудников не подлежат мероприятию, будут восстановлены в мероприятии<br>' ;
           if ($result['pass_not_found']) echo 'В мепроприятие будет добавлено <strong class="size20">'.$result['pass_not_found'].'</strong> сотрудников со статусом "Инструтаж пройден"<br>' ;
           if ($result['status_not_found']) echo 'Будет установлен статус "Инструктаж пройден" для  <strong class="size20">'.$result['status_not_found'].'</strong> сотрудников, уже добавленых в мероприятие<br>' ;
           if ($result['status_is_set']) echo 'Статус "Инструктаж пройден" уже установлен у <strong class="size20">'.$result['status_is_set'].'</strong> сотрудников<br>' ;

           if (sizeof($result['personals_ids']))
           {   ?><button class="button left v2" cmd="esmo_magnit_instruction/set_ext_status_personals" event_id="<?echo $this->rec_event['pkey']?>" personal_ids="<?echo implode(',',$result['personals_ids'])?>" status="7">Выполнить загрузку внешнего статуса</button><?
           }


           ?><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>
                 </tr>
           <?
           if (_sizeof($recs_personals_ids)) foreach($recs_personals_ids as $rec)
           {   $personal_id=$arr_personal_ids[$rec['ai_key']] ;
               $rec_personal_pass=(isset($recs_pass[$personal_id]))? $recs_pass[$personal_id]:[] ;
               ?><tr>
                     <td><?echo $rec['ai_key']?></td>
                     <td><?echo $rec['A']?></td>
                     <td><?echo $personal_id?></td>
                     <td><?echo ($personal_id)? $rec_personal_pass['obj_name']:'<span class="red">Сотрудник не найден</span>'?></td>
                     <td><?if ($personal_id) echo ($rec_personal_pass['enabled'])? 'активен':'уволен'?></td>
                     <td>
                         <? if ($personal_id and !$rec_personal_pass['pass_enabled']) echo ($rec_personal_pass['pass_id'])? '<span class="green">Будет восстановлен в мероприятии</span><br>':'<span class="green">Будет добавлен в мероприятие</span><br>' ;
                            echo ($rec_personal_pass['pass_id'])?:'-'?>
                     </td>
                     <td><?echo ($rec_personal_pass['pass_status'])? EVENT_INSTR()->arr_status[$rec_personal_pass['pass_status']]:'-'?></td>
                 </tr><?
           }
           ?></table><?
           //damp_array($result,1,-1);






         return(false) ;
       }
   }

}
?>
