<?php
include_once("c_events_opo_card_db.php");
class c_page_cab_events_opo_card_check extends c_page_cab_events_opo_card_db
{
  public $h1='Проверка мероприятия' ;
  function panel_cmd_exec() {}

  function block_main()
  { $this->page_title() ;
    //damp_array($this->rec_event,1,-1) ;
	?><button class="v1" cmd="update_personal_status_1">Обновить список подлежащих мероприятию</button>
      <button class="v1" cmd="full_pmo_length">Задание срока жизни ОПО</button>
      <button class="v1" cmd="repair_pmo_status">Восстановить статусы сотрудников в ОПО</button>
      <button class="v1" cmd="repair_pmo_repeat">Откатить последнее повторное направление на ОПО</button>
      <button class="v1" cmd="repair_pmo_len">Заполнить срок действия ОПО</button>
      <button class="v1" cmd="check_pmo_len">Проверить срок действия ОПО</button>
      <button class="v1" cmd="cancel_status_2">Отменить некорректное направление на ОПО</button>
      <button class="v1" cmd="send_pmo_invite">Отправить уведомление о ОПО на АТА</button>
      <button class="v1" cmd="repair_hand_srok_set">Откатить последнуюю загрузку ручных данных</button>
      <br>
      <br>
      <?
      echo $this->cmd_exec_HTML_output ;

  }

  function CMD_repair_hand_srok_set()
  {  ?><form><p>Будут отменено внесение сроков действия ОПО, статусы будут возвращены в прежнее состояние</p><?
     ?><p>Дата/время операции, которую надо отменить:<input type="text" name="date_from" value="" class="datetimepicker"></p>
       <p><button class="v1" cmd="repair_hand_srok_set_apply" RO="1">Проверка</button>&nbsp;&nbsp;&nbsp;<button class="v1" cmd="repair_hand_srok_set_apply">Исправление</button></p>
       </form>
     <?
  }

  function CMD_repair_hand_srok_set_apply()
  { $event_id=$this->rec_event['pkey'] ;

    $cnt=execSQL_value('select count(pkey) from obj_site_events_pass_status where event_id='.$event_id.' and c_data>='.strtotime($_POST['date_from']).' and obj_name="На основании загруженных внешних данных ОПО" order by pkey') ;
    $recs=execSQL('select * from obj_site_events_pass where event_id='.$event_id.'') ;
    echo 'Будет обработано <strong>'.sizeof($recs).'</strong> из <strong>'.$cnt.'</strong><br>' ;
    if (sizeof($recs)) foreach($recs as $rec)
    {  $rec_date_last=execSQL_van('select * from obj_site_events_pass_status where event_id='.$event_id.' and personal_id='.$rec['personal_id'].' and data_from>0 order by pkey desc limit 1') ;
       $rec_status_last=execSQL_van('select * from obj_site_events_pass_status where event_id='.$event_id.' and personal_id='.$rec['personal_id'].' order by pkey desc limit 1') ;
       if ($rec['status']!=$rec_status_last['status_new'] or $rec_date_last['data_from']!=$rec['data_from'] or $rec_date_last['data_to']!=$rec['data_to'])
       {
           if ($rec_date_last['data_from']) echo $rec_status_last['person_name'].': будет возвращен статус <strong>'.$rec_status_last['status_new'].'</strong>, срок действия ОПО: <strong>'.date('d.m.Y',$rec_date_last['data_from']).'</strong> - <strong>'.date('d.m.Y',$rec_date_last['data_to']).'</strong><br>' ;
           else echo $rec_status_last['person_name'].': будет возвращен статус <strong>'.$rec_status_last['status_new'].'</strong><br>' ;

         if (!$_POST['RO'])
           {

               update_rec_in_table('obj_site_events_pass',['status'=>$rec_status_last['status_new'],'data_from'=>($rec_date_last['data_from'])?:0,'data_to'=>($rec_date_last['data_to'])?:0],'event_id='.$event_id.' and personal_id='.$rec['personal_id']) ;
             //execSQL_update('delete from obj_site_events_pass_status where pkey>='.$rec['pkey'].' and event_id='.$event_id.' and personal_id='.$rec['personal_id']) ;
           }
       }
       else echo $rec_status_last['person_name'].': <span class="green">Изменения не требуются</span><br>' ;
	}
  }

