<?
// EVENT_INSTR - на удаление, прямого обащения к классу не будет
function EVENT_QUIZ(){ if (!is_object($GLOBALS['EVENT_quiz'])) $GLOBALS['EVENT_quiz']=new i_event_quiz();return($GLOBALS['EVENT_quiz']);}
class i_event_quiz
{
   var $events_mode ;
   var $name='Контроль знаний' ;
   var $url_page_event_create='/cab/events_quiz/' ;
   var $url_page_event_card='/window/events_quiz/card/' ;
   var $report_lessions_jurnal='doc_quiz_lession_registr' ;   // стандартный журнал по собранию
   var $rec_event ;
   var $rec_lession ;

    var $default_settings=array('dyn_pass'=>1) ;

    var $arr_status=array(0=>'',
                          1=>'Подлежит проверке знаний',
                          2=>'КЗ пройден частично',
                          3=>'КЗ пройден',
                          ) ;

    var $arr_allow_days=array(0=>'Все',1=>'Нечетные',2=>'Четные') ;


function update_personal_status_1()
{
}

   function get_url_event_card($id)
   {
     return('/window/events_quiz/card/'.$id.'/') ;
   }

   // вызывается из EVENTS()->prepare_public_info_to_event
    function prepare_public_info_to_event(&$rec,$options=array())
    {
        if ($rec['_ext_info']['close_period']) $rec['_close_period']='<div>Переодичность: <strong>'.QUIZ()->arr_events_close_period[$rec['_ext_info']['close_period']].'</strong></div>' ;
        if ($rec['_ext_info']['close_status']) $rec['_close_status']='<div>Зачет: <strong>'.QUIZ()->arr_events_close_status[$rec['_ext_info']['close_status']].'</strong></div>' ;
    }


   // регситрация прохождения участника контроля знаний. Вызов происходит в менент начала сесиии МО или КЗ
   // m_event::on_event_server_check_access_success
   // Перед вызовой данной функции проверяуится условия доставки контента (медиа или КЗ)
   // - терминал в группе мероприятия
   // - текущая дата подлежит расписанию
   // - участник не находится в статусе "Мероприятие пройдено"
   //
   // 1. Проверить регистрацию участника в obj_site_events_pass. Если записи еще нет - добавляем запись со статусом 1
   // 2. Открываем новую сессию КЗ, если сессия открывается в рамках МО, указываем MO_ID
   //
   //
   //
   function register_personal_pass($rec_event,&$session_info,&$result)
   {   // проверяем, свободно ли место в сессии МО/КЗ для доведения контента
       echo 'Начинаем регистрацию мероприятия <strong>'.$rec_event['obj_name'].'</strong> [контроль знаний]<br>' ;
       //damp_array($rec_event);
       $rec_event_pass=execSQL_van('select * from obj_site_events_pass where personal_id='.$session_info['personal_id'].' and event_id='.$rec_event['pkey']) ;

       if ($session_info['content_view']['during_systolic'])
       {   echo '<div class=red>В текущей сессии позиция <strong>during_systolic</strong> уже забронирования мероприятием ID '.$session_info['content_view']['during_systolic'].'</div>' ;
           return ;
       }


       $data=array('event_id'=>$rec_event['pkey'],
                   'personal_id'=>$session_info['personal_id'],
                   'account_id'=>0,
                   'group_id'=>$session_info['group_id'],
                   'status'=>1,  // направлен на доведение контента - контент отправлен на терминал
                   ) ;

   	     if (!$rec_event_pass['pkey'])
         {	 echo '<div class=green>Сотрудник еще не учавствовал в мероприятии</div>' ;
             echo 'Регистрируем участие в мероприятии<br>' ;
   	         $rec_event_pass['pkey']=adding_rec_to_table('obj_site_events_pass',$data);
   	         LOG_JSON('mo_session')->reg('register_personal_pass','Регистрируем участие в мероприятии',array('data'=>$data)) ;
         }
   	     //else
   	     //{  echo 'Обновляем запись по участию в мероприятии<br>' ;
   		 //   update_rec_in_table('obj_site_events_pass',$data,'pkey='.$rec_event_pass['pkey']);
         //   добавить запись в историю прохождения мероприятия - терминал, группу и дату
   		 //   LOGS()->reg_log('update_personal_pass','',array('data'=>$data)) ;
   	     //}

         $rec_session_kz=array('mo_id'   =>  ($session_info['terminal_type']=='mt')? $session_info['session_id']:0,
                             'terminal_id'   =>$session_info['terminal_id'],
                             'terminal_pkey' =>$session_info['terminal_pkey'],
                             'personal_id'   =>$session_info['personal_id'],
                             'group_id'      =>$session_info['group_id'],
                             'reader'        =>$session_info['reader'],
                             'pass_id'       =>$rec_event_pass['pkey'],
                             'quiestion_ids' =>$rec_event['quiestion_ids']
                           );

         $quiz_id=QUIZ()->open_quiz_session($rec_session_kz,array('debug'=>1)) ; // id записи по проведению КЗ ;
         echo '<strong>Открываем сессию КЗ</strong>, ID='.$quiz_id.'<br>' ; damp_array($rec_session_kz,1,-1); echo '<br>' ;
         // бронируем место для вывода
         $session_info['content_view']['during_systolic']=$rec_event['pkey'] ;
         echo '<div class=green>В текущей сессии забронирована позиция <strong>during_systolic</strong></div>' ;
       // формируем данные для терминала для выполнения КЗ через терминал
       if ($GLOBALS['LS_quiz_over_terminal_app']) $result['args']['data']['quiz']=(string)$quiz_id;
       // или через фрейм сервера
       else if ($GLOBALS['LS_quiz_over_frame'])
       { $result['args']['data']['media_content']['during_systolic']['frame_src']=_PATH_TO_SITE.'/services/quiz/frame/'.$quiz_id.'/' ;
         $result['args']['data']['media_content']['during_systolic']['length']=(int) $GLOBALS['LS_quiz_session_timeout'] ;
        $result['args']['data']['media_content']['event_id']=(int) $rec_event['pkey'] ;
    }
       // обязательно возвращаем ID сессии - требуется для QUIZ()->send_email_invite
       return($quiz_id) ;
    }






















