<?
include_once('i_event_instruction.php') ;
class i_event_instruction2 extends i_event_instruction
{
   var $events_mode ; // переодичность инструктажа
   var $name='Вводный инструктаж' ; // переодичность инструктажа
   var $report_lessions_jurnal='report_lessions_jurnal2' ;  // ЖУРНАЛ регистрации вводного инструктажа по БДД
   var $arr_reports=array(1=>array('title'=>'Журнал регистрации вводного инструктажа по БДД','code'=>'esmo_magnit_instruction/report_lessions_jurnal2')) ;

    var $default_settings=array('mode'=>1, //  разовый
                                'type'=>2, // Инструктаж - потом удалить
                                'sanction'=>array('block_mo'=>1),
                                'message1'=>'Вам необходимо пройти вводный инструктаж',
                                'message2'=>'Вам необходимо завершить прохождение вводного инструктажа'
                               ) ;

   function panel_event_info() {$this->panel_params_info();}
   function panel_params_info()
   {   // данные по участникам мероприятия с учетом группы текущего аккаунта
       $arr_personals_status=EVENTS()->get_event_personals_status($this->rec_event['pkey']) ;
       $personals_count=array_sum($arr_personals_status) ;

       ?><table class="basic auto fz_small setting">
            <tr><th>Наименование:</th><td><?echo $this->rec_event['obj_name']?></td></tr>
            <tr><th>Переодичность:</th><td><?echo $_SESSION['ARR_events_mode'][$this->rec_event['mode']]?></td></tr>
            <tr><th>Направление на инструктаж:</th><td><?echo ($this->rec_event['_ext_info']['auto_status_2']==1)? 'Вручную':'Автоматически'?></td></tr>
            <tr><th>Дата начала мероприятия:</th><td><?echo date('d.m.Y',$this->rec_event['date_from'])?></td></tr>
            <!--<tr><th>Срок ожидания прохождения инструктажа после первого уведомления:</th><td><?echo ($this->rec_event['_ext_info']['period_to_status_7'])? $this->rec_event['_ext_info']['period_to_status_7'].' '.get_case_by_count_1_2_5($this->rec_event['_ext_info']['period_to_status_7'],'день,дня,дней'):'Нет'?></td></tr>-->
            <tr class="block_mo"><th>Блокировка МО при непрохождении инструктажа:</th><td><?echo ($this->rec_event['_ext_info']['block_mo'])? 'Да':'Нет'?></td></tr>
            <tr><th>Место мероприятия (АТП приписки участников):</th><td><?echo ($this->rec_event['_ext_info']['_group_ids'])? implode(',',$this->rec_event['_ext_info']['_group_ids']):(($this->rec_event['group_id'])? ACCOUNTS()->get_group_name($this->rec_event['group_id']):'Все АТП')?></td></tr>
            <tr><th>Условие отбора участников:</th><td><?
                    if ($this->rec_event['_ext_info']['select_personals']<=1) PERSONALS_FILTER()->get_personals_filter_info_to_item($this->rec_event['_reffer']) ;
                    if ($this->rec_event['_ext_info']['select_personals']==2) echo 'Загрузка из файла XLS' ;
             ?></td></tr>
            <tr><th>Подлежат инструктажу:</th><td><?echo $personals_count.' '.get_case_by_count_1_2_5($personals_count,'сотрудник,сотрудника,сотрудников')?></td></tr>
        </table>
        <style type="text/css">
            table.basic.setting{}
            table.basic.setting th{text-align:left;font-weight:normal;}
            table.basic.setting td{text-align:left;font-weight:bold;font-size:15px;color:black;}
            table.basic.setting td p{text-align:left;font-weight:normal;}
        </style>
       <?
   }