 function CMD_repair_hand_srok_set_apply22()
  { $event_id=$this->rec_event['pkey'] ;

    $cnt=execSQL_value('select count(pkey) from obj_site_events_pass_status where event_id='.$event_id.' and c_data>='.strtotime($_POST['date_from']).' and obj_name="На основании загруженных внешних данных ОПО" order by pkey') ;
    $recs=execSQL('select * from obj_site_events_pass_status where event_id='.$event_id.' and c_data>='.strtotime($_POST['date_from']).' and obj_name="На основании загруженных внешних данных ОПО" order by pkey limit 1') ;
    echo 'Будет обработано <strong>'.sizeof($recs).'</strong> из <strong>'.$cnt.'</strong><br>' ;
    if (sizeof($recs)) foreach($recs as $rec)
    {  $rec_history_last=execSQL_van('select * from obj_site_events_pass_status where event_id='.$event_id.' and personal_id='.$rec['personal_id'].' and pkey<'.$rec['pkey'].' and data_from>0 order by pkey desc limit 1') ;
       echo $rec['person_name'].': будет возвращен статус <strong>'.$rec['status_old'].'</strong>, срок действия ОПО: <strong>'.date('d.m.Y',$rec_history_last['data_from']).'</strong> - <strong>'.date('d.m.Y',$rec_history_last['data_to']).'</strong><br>' ;
       if (!$_POST['RO'])
       { update_rec_in_table('obj_site_events_pass',['status'=>$rec['status_old'],'data_from'=>$rec_history_last['data_from'],'data_to'=>$rec_history_last['data_to']],'event_id='.$event_id.' and personal_id='.$rec['personal_id']) ;
         execSQL_update('delete from obj_site_events_pass_status where pkey>='.$rec['pkey'].' and event_id='.$event_id.' and personal_id='.$rec['personal_id']) ;
	   }
	}
  }