    function panel_event_info() {$this->panel_params_info();}
    function panel_params_info()
    {   // данные по участникам мероприятия с учетом группы текущего аккаунта
        $arr_personals_status=EVENTS()->get_event_personals_status($this->rec_event['pkey'],array('only_active'=>1)) ;
        $arr_personals_status_fired=EVENTS()->get_event_personals_status($this->rec_event['pkey'],array('only_fired'=>1)) ;
        //damp_array($arr_personals_status) ;
        $personals_count=array_sum($arr_personals_status) ;
        $personals_fired_count=array_sum($arr_personals_status_fired) ;
        $lession_personals_count=execSQL_value('select count(pkey) from obj_site_lession_persons where event_id='.$this->rec_event['pkey']) ;

        ?><table class="basic auto fz_small setting">
             <tr><th>Наименование:</th><td><?echo $this->rec_event['obj_name']?></td></tr>
             <tr><th>Дата/время собрания:</th><td><?echo date('d.m.Y',$this->rec_event['date_from'])?></td></tr>
             <?if ($this->allow_send_invite){?><tr><th>Приглашение на собрание:</th><td><?echo ($this->rec_event['_ext_info']['auto_status_2']==1)? 'Вручную':'Автоматически'?> (нет, вручную, автоматически)</td></tr><?}?>
             <?if ($this->allow_send_invite){?><tr><th>Дата начала уведомлений о собрании:</th><td><?echo ($this->rec_event['alert_from'])? date('d.m.Y',$this->rec_event['alert_from']):''?></td></tr><?}?>
             <tr><th>Условие отбора участников:</th><td><?echo nl2br($this->rec_event['_ext_info']['info_filter'])?></td></tr>
             <tr><th>Подлежат участию в собрании:</th><td><?echo $personals_count ; if ($personals_fired_count) echo '<div class="comment small">и еще '.$personals_fired_count.' в отложенном увольнении</div>'?></td></tr>
             <tr><th>Присутствующие на собрании:</th><td><?echo nl2br($this->rec_event['_ext_info']['message2'])?></td></tr>
             <tr><th><strong>ФАКТИЧЕСКИЕ ДАННЫЕ:</strong></th><td></td></tr>
             <tr><th>Статус собрания:</th><td><?echo $this->arr_status_lession[$this->rec_lession['status']]?></td></tr>
             <tr><th>Дата/время начала собрания:</th><td><?if ($this->rec_lession['time_from']) echo date('d.m.Y H:i',$this->rec_lession['time_from'])?></td></tr>
             <tr><th>Дата/время окончания собрания:</th><td><?if ($this->rec_lession['time_to']) echo date('d.m.Y H:i',$this->rec_lession['time_to'])?></td></tr>
             <tr><th>Число участников собрания:</th><td><?echo $lession_personals_count?></td></tr>
             <tr><th>Место проведения собрания:</th><td><?echo ACCOUNTS()->get_group_name($this->rec_lession['group_id'])?></td></tr>
         </table><br>
         <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_personal_info($rec_event)
   {   // данные по участникам мероприятия с учетом группы текущего аккаунта
       $arr_personals_status=EVENTS()->get_event_personals_status($this->rec_event['pkey']) ;
       $personals_count=array_sum($arr_personals_status) ;

       ?><div class="row event_info">
           <section class="col col-3">
                  <label class="label">Условие отбора участников</label>
                  <?echo strip_tags($rec_event['_ext_info']['info_filter'])?>
           </section>
           <section class="col col-3">
                  <label class="label">Сотрудники</label>
                  <strong><?echo $personals_count.' '.get_case_by_count_1_2_5($personals_count,'сотрудник,сотрудника,сотрудников')?></strong>
           </section>
	  </div><?
   }



    function get_count_questions()
      {
         $cnt_questions=0 ;
         $themes_ids=implode(',',$this->rec_event['_ext_info']['themes_ids']) ;
         // получаем все разделы которые внутри указанной темы/раздела или сам раздел
         if ($themes_ids)
         { $rasdel_ids=execSQL_line('select pkey from quiz_themes where pkey in ('.$themes_ids.') or parent1 in ('.$themes_ids.') or parent2 in ('.$themes_ids.')  or parent3 in ('.$themes_ids.')  or parent4 in ('.$themes_ids.')  or parent5 in ('.$themes_ids.')  or parent6 in ('.$themes_ids.')  or parent7 in ('.$themes_ids.')  or parent8 in ('.$themes_ids.') or parent9 in ('.$themes_ids.')',0,1) ;
           if (_sizeof($rasdel_ids)) $cnt_questions=execSQL_value('select count(pkey) from quiz_questions where parent in ('.implode(',',$rasdel_ids).')') ;
         }
         return($cnt_questions) ;
      }

}

?>
