<?php
include_once("c_personal_person_quiz.php");
class c_page_cab_personal_person_quiz_plan extends c_page_cab_personal_person_quiz
{
 public $h1='Карточка сотрудника - контроль знаний - план КЗ' ;

 function block_main()
 { //$this->page_title() ;
   $this->panel_report() ;
 }

 function panel_report()
 {
    // сначала задаем все вопросы из раздела с максимальным баллом
    // потом необходимо переспоросить XX вопросов из тех, что были неправильно отвечены. N вопросов применяется применительно к переуду
    // когда освобождается место под вопросы добавляюсся вопросы из темы с меньшим приоритем


    include_once(_DIR_EXT.'/quiz/report_quiz_results.php') ;
    // получаем все темы КЗ, которые имеют условия отбора сотрудников
    $recs_themes_all=execSQL('select * from quiz_themes') ;
    $recs_themes=execSQL('select * from quiz_themes where viewer_name!=""') ;
    $arr_allow_themes_ids=[] ;
    // 1-й этап - отсеиваем темы, в которые сотрудник точно никак не попадает
    if (_sizeof($recs_themes)) foreach($recs_themes as $rec_theme)
    {   $res=EVENTS()->check_select_filter_to_personal($rec_theme['filter'],$this->rec_personal) ;
        if ($res['ball'])
        {
            $arr_allow_themes_ids[]=$rec_theme['pkey'] ;
            echo '<div class="green">Тема <strong>'.$rec_theme['obj_name'].'</strong> одобрена, балл '.$res['ball'].'</div>' ;
            $recs_themes_all[$rec_theme['pkey']]['ball']=$res['ball'] ;

        }
        //else echo '<div class="red">Тема <strong>'.$rec_theme['obj_name'].'</strong> отклонена, балл '.$res['ball'].'</div>' ;

    }
   // 2-й этап - получаем все вопросы по этим темам
    $arr_results=[] ; $arr_results_correct=[] ; $arr_results_uncorrect=[] ; $arr_results_last_correct=[] ;$arr_results_last_uncorrect=[] ; $arr_results_last_status_by_section=[] ;
    $recs_results=execSQL('select t1.pkey,t1.question_id,t1.correct,
                           t2.parent1,t2.parent2,t2.parent3,t2.parent4,t2.parent5,t2.parent6,t2.parent7,t2.parent8,t2.parent9  
                           from quiz_result t1
                           left join quiz_questions t2 on t2.pkey=t1.question_id
                           where t1.personal_id='.$this->rec_personal['pkey'].' and not t2.pkey is null 
                           order by t1.question_id,t1.pkey',0,1) ;
    if (_sizeof($recs_results)) foreach($recs_results as $indx=>$rec)
    { $arr_results[$rec['question_id']]++ ;
      if (!$rec['correct']) $rec['correct']=0 ;

      if ($rec['correct']) { $arr_results_correct[$rec['question_id']]++ ;    }
      else                 { $arr_results_uncorrect[$rec['question_id']]++ ;  }

      $arr_results_last_status[$rec['question_id']]=$rec['correct'] ;

      // если это последний результат по данному вопросу - считаем в статистике
      if ((isset($recs_results[$indx+1]) and $recs_results[$indx+1]['question_id']!=$rec['question_id']) or !isset($recs_results[$indx+1]))
      {  for($i=1;$i<=9;$i++) if ($rec['parent'.$i]) $arr_results_last_status_by_section[$rec['parent'.$i]][$rec['correct']]++ ;
         //echo 'Засчитан результат ID '.$indx.'<br>' ;
      }
    }
    if (_sizeof($arr_results_last_status)) foreach($arr_results_last_status as $question_id=>$last_status)
    { if ($last_status==1) { $arr_results_last_correct[$question_id]=1 ;   }
      else                 { $arr_results_last_uncorrect[$question_id]=1 ; }

    }

    //damp_array($arr_results_last_status,1,-1);
    //echo 'число сессий КЗ: <strong>'._sizeof($recs_results).'</strong><br>' ;
    //echo 'число сессий с правильными ответами: <strong>'._sizeof($arr_results_correct).'</strong><br>' ;
    //echo 'число сессий с неправильных ответами: <strong>'._sizeof($arr_results_uncorrect).'</strong><br>' ;
    //echo 'число заданных вопросов: <strong>'._sizeof($arr_results).'</strong><br>' ;
    //echo 'число заданных вопросов: <strong>'._sizeof($arr_results).'</strong><br>' ;

    // все вопросы тем


            $stats=[] ; $arr_quelle=[] ; $stop=0 ;
    if (_sizeof($arr_allow_themes_ids))
    {   // можно сделать и схему поизящнее - запросы только по parent с учетем level themes
        // пока делаем по всем parent
        for($i=1;$i<=9;$i++) $arr[]=' parent'.$i.' in ('.implode(',',$arr_allow_themes_ids).') ' ;
        $recs_questions_all=execSQL('select *
                                 from quiz_questions 
                                 where '.implode('or',$arr).'
                                 ') ;

        /*$recs_questions=execSQL('select t1.*,
                                 t2.correct,count(t2.pkey) as cnt_result
                                 from quiz_questions t1
                                 left join quiz_result t2 on t2.personal_id='.$this->rec_personal['pkey'].' and t2.question_id=t1.pkey
                                 where '.implode('or',$arr).'
                                 group by t1.pkey,t2.correct

                                 ') ;
        */
        //echo 'число вопросов во всех темах: <strong>'._sizeof($recs_questions_all).'</strong><br>' ;

        // собираем статистику

        if (_sizeof($recs_questions_all)) foreach($recs_questions_all as $rec)
        { for ($i=1;$i<=9;$i++) if ($rec['parent'.$i]>0)
          {   $stats[$rec['parent'.$i]]['cnt_question']++ ;

              if (isset($arr_results[$rec['pkey']]))
              { $stats[$rec['parent'.$i]]['cnt_question_put']++ ;
                $stats[$rec['parent'.$i]]['cnt_sessions']+=$arr_results[$rec['pkey']] ;
              }
              if (isset($arr_results_correct[$rec['pkey']])) $stats[$rec['parent'.$i]]['cnt_question_get_correct']+=$arr_results_correct[$rec['pkey']] ;
              if (isset($arr_results_uncorrect[$rec['pkey']])) $stats[$rec['parent'.$i]]['cnt_question_get_uncorrect']+=$arr_results_uncorrect[$rec['pkey']] ;


             /* if ($rec['cnt_result'])
              { $stats[$rec['parent'.$i]]['cnt_question_put']+=$rec['cnt_result'] ;
                if ($rec['correct']) $stats[$rec['parent'.$i]]['cnt_question_get_correct']+=$rec['cnt_result'] ;
                else                 $stats[$rec['parent'.$i]]['cnt_question_get_uncorrect']+=$rec['cnt_result'] ;
              }*/
          }

        }
        //damp_array($stats);



    }
    // выводим сводную таблицу всех разделов КЗ
    $this->arr_tree=TREE('quiz_themes')->get_list_strukture('') ;
    //damp_array($this->arr_tree);
    //damp_array($arr_tree);
    ob_start() ;
    $arr_sections_last_data=$this->panel_questions_quelle() ;
    $HTML_sections_last_data=ob_get_clean() ;



    ?><table class="basic fz_small full auto"><tr><th>ID</th><th>Наименование раздела КЗ</th><th>Балл</th><th>Число вопросов</th><th>Задано уникальных вопросов</th><th>Число сессий КЗ</th><th>Число вопросов<br>правильные ответы</th><th>Число вопросов<br>Неправильные ответы</th><th>Планируемая дата окончания КЗ по разделу</th></tr><?
    if (_sizeof($this->arr_tree)) foreach($this->arr_tree as $theme_id=>$theme_name) if (isset($stats[$theme_id]))
    { //if ($recs_themes[$theme_id]['level'])
      $level=$recs_themes_all[$theme_id]['level'] ;
      $ball=$recs_themes_all[$theme_id]['ball'] ;
      if (!$ball) $ball=$recs_themes_all[$recs_themes_all[$theme_id]['parent']]['ball'] ;
      if ($level<4)
      {
          ?><tr <?if ($level==2) echo 'style="background-color:rgba(0,80,170,0.76);color:white;"'?>>
                <td><?echo $theme_id?></td>
                <td class="left"><?echo $theme_name?></td>
                <td><?echo $ball?></td>
                <td><?echo $stats[$theme_id]['cnt_question']?></td>
                <td><?echo $stats[$theme_id]['cnt_question_put']?></td>
                <td><?echo $stats[$theme_id]['cnt_sessions']?></td>
                <td><?echo $arr_results_last_status_by_section[$theme_id][1]?></td>
                <td><?echo $arr_results_last_status_by_section[$theme_id][0]?></td>
                <td><?echo date('d.m.Y',$arr_sections_last_data[$theme_id])?></td>
           </tr>
          <?
      }

    }
     ?></table><?

    echo $HTML_sections_last_data ;
     //damp_array($arr_tree);

    /* ?><br><strong>ИТОГО:</strong><br><?
     damp_array($arr_quelle,1,-1);*/


 }

 function panel_questions_quelle()
 {
    ?><strong>Очередь вопросов</strong><br><?
    include(_DIR_TO_MODULES.'/quiz/i_quiz_logic.php') ;
     ob_start() ;
    $obj_quiz_logic=new i_quiz_logic() ;
    $obj_quiz_logic->rec_personal=$this->rec_personal ;
    $arr_quelle=$obj_quiz_logic->get_personal_questions_quelle(['check_result'=>0]) ;
    //damp_array($arr_quelle,1,-1) ;



     $text=ob_get_clean() ;
     //echo $text ;

         //$now=getdate() ;
         //$from=mktime(0,0,0,$now['mon']-1,$now['mday'],$now['year']);  // в статистике дата ставиться началом дня
          //echo 'Считаем число МО за последний месяц:<br>' ;
         //$mo_cnt=execSQL_value('select count(pkey) from obj_site_mo_session where member_id='.$this->rec_personal['pkey'].' and c_data>='.$from,2) ;
         $mo_cnt=2 ;
         echo 'Среднее число МО в день за последний месяц: '.$mo_cnt.'<br>' ;
         //damp_array($arr_quelle);



     //damp_array($obj_quiz_logic->arr_next_question);

         ?><br><br><h3>Ход контроля знаний</h3><?
         ?><table class="basic fz_small full auto">
             <tr><th>Раздел</th>
                 <th>Вопросов в теме</th>
                 <th>Размер сектора</th>
                 <th>Круг</th>
                 <th>Сектор</th>
                 <th>Число заданных вопросов</th>
                 <th>Число повторных вопросов</th>
                 <th>Число новых вопросов</th>
             </tr>
          <?
          $i=0 ;
          $cnt_max=3 ; // три вопроса за сессиию МО
          $mo_cnt=2 ; // число сессий МО в сутки
          $delta_h=24/$mo_cnt ; // временной лаг между МО
          $t=time() ;
          $arr_sections_last_data=[] ;
          $theme_id=0 ;
          $round=0 ;
          $section=0 ;
          $cnt_error=0 ;
          $cnt_new=0 ;
          $cnt_ok=0 ;
          if (_sizeof($obj_quiz_logic->arr_all_question)) foreach($obj_quiz_logic->arr_all_question as $rec)
          {   // смена позиции - показываем данные по прошлой позиции
              if ($rec['theme_id']!=$theme_id or $rec['round']!=$round or $rec['section']!=$section)
              {
                  if ($theme_id)
                  {
                      ?><tr>
                            <td class="left"><?echo $this->arr_tree[$theme_id]?></td>
                            <td><?echo $obj_quiz_logic->stats[$theme_id]['cnt_question']?></td>
                            <td><?echo $obj_quiz_logic->recs_themes_with_ball[$theme_id]['closing_perc']?>%</td>
                            <td><?echo $round?></td>
                            <td><?echo $section?></td>
                            <td><?echo ($cnt_ok)? $cnt_ok:'-'?></td>
                            <td><?echo ($cnt_error)? $cnt_error:'-'?></td>
                            <td><?echo ($cnt_new)? $cnt_new:'-'?></td>
                       </tr><?
                      $cnt_new=0 ;
                      $cnt_error=0 ;
                      $cnt_ok=0 ;
                  }
                  $theme_id=$rec['theme_id'] ;
                  $round=$rec['round'] ;
                  $section=$rec['section'] ;
              }
              if ($rec['status']=='new') $cnt_new++ ;
              if ($rec['status']=='error') $cnt_error++ ;
              if ($rec['status']=='ok') $cnt_ok++ ;
          }
          ?><tr>
                  <td class="left"><?echo $this->arr_tree[$theme_id]?></td>
                  <td><?echo $obj_quiz_logic->stats[$theme_id]['cnt_question']?></td>
                  <td><?echo $obj_quiz_logic->recs_themes_with_ball[$theme_id]['closing_perc']?>%</td>
                  <td><?echo $round?></td>
                  <td><?echo $section?></td>
                  <td><?echo ($cnt_ok)? $cnt_ok:'-'?></td>
                  <td><?echo ($cnt_error)? $cnt_error:'-'?></td>
                  <td><?echo ($cnt_new)? $cnt_new:'-'?></td>
            </tr>
         </table><?


         $recs_questions=(_sizeof($obj_quiz_logic->arr_next_question_ids))? execSQL('select * from quiz_questions where pkey in ('.implode(',',array_keys($obj_quiz_logic->arr_next_question_ids)).')'):[] ;
              ?><br><br><h3>План контроля знаний</h3><?
         ?><table class="basic fz_small full auto">
             <tr><th>Дата</th>
                 <th>Круг</th>
                 <th>Сектор</th>
                 <th>Статус</th>
                 <th>ID раздела</th>
                 <th>Раздел</th>
                 <th>ID вопроса</th>
                 <th>Вопрос</th>
             </tr>
          <?
          $i=0 ;
          $cnt_max=3 ; // три вопроса за сессиию МО
          $mo_cnt=2 ; // число сессий МО в сутки
          $delta_h=24/$mo_cnt ; // временной лаг между МО
          $t=time() ;
          $arr_sections_last_data=[] ;
               if (_sizeof($obj_quiz_logic->arr_next_question)) foreach($obj_quiz_logic->arr_next_question as $rec)
          {  $question_id=$rec['question_id'] ;
             $i++ ;
             if ($i==$cnt_max)
             { $i=0 ;
               $now=getdate($t) ;
               $t=mktime($now['hours']+$delta_h,0,0,$now['mon'],$now['mday'],$now['year']);  // в статистике дата ставиться началом дня
             }

             ?><tr>
                 <td><?echo date('d.m.Y',$t)?></td>
                 <td><?echo $rec['round']?></td>
                 <td><?echo $rec['section']?></td>
                 <td><?echo $rec['status']?></td>
                 <td><?echo $recs_questions[$question_id]['parent']?></td>
                 <td class="left"><?echo $this->arr_tree[$recs_questions[$question_id]['parent']]?></td>
                 <td><?echo $question_id?></td>
                 <td class="left"><?echo $recs_questions[$question_id]['obj_name']?></td>
             </tr><?
             $arr_sections_last_data[$recs_questions[$question_id]['parent']]=$t ;
             $arr_sections_last_data[$recs_questions[$question_id]['parent1']]=$t ;
             $arr_sections_last_data[$recs_questions[$question_id]['parent2']]=$t ;
             $arr_sections_last_data[$recs_questions[$question_id]['parent3']]=$t ;
             $arr_sections_last_data[$recs_questions[$question_id]['parent4']]=$t ;
             $arr_sections_last_data[$recs_questions[$question_id]['parent5']]=$t ;
             $arr_sections_last_data[$recs_questions[$question_id]['parent6']]=$t ;
             $arr_sections_last_data[$recs_questions[$question_id]['parent7']]=$t ;
             $arr_sections_last_data[$recs_questions[$question_id]['parent8']]=$t ;
             $arr_sections_last_data[$recs_questions[$question_id]['parent9']]=$t ;

          }

          ?>


          </table><?

     echo $text ;
     //damp_array($obj_quiz_logic);

     return($arr_sections_last_data) ;
 }

 function show_plan_line()
 {

 }

}



?>