    function panel_params_edit($options=array())
          {    ?><div id="panel_filter">
                    <form id="sky-form" class="sky-form">
                         <fieldset>
                             <h2>Информация по мероприятию</h2><br>
                             <div class="row event_info">

                                   <section class="col col-4">
                                     <label class="label">Наименование:</label>
                                     <label class="input">
                                         <input type="text" name="filter[name]" placeholder="" value="<?echo addslashes($this->rec_event['obj_name'])?>" data-required>
                                     </label>
                                    </section>

                                    <section class="col col-4">
                                      <label class="label">Переодичность проведения инструктажа:</label>
                                      <strong><?echo $_SESSION['ARR_events_mode'][$this->rec_event['mode']]?></strong>
                                    </section>

                                    <section class="col col-4">
                                      <label class="label">Санкции:</label>
                                      <strong>Запрет прохождения МО</strong>
                                    </section>

                                    <input type="hidden" name="filter[group_id]" value="<?echo MEMBER()->cur_group_id?>">


                               </div>
                             <div class="row event_info">

                             <!--<section class="col col-4">
                                <label class="label">Срок ожидания<br>прохождения инструктажа после первого уведомления, дней:</label>
                                <label class="input">
                                    <input type="text" name="filter[period_to_status_7]" value="<?echo $this->rec_event['_ext_info']['period_to_status_7']?>"><i></i>
                                </label>
                             </section>-->


                                 <section class="col col-4">
                                      <label class="label">Дата начала:</label>
                                      <label class="input"><input type="text" name="filter[date_from]" class="datepicker" data-required value="<?echo ($this->rec_event['date_from'])? date('d.m.Y',$this->rec_event['date_from']):''?>"></label>
                                      <label class="label info"><i class="fa fa-info-circle" aria-hidden="true"></i>Все сотрудники, принятые на работу после указанной даты, должны будут пройти вводный инструктаж</label>
                             </section>


                                 <section class="col col-2">
                                   <label class="label">Направление на инструктаж</label>
                                   <label class="radio">
                                       <input type="radio" name="filter[auto_status_2]" value="1" <?if ($this->rec_event['_ext_info']['auto_status_2']==1) echo 'checked'?>><i></i> Вручную
                                   </label>
                                   <label class="radio">
                                       <input type="radio" name="filter[auto_status_2]" value="2" <?if ($this->rec_event['_ext_info']['auto_status_2']==2) echo 'checked'?>><i></i> Автоматически
                                   </label>
                                </section>

                                 <section class="col col-2">
                                   <label class="label">Отбор сотрудников</label>
                                   <label class="radio">
                                       <input type="radio" name="filter[select_personals]" value="1" <?if ($this->rec_event['_ext_info']['select_personals']<=1) echo 'checked'?>><i></i> через условия отбора
                                   </label>
                                   <label class="radio">
                                       <input type="radio" name="filter[select_personals]" value="2" <?if ($this->rec_event['_ext_info']['select_personals']==2) echo 'checked'?>><i></i> загрузка из XLS
                                   </label>
                                </section>

                             </div>

                             <div class="row event_info">

                                 <section class="col col-6">
                                    <label class="label">Уведомление до начала прохождения инструктажа</label>
                                    <label class="textarea">
                                        <textarea type="text" name="filter[message1]"><?echo $this->rec_event['_ext_info']['message1']?></textarea><i></i>
                                    </label>
                                 </section>

                                 <section class="col col-6">
                                    <label class="label">Уведомление после начала прохождения инструктажа</label>
                                    <label class="textarea">
                                        <textarea type="text" name="filter[message2]"><?echo $this->rec_event['_ext_info']['message2']?></textarea><i></i>
                                    </label>
                                 </section>

                             </div>
                             <div class="row event_info">
                                       <section class="col col-2">
                                         <label class="label">Статус мероприятия</label>
                                         <label class="checkbox">
                                             <input type="hidden" name="filter[arhive]" value="0">
                                             <input type="checkbox" name="filter[arhive]" value="1" <?if ($this->rec_event['status']==5) echo 'checked' ?>><i></i> Архив
                                         </label>
                                      </section>
                              </div>
                         </fieldset>
                        <div id="panel_buttons"><input type="submit" class="button v2" cmd="events/save_event" event_id="<?echo $this->rec_event['pkey']?>" value="Сохранить" validate="form"></div>
                     </form>
              </div><br>
            <style>
                  div.event_info strong{font-size:18px;font-weight:normal;}
                  label.label.info{color:#4CAF50;font-size:12px;line-height:1.2em;margin-top:10px;}
            </style>

            <?
          }

     // при вводном инструктаже необходимо
    function prepare_message($rec_event,$rec_event_pass,$mess_text)
       { if ($rec_event['block_from']) $mess_text.=', срок до '.date('d.m.Y',$rec_event['block_from']) ;

         $mess=array('mess_text'=>$mess_text,
               'group_id'=>MEMBER()->cur_group_id,
               'account_id'=>MEMBER()->id,
               'personal_id'=>$rec_event_pass['personal_id'],
               //'view_from'=>$rec_event['alert_from'],
               'view_from'=>time(),
               'view_to'=>$rec_event['alert_to'],
               //'max_day'=>($rec_event['_ext_info']['period_to_status_7'])? $rec_event['_ext_info']['period_to_status_7']:0,
               //'block_from'=>$rec_event['block_from'],
               'block_from'=>time(),
               'block_to'=>$rec_event['block_to'],
               //'auto_close'=>$rec_event['block_to'],
               //'view_mode'=>1, // показывать при прохождении МО
               //'block_mo'=>$rec_event['_ext_info']['block_mo'], // блокировать прохождение МО если сообщение не будет закрыто
               'source_pkey'=>$rec_event_pass['pkey'], // ID персоны в мероприяии
               'source_tkey'=>$rec_event_pass['tkey'], // ID персоны в мероприяии
               'source_obj'=>$rec_event['ext'] // объект, которые будет использоваться в эвентах
               ) ;
         return($mess) ;
       }

    function update_personal_status_1($event_id,$options=array())
    { // if (!$options['debug_db']) return(array()) ;
      FILE_LOG()->append('update_personal_status_1') ;
      ob_start() ; $alerts=array() ;  $result=array() ;
      $GLOBALS['stack_sql_stats']=1 ; $GLOBALS['sql_stats']=array() ; // $GLOBALS['debug_db']=2  ; if ($options['debug_db']) $GLOBALS['debug_db']=$options['debug_db'] ;
       $rec_event=EVENTS()->get_event_by_id($event_id) ;
      echo '<h3>Мероприятие "'.$rec_event['obj_name'].'", ID '.$rec_event['pkey'].'</h3><br>' ;

        // проверка существования таблицы $rec_event['viewer_name']
        $result=EVENTS()->event_check_existst_table($rec_event) ;
        if ($result['error']){?><div class="red"><? echo $result['error'] ?></div><?  return($result) ;}

       $ids=execSQL_Line('select distinct(pkey) from '.$rec_event['viewer_name']) ;
       if (!sizeof($ids)){?><div class="red">Пустой массив участников мероприятия</div><?  return(['error'=>'no_found_event_personals']) ;}

       FILE_LOG()->append('Подлежат участию в мероприятии: '._sizeof($ids).' сотрудников') ;

       $result=EVENTS()->add_personals_to_event($event_id,$ids,array('remove_outer'=>1)) ;

       // если в мероприятии автоперевод в "направлен на инструктаж" - направляем
       if ($rec_event['_ext_info']['auto_status_2']==2) $this->set_personal_to_status_2($event_id,'') ;

       //if ($options['debug_db']) print_2x_arr($GLOBALS['sql_stats']) ;
       //$GLOBALS['stack_sql_stats']=0 ;

       $GLOBALS['debug_db']=0  ; $text=ob_get_clean() ;
       $fname=LOGS()->reg_file_log('update_personal_status_1'.$event_id,$text) ;
       LOGS()->reg_log('update_personal_status_1','<a target=_blank href="'.$fname.'">Отчет</a> [i_event_instruction2.php]',array('data'=>$result,'reffer'=>$rec_event['_reffer'])) ;
       if (_sizeof($alerts)) echo implode('<br>',$alerts) ;
       return($result) ;
    }

    function save_org_time_to_filter($ext_info)
    {
       damp_array($ext_info,1,-1);
        $ext_info2=[] ;
       return($ext_info2) ;
    }

    function personal_pass_repair($event_id,$personal_id,$options=[])
    {/*?><strong>personal_pass_repair</strong><?*/
      //echo '$event_id='.$event_id.'<br>' ;
      //echo '$personal_id='.$personal_id.'<br>' ;
      $old_pass=execSQL_van('select * from obj_site_events_pass where event_id='.$event_id.' and personal_id='.$personal_id) ;
      $last_pass_status=execSQL_van('select * from obj_site_events_pass_status where event_id='.$event_id.' and personal_id='.$personal_id.' order by pkey desc') ;
      list($org_name_main,$org_name_second)=explode('/',$last_pass_status['person_org']) ;
      $org_name_main=trim($org_name_main) ;
      // пока рассматриваем восстановление только по основной должности
      //$rec_personals_workers=execSQL('select * from view_personals where pkey='.$personal_id) ; ;
      $rec_personal=execSQL_van('select * from view_personals where pkey='.$personal_id) ;
      //echo 'last_org_name='.$org_name_main.'<br>' ;
      //echo 'cur_org_name= '.$rec_personal['_org_name'].'<br>' ;
      //если ВЭ повторно трудоустраивается (не переводится в рамках одного АТП, а именно вновь трудоустраивается на то же АТП) ему назначался вводный инструктаж
      // назначать повторный вводный инструктаж всегда при восстановлении сотрудника
      $last_status=1 ;
      $new_status=1 ;
      if ($options['ext_status']) $new_status=$options['ext_status'] ;
      else echo $personal_id.' - восстановлен в мероприятии со статусом '.$new_status.', всегда проводим вводный инструктаж при восстановлении сотрудника<br>' ;

      /*if ($rec_personal['_org_name']==$org_name_main and !($rec_personal['working']==412 or $rec_personal['working2']==412))
      { $last_status=$old_pass['status'] ; // восстановлен в той же организации, статус не меняем
        echo $personal_id.' - восстановлен в мероприятии со статусом '.$last_status.', организация сохранена<br>' ;
      }
      else
      { $last_status=1 ;
        echo $personal_id.' - восстановлен в мероприятии со статусом '.$last_status.', смена организации<br>' ;
      }*/

      FILE_LOG()->append($personal_id.' - будет восстановлен в мероприятии со статусом '.$new_status) ;
      EVENTS()->set_event_personal_data($event_id,$personal_id,array('status'=>$new_status,'enabled'=>1),'Восстановлен в мероприятии',array('ignore_not_change_status'=>1)) ;
      // активируем сообщения
      if ($new_status!=7)
      { $rec_pass=execSQL_van('select * from obj_site_events_pass where event_id='.$event_id.' and personal_id='.$personal_id) ;
        if ($rec_pass['mess_id']) PERSONAL()->message_personal_enabled($rec_pass['mess_id']) ;
        // поиск сообщений по source_pkey и source_tkey
        $mess_ids=execSQL_line('select pkey from obj_site_personal_mess where source_pkey='.$rec_pass['pkey'].' and source_tkey='.$rec_pass['tkey'].' and status!=4') ;
        if (_sizeof($mess_ids)) foreach($mess_ids as $mess_id) PERSONAL()->message_personal_enabled($mess_id) ;
      }
	}

   // функция вызывается в отчете report_personals_in_event
   // применяем собственные условия выборки мероприятия по СО и ФЛ в отчете
    function get_usl_select_workers($event_id,$filter)
    {  $usl='' ;
       $rec_event=EVENTS()->get_event_by_id($event_id) ;
       if ($rec_event['date_from'])
       { // получаем список date_from_to_orgs на основании текущих данных по зайдствованным организациям
           /*?><h3>Фильтр отчета</h3><?
           damp_array($filter,1,-1) ;
           ?><h3>Фильтр мероприятия</h3><?
           damp_array($rec_event['_ext_info']['filter'],1,-1) ;*/
           $arr_orgs_event=array() ;
          if ($filter['group_ids'])
           {  $arr_orgs_by_group_ids=execSQL_row('select pkey,obj_name from obj_site_personals where group_id in ('.implode(',',array_keys($filter['group_ids'])).') and clss=207') ;
              if (_sizeof($arr_orgs_by_group_ids)) $arr_orgs_event=$arr_orgs_event+$arr_orgs_by_group_ids ;
           }

          if ($filter['org_ids'])
           {  $arr_orgs_by_orgs_ids=execSQL_row('select pkey,obj_name from obj_site_personals where pkey in ('.implode(',',array_keys($filter['org_ids'])).') and clss=207') ;
              if (_sizeof($arr_orgs_by_orgs_ids)) $arr_orgs_event=$arr_orgs_event+$arr_orgs_by_orgs_ids ;
           }

          /* ?><h3>arr_orgs_by_group_ids</h3><? damp_array($arr_orgs_by_group_ids,1,-1) ;
           ?><h3>arr_orgs_by_orgs_ids</h3><?damp_array($arr_orgs_by_orgs_ids,1,-1) ;
           ?><h3>arr_orgs_event</h3><?damp_array($arr_orgs_event,1,-1) ;
           /*?><h3>date_from_to_orgs</h3><?damp_array($rec_event['_ext_info']['date_from_to_orgs'],1,-1) ;*/


         if (!_sizeof($arr_orgs_event)) $usl=' (so.c_data>='.$rec_event['date_from'].' or so.job_data>='.$rec_event['date_from'].')' ;
         else
         {   ?><strong>Внимание! При формировании условия отбора сотрудников учтены индивидуальные значения времени начала мероприятия для каждой организации</strong><?
             $arr_data_from=array() ;  $_usl=array() ; $lines=array() ;
             ?><textarea style="width:100%;height:100px;overflow:scroll;"><?
             foreach($arr_orgs_event as $org_id=>$org_name)
             { $t=($rec_event['_ext_info']['date_from_to_orgs'][$org_id])? $rec_event['_ext_info']['date_from_to_orgs'][$org_id]:$rec_event['date_from'] ;
               $arr_data_from[$t][]=$org_id ;
               $lines[]='Организация '.$org_name.' - прием на работу/вхождение в должность с '.date('d.m.Y',$t) ;
             }
             /*?><h3>arr_data_from</h3><? damp_array($arr_data_from,1,-1) ;*/
             foreach($arr_data_from as $data_from=>$arr_org_ids) $_usl[]=' ((so.c_data>='.$data_from.' or so.job_data>='.$data_from.') and so.parent2 in ('.implode(',',$arr_org_ids).'))' ;
             /*?><h3>$_usl</h3><? damp_array($_usl,1,-1) ;*/
             if (_sizeof($_usl)) $usl='('.implode(' or ',$_usl).')' ;
             //echo 'usl='.$usl.'<br>' ;
             if (_sizeof($lines)) echo implode("\n",$lines) ;
             ?></textarea><?
         }
       }
       return($usl) ;
    }


}

?>