  function
  CMD_cancel_status_2()
  {
      $recs=execSQL('select t1.*,t2.pkey as pass_id,
                     (select status_new from obj_site_events_pass_status where event_id=18 and personal_id=t1.personal_id order by pkey desc limit 1) as last_status 
                     from obj_site_events_pass_status t1
                     left join obj_site_events_pass t2 on t2.event_id=18 and t2.personal_id=t1.personal_id
                     where t1.event_id=18 and t2.enabled=1 and t1.status_new=2 and t1.status_old not in (1,2,22,8,9)
                     having last_status=2
                     order by t1.c_data
                     ') ;
      echo 'Найдено '._sizeof($recs).' сотрудников, требующих исправления<br>' ;
      ?><p><button class="v1" cmd="cancel_status_2" check="1">Проверка</button>&nbsp;&nbsp;&nbsp;<button class="v1" cmd="cancel_status_2" apply="1">Проверка и исправление</button></p><?

      if ($_POST['check'] or $_POST['apply'] and _sizeof($recs)) foreach($recs as $rec)
      { echo 'Сотрудник <strong>'.$rec['personal_id'].'</strong> - возвращаем в статус <strong>'.$rec['status_old'].'</strong><br>' ;
        if ($_POST['apply'])
        {
            execSQL_update('update obj_site_events_pass set status='.$rec['status_old'].' where pkey='.$rec['pass_id']) ;
            execSQL_update('delete from  obj_site_events_pass_status where pkey='.$rec['pkey']) ;
        }
      }
  }


  function CMD_check_pmo_len2()
  {   $event_id=$this->rec_event['pkey'] ;
      echo 'Ищем сотрудников, у которых есть срок действия ПМО, и у которых на текущий момент срок закончился, и нет статуса "Заблокирован по непрохождению ПМО"<br>' ;
      $recs=execSQL('select t1.* 
                     from obj_site_events_pass t1
                     where t1.event_id='.$event_id.' and t1.status!=7 and t1.enabled=1 and t1.data_to>0 and t1.data_to<'.time().' 
                     order by t1.pkey desc
                     ') ;
      echo 'Найдено '._sizeof($recs).' сотрудников, требующих исправления<br>' ;
      ?><p><button class="v1" cmd="check_pmo_len_check2">Проверка</button>&nbsp;&nbsp;&nbsp;<button class="v1" cmd="check_pmo_len_apply2">Исправление</button></p><?
        }

  function CMD_check_pmo_len_check2()
        {
     $this->CMD_check_pmo_len_apply2(array('check'=>1)) ;
        }

  function CMD_check_pmo_len_apply2($options=array())
    {   $event_id=$this->rec_event['pkey'] ;
      echo 'Ищем сотрудников, у которых есть срок действия ПМО, и у которых на текущий момент срок закончился, и нет статуса "Заблокирован по непрохождению ПМО"<br>' ;

      $recs=execSQL('select t1.* 
                          from obj_site_events_pass t1
                          where t1.event_id='.$event_id.' and t1.status!=7 and t1.enabled=1 and t1.data_to>0 and t1.data_to<'.time().' 
                          order by t1.pkey desc
                          ') ;

          echo 'Найдено '._sizeof($recs).' сотрудников, требующих исправления<br>' ;
          ?><p><button class="v1" cmd="check_pmo_len_check2">Проверка</button>&nbsp;&nbsp;&nbsp;<button class="v1" cmd="check_pmo_len_apply2">Исправление</button></p><?

          $t_min=0 ; $t_max=0 ; $arr_data_stats=[] ;
          if (_sizeof($recs)) foreach($recs as $rec)
          { echo 'Сотрудник ID'.$rec['personal_id'].' - будет переведен в статус 7 (заблокирован по непрохождению ПМО)<br>' ;
            if (!$options['check']) EVENT_PMO()->set_personal_to_status_7($rec,['time'=>$rec['data_to']]);
    }
  }


  function CMD_check_pmo_len()
  {   $rec_event=$this->rec_event;
      $event_id=$this->rec_event['pkey'] ;
      $now=getdate() ;
      $from=mktime($now['hours'],$now['minutes'],$now['seconds'],$now['mon'],$now['mday']+$rec_event['_ext_info']['pmo_before'],$now['year']);
      echo 'Ищем сотрудников, у которых срок действия ОПО заканчивается после '.date('d.m.Y H:i:s',$from).' ('.date('d.m.Y').' + '.$rec_event['_ext_info']['pmo_before'].' дн.) и у которых статус не "ОПО пройден"<br>' ;

      $recs=execSQL('select t1.pkey,t1.personal_id,t1.data_from,t1.data_to,t1.status_new,t2.status,t2.pkey as pass_id 
                     from obj_site_events_pass_status t1
                     left join  obj_site_events_pass t2 on t2.event_id=t1.event_id and t2.personal_id=t1.personal_id
                     where t1.event_id='.$event_id.' and t1.status_new in (8,9) and t1.data_to>0 and t1.data_to>'.$from.' and t2.status!=t1.status_new 
                     order by t1.pkey desc
                     ') ;
      echo 'Найдено '._sizeof($recs).' сотрудников, требующих исправления<br>' ;
      ?><p><button class="v1" cmd="check_pmo_len_check">Проверка</button>&nbsp;&nbsp;&nbsp;<button class="v1" cmd="check_pmo_len_apply">Исправление</button></p><?
  }

    function CMD_check_pmo_len_check()
  {
    $this->CMD_check_pmo_len_apply(array('check'=>1)) ;
  }

  function CMD_check_pmo_len_apply($options=array())
  {   $rec_event=$this->rec_event;
      $event_id=$this->rec_event['pkey'] ;
      $now=getdate() ;
        $from=mktime($now['hours'],$now['minutes'],$now['seconds'],$now['mon'],$now['mday']+$rec_event['_ext_info']['pmo_before'],$now['year']);
        echo 'Ищем сотрудников, у которых срок действия ОПО заканчивается после '.date('d.m.Y H:i:s',$from).' ('.date('d.m.Y').' + '.$rec_event['_ext_info']['pmo_before'].' дн.) и у которых статус не "ОПО пройден"<br>' ;

        $recs=execSQL('select t1.pkey,t1.personal_id,t1.c_data,t1.data_from,t1.data_to,t1.status_new,t2.status,t2.pkey as pass_id,
                       t3.c_data as error_date
                       from obj_site_events_pass_status t1
                       left join  obj_site_events_pass t2 on t2.event_id=t1.event_id and t2.personal_id=t1.personal_id
                       left join  obj_site_events_pass_status t3 on t3.event_id=t1.event_id and t3.personal_id=t1.personal_id and t3.pkey>t1.pkey and t3.status_old in (8,9) and t3.status_new=2
                       where t1.event_id='.$event_id.' and t1.status_new in (8,9) and t1.data_to>0 and t1.data_to>'.$from.' and t2.status!=t1.status_new
                       order by t1.pkey desc
                       ') ;
        echo 'Найдено '._sizeof($recs).' сотрудников, требующих исправления<br>' ;
        ?><p><button class="v1" cmd="check_pmo_len_check">Проверка</button>&nbsp;&nbsp;&nbsp;<button class="v1" cmd="check_pmo_len_apply">Исправление</button></p><?

        $t_min=0 ; $t_max=0 ; $arr_data_stats=[] ;
        if (_sizeof($recs)) foreach($recs as $rec)
        { $cnt_pass_to_remove=execSQL_value('select count(pkey) from obj_site_events_pass_status where event_id='.$event_id.' and personal_id='.$rec['personal_id'].' and pkey>'.$rec['pkey']) ;
          echo 'event_pass <a href="/window/events/event_pass/'.$rec['pass_id'].'/" target="_blank" class="new_window">'.$rec['pass_id'].'</a> Сотрудник '.$rec['personal_id'].': требуется смена статус <strong>'.$rec['status'].'</strong> => <strong>'.$rec['status_new'].'</strong> и удалить '.$cnt_pass_to_remove.' ошибных записей в pass_status ['.date('d.m.Y H:i',$rec['error_date']).']<br>' ;
          if ($rec['error_date']<$t_min or !$t_min) $t_min=$rec['error_date'] ;
          if ($rec['error_date']>$t_max) $t_max=$rec['error_date'] ;
          $arr_data_stats[date('d.m.Y H:i',$rec['error_date'])]++ ;

          if (!$options['check'])
          { EVENTS()->set_personal_status($event_id,$rec['personal_id'],$rec['status_new']) ;
            execSQL_update('delete from obj_site_events_pass_status where event_id='.$event_id.' and personal_id='.$rec['personal_id'].' and pkey>'.$rec['pkey']) ;
          }
          if (!$rec['data_from']) $rec['data_from']=$rec['c_data'] ;
          $now=getdate($rec['data_from']) ;
          if (!$rec['data_to']) $rec['data_to']=mktime(23,59,59,$now['mon'],$now['mday'],$now['year']+1);;
          echo 'Будет установлен срок прохождения ОПО: '.date('d.m.Y H:i:s',$rec['data_to']).' для pass_id '.$rec['pass_id'].'<br>' ;
          if (!$options['check'])
          { execSQL_update('update obj_site_events_pass set data_from='.$rec['data_from'].',data_to='.$rec['data_to'].' where pkey='.$rec['pass_id']) ;
          }
        }
      echo 'Время операций от '.date('d.m.Y H:i:s',$t_min).' до '.date('d.m.Y H:i:s',$t_max) ;
      damp_array($arr_data_stats,1,-1) ;

  }



  function CMD_repair_pmo_len()
  {   $event_id=$this->rec_event['pkey'] ;
      $recs=execSQL('select * from obj_site_events_pass where event_id='.$event_id.' and status in (8,9) and (data_from=0 or data_to=0)') ;
      echo 'Найдено '._sizeof($recs).' сотрудников, требующих задания срока действия ОПО<br>' ;
      ?><p><button class="v1" cmd="repair_pmo_len_check">Проверка</button>&nbsp;&nbsp;&nbsp;<button class="v1" cmd="repair_pmo_len_apply">Исправление</button></p><?
  }

  function CMD_repair_pmo_len_check()
  {
    $this->CMD_repair_pmo_len_apply(array('check'=>1)) ;
  }

  function CMD_repair_pmo_len_apply($options=array())
  {   $event_id=$this->rec_event['pkey'] ;
      $recs=execSQL('select * from obj_site_events_pass where event_id='.$event_id.' and status in (8,9) and (data_from=0 or data_to=0)') ;
      echo 'Найдено '._sizeof($recs).' сотрудников, требующих задания срока действия ОПО<br>' ;
      if (_sizeof($recs)) foreach($recs as $rec)
      { $rec_last=execSQL_van('select * from obj_site_events_pass_status where status_new=8 and event_id='.$event_id.' and personal_id='.$rec['personal_id'].' order by pkey desc limit 1') ;
        if (!$rec_last['data_from']) $rec_last['data_from']=$rec_last['c_data'] ;
        if (!$rec_last['data_to'])
        {   $now=getdate($rec_last['data_from']) ;
            $rec_last['data_to']=mktime(23,59,59,$now['mon'],$now['mday'],$now['year']+1);;
        }

        echo 'event_pass <a href="/window/events/event_pass/'.$rec['pkey'].'/" target="_blank" class="new_window">'.$rec['pkey'].'</a> Сотрудник '.$rec['personal_id'].': требуется задание срока действия ОПО <strong>'.date('d.m.Y',$rec_last['data_from']).'</strong> - <strong>'.date('d.m.Y',$rec_last['data_to']).'</strong><br>' ;
        if ($rec_last['data_from'] and $rec_last['data_to'] and !$options['check'])
        { execSQL_update('update obj_site_events_pass set data_from='.$rec_last['data_from'].',data_to='.$rec_last['data_to'].' where pkey='.$rec['pkey']) ;
        }
      }

  }


  function CMD_repair_pmo_repeat()
  {
    ?><form><p>Будут отмено повторное направление на ОПО, начиная с указанной даты: <input type="text" name="data_from" class="datetimepicker"></p>
        <p><button class="v1" cmd="repair_pmo_repeat_check">Проверка</button>&nbsp;&nbsp;&nbsp;<button class="v1" cmd="repair_pmo_repeat_apply">Исправление</button></p>

      </form>
    <?
  }

  function CMD_repair_pmo_repeat_check()
  {
      $this->CMD_repair_pmo_repeat_apply(array('check'=>1)) ;
  }

  function CMD_repair_pmo_repeat_apply($options=array())
  {   $time_from=strtotime($_POST['data_from']) ;
      $event_id=$this->rec_event['pkey'] ;
      $recs=execSQL('select t1.*,t2.pkey as pass_id 
                     from obj_site_events_pass_status t1
                     left join  obj_site_events_pass t2 on t2.event_id=t1.event_id and t2.personal_id=t1.personal_id 
                     where t1.event_id='.$event_id.' and t1.obj_name like "%повторному прохождению%" and t1.c_data>='.$time_from) ;
      echo 'Найдено '._sizeof($recs).' сотрудников, требующих изменения статуса<br>' ;
      if (_sizeof($recs)) foreach($recs as $rec)
      { echo 'event_pass <a href="/window/events/event_pass/'.$rec['pass_id'].'/" target="_blank" class="new_window">'.$rec['pass_id'].'</a> Сотрудник '.$rec['personal_id'].': требуется смена статус <strong>'.$rec['status_new'].'</strong> => <strong>'.$rec['status_old'].'</strong><br>' ;
        if (!$options['check'])
        { EVENTS()->set_personal_status($event_id,$rec['personal_id'],$rec['status_old']) ;
          execSQL_update('delete from obj_site_events_pass_status where pkey='.$rec['pkey']) ;
        }
        $rec_last=execSQL_van('select * from obj_site_events_pass_status where status_new=8 and event_id='.$event_id.' and personal_id='.$rec['personal_id'].' order by pkey desc limit 1') ;
        if (!$rec_last['data_from']) $rec_last['data_from']=$rec_last['c_data'] ;
        $now=getdate($rec_last['data_from']) ;
        if (!$rec_last['data_to']) $rec_last['data_to']=mktime(23,59,59,$now['mon'],$now['mday'],$now['year']+1);;
        echo 'Будет установлен срок прохождения ОПО: '.date('d.m.Y H:i:s',$rec_last['data_to']).'<br>' ;
        if (!$options['check'])
        { execSQL_update('update obj_site_events_pass set data_from='.$rec_last['data_from'].',data_to='.$rec_last['data_to'].' where pkey='.$rec['pass_id']) ;
        }
      }


  }


    function CMD_repair_pmo_status()
    {  ?><form><p>Будут проверно соответствие статусов <strong>ОПО пройден</strong> участников мероприятия "ОПО" в таблице obj_site_events_pass истории статусов из таблицы obj_site_events_pass_status</p><?
       ?><p>Неверные статусы в таблице obj_site_events_pass будут исправлены автоматически</p>
         <p>Текущий статус:<input type="text" name="status1" value="1"> Прежний статус:<input type="text" name="status2" value="8,9"></p>

         <p><button class="v1" cmd="repair_pmo_status_check">Проверка</button>&nbsp;&nbsp;&nbsp;<button class="v1" cmd="repair_pmo_status_apply">Исправление</button></p>
         </form>
       <?

  }

  function CMD_repair_pmo_status_check()
  {
    $this->CMD_repair_pmo_status_apply(array('check'=>1))   ;
  }

  function CMD_repair_pmo_status_apply($options=array())
  { $event_id=$this->rec_event['pkey'] ;
    $event_obj=EVENTS()->get_event_obj_by_id($event_id) ;
    // status1 - статут по таблице obj_site_events_pass
    // status2 - статус по таблице obj_site_events_pass_status
    $usl=array() ;
    $usl[]='t1.status!=status2' ;
    if ($_POST['status1'])  $usl[]='t1.status in ('.$_POST['status1'].')' ;
    if ($_POST['status2'])  $usl[]='status2 in ('.$_POST['status2'].')' ;
    $usl_having=implode(' and ',$usl) ;

    $recs=execSQL('select t1.pkey,t1.personal_id,t1.status as status1,
                  (select t2.status_new from obj_site_events_pass_status t2 where t2.event_id='.$event_id.' and t2.personal_id=t1.personal_id order by t2.pkey desc limit 1) as status2 
                   from obj_site_events_pass t1 
                   where t1.event_id='.$event_id.'  
                   having '.$usl_having.'
                   ') ;
   echo 'Найдено '._sizeof($recs).' сотрудников, требующих изменения статуса<br>' ;
   if (_sizeof($recs)) foreach($recs as $rec)
   {  $status=$rec['status2'] ;
      $personal_id=$rec['personal_id'] ;
      echo 'event_pass <a href="/window/events/event_pass/'.$rec['pkey'].'/" target="_blank" class="new_window">'.$rec['pkey'].'</a> Сотрудник <a href="/window/personal/person/'.$personal_id.'/">'.$personal_id.'</a>: требуется смена статус <strong>'.$rec['status1'].'</strong> => <strong>'.$status.'</strong><br>' ;

      if (!$options['check'])
      {  $rec_last=execSQL_van('select t1.*,t2.pkey as pass_id 
                                from obj_site_events_pass_status t1
                                left join  obj_site_events_pass t2 on t2.event_id=t1.event_id and t2.personal_id=t1.personal_id
                                where t1.status_new='.$status.' and t1.event_id='.$event_id.' and t1.personal_id='.$personal_id.' 
                                order by t1.pkey desc limit 1') ;

          switch($status)
           { case 8:
             case 9: EVENTS()->set_personal_status($event_id,$personal_id,$status) ;
                     $rec_last=execSQL_van('select * from obj_site_events_pass_status where status_new=8 and event_id='.$event_id.' and personal_id='.$personal_id.' order by pkey desc limit 1') ;
                     if (!$rec_last['data_from']) $rec_last['data_from']=$rec_last['c_data'] ;
                     $now=getdate($rec_last['data_from']) ;
                     if (!$rec_last['data_to']) $rec_last['data_to']=mktime(23,59,59,$now['mon'],$now['mday'],$now['year']+1);;
                     echo 'Будет установлен срок прохождения ОПО: '.date('d.m.Y H:i:s',$rec_last['data_to']).'<br>' ;
                     if (!$options['check']) execSQL_update('update obj_site_events_pass set data_from='.$rec_last['data_from'].',data_to='.$rec_last['data_to'].' where pkey='.$rec_last['pass_id']) ;
                     break ;
             case 2: EVENTS()->set_personal_status($event_id,$personal_id,$status) ;
                     break ;
             case 3:
             case 4:
             case 5: $event_obj->set_personal_to_status_3($event_id,$personal_id,array('time'=>$rec_last['c_data'],'status'=>$status,'old_status'=>$rec_last['status_old'])) ;
                     break ;
             case 6:
             case 7: $event_obj->set_personal_to_status_6($event_id,$personal_id,array('time'=>$rec_last['c_data'],'status'=>$status,'old_status'=>$rec_last['status_old'])) ;
                     break ;

           }
      }


      if (!$options['check']) EVENTS()->set_personal_status($event_id,$rec['personal_id'],$rec['status2']) ;

   }
   else echo 'Сотрудников с некорректным статусом не найдено' ;

  }

  function cmd_update_personal_status_1()
  {
	  $result=$this->obj_event->update_personal_status_1($this->rec_event['pkey'],array('debug_db'=>2)) ;
	  damp_array($result,1,-1) ;
  }

  function full_pmo_length()
     {   $recs=execSQL('select t1.*,t2.pkey as doc_pkey,t2.obj_name as doc_name,t3.pkey as scan_pkey,t3.obj_name as scan_doc,t3.event_pass_id as scan_event_pass_id,t3.data_doc as scan_data_doc,t3.data_set as scan_data_set 
                       from obj_site_events_pass t1 
                       left join obj_site_docs t2 on t2.event_id='.$GLOBALS['LS_esmo_OPO_event'].' and t2.source_pkey=t1.pkey and t2.report_code="doc/events_opo/zakluchenie" 
                       left join obj_site_scan t3 on t3.doc_id=t2.pkey and t3.personal_id=t1.personal_id and t3.status=3 
                       where t1.event_id='.$GLOBALS['LS_esmo_OPO_event'].' and t1.status in (8,9) and  t3.pkey>0 and
                           ( (t1.data_from is null or t1.data_from=0) and (t1.data_to is null or t1.data_to=0)
                              or
                             (t1.doc_id=0 or t1.doc_id is null)
                              or
                             (t1.scan_id=0 or t1.scan_id is null)
                             )
                           ',1) ;

         $rec_event=EVENTS()->get_event_by_id($GLOBALS['LS_esmo_OPO_event']) ;
         if (!$rec_event['_ext_info']['pmo_len']) { echo 'Не задан срок ОПО в настройках ОПО' ; return ; }
         //if (!$recs) { echo 'Все мероприятия обновлены' ; return ; }
         if (_sizeof($recs)) foreach($recs as $rec)
         { $from=($rec['scan_data_doc'])? $rec['scan_data_doc']:$rec['scan_data_set'] ;
           $now=getdate($from) ;
           switch($rec_event['_ext_info']['pmo_len'])
            { case 1: $to=mktime(23,59,59,$now['mon'],$now['mday'],$now['year']+1); break ;
              case 2: $to=mktime(23,59,59,$now['mon']+6,$now['mday'],$now['year']); break ;
              case 3: $to=mktime(23,59,59,$now['mon'],$now['mday'],$now['year']+2); break ;
              case 4: $to=mktime(23,59,59,$now['mon'],$now['mday'],$now['year']+2); break ;
              case -1: $to=mktime($now['hours'],$now['minutes']+10,$now['seconds'],$now['mon'],$now['mday'],$now['year']); break ;
              default: $to=mktime(23,59,59,$now['mon'],$now['mday'],$now['year']+1); break ;
            }
          echo '<strong>Сотрудник ID '.$rec['personal_id'].'</strong>:<br>' ;
          $arr_changes=array() ;
          if (!$rec['data_from'])
          { //execSQL_update('update obj_site_events_pass set data_from='.$rec['r_data'].', data_to='.$to.' where pkey='.$rec['pkey']) ;
            echo 'Срок действия ОПО: '.date('d.m.Y H:i:s',$from).' - '.date('d.m.Y H:i:s',$to).'<br>' ;
            $arr_changes['data_from']=$from ;
            $arr_changes['data_to']=$to ;
          }

          if ($rec['doc_pkey'] and !$rec['doc_id'])
          { //execSQL_update('update obj_site_events_pass set doc_id='.$rec['doc_pkey'].' where pkey='.$rec['pkey']) ;
            echo 'ID заключения ОПО: '.$rec['doc_pkey'].'<br>' ;
            $arr_changes['doc_id']=$rec['doc_pkey'] ;
          }
          if ($rec['scan_pkey'] and !$rec['scan_id'])
          { //execSQL_update('update obj_site_events_pass set scan_id='.$rec['scan_pkey'].' where pkey='.$rec['pkey']) ;
            echo 'ID скана заключения ОПО: '.$rec['scan_pkey'].'<br>' ;
            $arr_changes['scan_id']=$rec['scan_pkey'] ;
          }

          if (_sizeof($arr_changes)) update_rec_in_table('obj_site_events_pass',$arr_changes,'pkey='.$rec['pkey']) ;

          if ($rec['scan_pkey'] and !$rec['scan_event_pass_id'])
          { execSQL_update('update obj_site_scan set event_pass_id='.$rec['pkey'].' where pkey='.$rec['scan_pkey']) ;
            echo 'ID участия в ОПО: '.$rec['pkey'].'<br>' ;
          }
         }
     }


}



?>
