<?php
class report_get_last_mo_personal extends c_report
{
 var $title='Последний МО сотрудника' ;
 var $view_by_space_filter=1 ;
 var $allow_org_ids=1 ;
 var $usl_select_org='' ;
    var $show_on_page_peports=0 ;

 function setting($options=array())
 {    ?><div id="panel_filter">
             <form id="sky-form" class="sky-form"><input type="hidden" name="filter_dir" value="<?echo _CUR_REPORT_DIR?>">
                  <fieldset>
                      <div class="row" id="person_info">
                          <?
                          $this->filter_section_input_text('uid','UID сотрудника:',2) ;
                          $this->filter_section_input_text('propusk','Номер пропуска:',2) ;
                          $this->filter_section_input_text('pass_uid','UID пропуска сотрудника:',2) ;
                          $this->filter_section_input_text('mo_id','Id сессии МО:',2) ;
                          ?>
                        </div>
                  </fieldset>
                  <?$this->panel_button_apply();?>
              </form>
       </div><br>
     <?
  }

  function date_till_time()
  {
      $dt = getdate(strtotime($this->filter['date_till']));

      $date_till = mktime(0,0,0,$dt['mon'],$dt['mday'],$dt['year']);

      if ($this->filter['hour_till']) {
          $hour = (int) $this->filter['hour_till'];
          $date_till += $hour*60*60;
      }

      if ($this->filter['min_till']) {
          $min = (int) $this->filter['min_till'];
          $date_till += $min*60;
      }

      return $date_till;
  }

  function create_usl_select_obj($_params,&$options)
  {  //damp_array($this->filter) ;
     $usl=array() ;
      $this->date_till_time();
     $usl[]='dopusk in (1,2)' ;         // допуск разрешен или запрещен
     //$usl[]='dopusk_time_end>'.time() ; // срок действия допуска или запрета доступка еще дейтсвие
     if ($this->filter['uid'])              $usl[]='member_uid="'.$this->filter['uid'].'"' ;
     elseif ($this->filter['propusk'])      $usl[]='propusk="'.$this->filter['propusk'].'"' ;
     elseif ($this->filter['pass_uid'])      $usl[]='propusk="'.$this->filter['propusk'].'"' ;
     elseif ($this->filter['mo_id'])                $usl[]='pkey='.$this->filter['mo_id'] ;
     elseif (!$this->filter['date_till']
         and !$this->filter['time_till'])            $usl[]='member_uid=-1' ; // невозможное условие
     if ($this->filter['date_till'])                $usl[]='dopusk_time<='.$this->date_till_time() ;
     if ($this->filter['time_till'])                $usl[]='dopusk_time<='.$this->filter['time_till'] ;
     $usl_res=implode(' and ',$usl) ;
     return($usl_res) ;
  }

 function panel_info_filter()
 { $_str=array() ; $info=array() ; $title='' ;
   if ($this->filter['uid'])                             $info['UID сотрудника']='"'.$this->filter['uid'].'"' ;
   if ($this->filter['propusk'])                         $info['Пропуск сотрудника']='"'.$this->filter['propusk'].'"' ;
   if ($this->filter['pass_uid'])                         $info['UID пропуска сотрудника']='"'.$this->filter['pass_uid'].'"' ;
   if ($this->filter['mo_id'])                         $info['Id сессии МО']='"'.$this->filter['mo_id'].'"' ;
   if (_sizeof($info)) foreach($info as $title=>$value) $_str[]=$title.': <strong>'.$value.'</strong>' ;
   if (_sizeof($_str)) $title='<p class=center>'.implode(' ',$_str).'</p>' ;
   return $title ;
 }

  function get_cnt_items($usl,$options=array())
  { $options['debug']=0 ;
    $cnt=execSQL_value('select count(pkey)
                        from  '.ESMO()->view_mo_session.'
                        where '.$usl,$options) ;
    return($cnt) ;
  }

  function get_items($usl,$options=array())
  { $options['no_indx']=1 ;
    //$limit=($options['limit'])? ' '.$options['limit']:'' ;
    $limit=' limit 1' ;
    //$order=($this->filter['order'])? ' order by '.$this->filter['order']:' order by pkey desc' ;
    $order=' order by pkey desc' ;
 	$list_rec=execSQL('select *
                       from  '.ESMO()->view_mo_session.'
                       where '.$usl.$order.$limit,$options) ;
 	$options['view_sertificate_stamp']='image_print_MO_sertificate_stamp' ; // включать показ печати по допуску
    if (_sizeof($list_rec)) foreach($list_rec as $id=>$rec) ESMO()->prepare_public_info_to_mo($list_rec[$id],$options) ;
    return($list_rec) ;
  }


// шаблон - вывод ссылками без разделитея
  function print_template_HTML($list_recs,$options=array())
  { $id=($options['id'])? 'id='.$options['id']:'' ;
    //damp_array($list_recs,1,-1) ;
    $this->list_recs=$list_recs ;  // только для вывода штампа ЭЦП в описании
    //print_2x_arr($list_recs) ;
    /*
    ?><table class="list_personal_table_img basic fz_small full auto"<?echo $id?>>
        <colgroup><col id="c1"><col id="c2"><col id="c3"><col id="c4"></colgroup>
        <tr><th>Пропуск</th><th>Фото</th><th>ФИО</th><th>Дата рождения</th><th>Возраст</th><th>Организация</th><th>Подразделение</th><th>Должность</th></tr><? ;
        if (_sizeof($list_recs)) foreach($list_recs as $rec)
        { ?><tr class=item>
                <td class="id"><?echo $rec['propusk']?><?if ($rec['demo_access']){?><div class="demo_access" title="Сотрудник может проходить неограниченное число МО"></div><?}?></td>
                <td class="img"><a  href="<?echo $rec['__href']?>" class="new_window" target="_blank" title="win_second"><img src="<?echo img_clone($rec,'small')?>"></a></td>
                <td class="left"><a href="<?echo $rec['__href']?>" class="new_window" target="_blank" title="win_second"><?echo $rec['obj_name']?></a>
                    <br><?echo '<span class="nowrap small">'.$rec['uid'].'</span>'?>
                    <?if (!$rec['enabled'])echo '<br><br><span class="red bold">УВОЛЕН</span> ('.date('d.m.Y H:i',$rec['fired_data']).')'?>

                </td>
                <td class="dr"><?echo $rec['dr']?></td>
                <td class="age"><?echo $rec['age']?></td>
                <td class="left"><?echo $rec['_org_name']?></td>
                <td class="left"><?echo $rec['_otdel_name']?></td>
                <td class="left"><?echo _IL('IL_works')->recs[$rec['working']]['obj_name']?></td>
            </tr><?
        }
      ?></table><?
      //damp_array($rec) ;
    */
  }

    function print_template_XML($list_recs,$options=array())
    { //damp_array($list_recs) ;
      //print_r($list_recs) ; trace() ;
      if (_sizeof($list_recs)) foreach($list_recs as $rec)
      {   $item=add_element($this->xml_doc,$this->xml,'item','',array('id'=>$rec['pkey'])) ;
          if ($rec['doctor_id']) $rec_account=ACCOUNTS()->get_member_by_id($rec['doctor_id']) ;

          add_element($this->xml_doc,$item,'uid',$rec['member_uid']) ;
          //add_element($this->xml_doc,$item,'fio',$rec['member_name']) ;
          //add_element($this->xml_doc,$item,'dr',$rec['member_dr']) ;
          //add_element($this->xml_doc,$item,'terminal_name',$rec['terminal_name']) ;
          add_element($this->xml_doc,$item,'time_now',date('d.m.Y H:i:s')) ;
          add_element($this->xml_doc,$item,'time_MO',$rec['_data']) ;
          add_element($this->xml_doc,$item,'time_dopusk_end',$rec['_data_dopusk_end']) ;
          add_element($this->xml_doc,$item,'cur_dopusk_status',($rec['dopusk']==1 and $rec['dopusk_time_end']>time())? 1:2) ;
          add_element($this->xml_doc,$item,'type',$rec['tk']+1) ;
          //add_element($this->xml_doc,$item,'mo_id',$rec['pkey']) ;
          //add_element($this->xml_doc,$item,'question',$rec['_question']) ;
          //add_element($this->xml_doc,$item,'alko',$rec['_alko']) ;
          //add_element($this->xml_doc,$item,'systolic',$rec['_systolic']) ;
          //add_element($this->xml_doc,$item,'diastolic',$rec['_diastolic']) ;
          //add_element($this->xml_doc,$item,'pulse',$rec['_pulse']) ;
          //add_element($this->xml_doc,$item,'temperature',$rec['temperature']) ;
          //add_element($this->xml_doc,$item,'doctor_comment',$rec['doctor_comment']) ;
          //add_element($this->xml_doc,$item,'mo_result_id',$rec['status']) ;
          //add_element($this->xml_doc,$item,'mo_result_text',$rec['_status_name']) ;
          add_element($this->xml_doc,$item,'mo_dopusk_id',$rec['dopusk']) ;
          add_element($this->xml_doc,$item,'mo_id',$rec['pkey']) ;
          add_element($this->xml_doc,$item,'mo_dopusk_text',$rec['_dopusk_name_full']) ;
          add_element($this->xml_doc,$item,'certificate_sn',$rec_account['certificate']['SerialNumber']) ;
          add_element($this->xml_doc,$item,'certificate_cn',$rec_account['certificate']['Issuer']['CN']) ;
          add_element($this->xml_doc,$item,'doctor_name',$rec_account['obj_name']) ;
          add_element($this->xml_doc,$item,'doctor_uid',$rec_account['UID']) ;
          if (!$rec['tk'] and $rec['dopusk']==1) add_element($this->xml_doc,$item,'stamp_image','data:image/png;base64,'.$rec['_sertificate_stamp_base64']) ;
      }
    }

    function print_template_JSON($list_recs,$options=array())
       { $result=array() ;
         if (_sizeof($list_recs)) foreach($list_recs as $rec)
         {   if ($rec['doctor_id']) $rec_account=ACCOUNTS()->get_member_by_id($rec['doctor_id']) ;
             $rec_out=array('uid'=>$rec['member_uid'],
                           //'fio'=>$rec['member_name'],
                           //'dr'=>$rec['member_dr'],
                           //'terminal_name'=>$rec['terminal_name'],
                           'time_now'=>date('d.m.Y H:i:s',time()),
                           'time_MO'=>$rec['_data'],
                           'time_dopusk_end'=>$rec['_data_dopusk_end'],
                           'cur_dopusk_status'=>($rec['dopusk']==1 and $rec['dopusk_time_end']>time())? 1:2,
                           'type'=>($rec['tk']+1),
                           //'mo_id'=>$rec['pkey'],
                           //'question'=>$rec['_question'],
                           //'alko'=>$rec['_alko'],
                           //'systolic'=>$rec['_systolic'],
                           //'diastolic'=>$rec['_diastolic'],
                           //'pulse'=>$rec['_pulse'],
                           //'temperature'=>$rec['temperature'],
                           //'doctor_comment'=>$rec['doctor_comment'],
                           //'mo_result_id'=>$rec['status'],
                           //'mo_result_text'=>$rec['_status_name'],
                           'mo_dopusk_id'=>$rec['dopusk'],
                           'mo_id'=>$rec['pkey'],
                           'mo_dopusk_text'=>$rec['_dopusk_name_full'],
                           'certificate_sn'=>$rec_account['certificate']['SerialNumber'],
                           'certificate_cn'=>$rec_account['certificate']['Issuer']['CN'],
                           'doctor_name'=>$rec_account['obj_name'],
                           'doctor_uid'=>$rec_account['UID']
                          ) ;
             if (!$rec['tk'] and $rec['dopusk']==1) $rec_out['stamp_image']='data:image/png;base64,'.$rec['_sertificate_stamp_base64'] ;
             $result[]=$rec_out ;
          }
           $text_json_out=json_encode($result) ;
           // возвращает ответ устройству
           echo $text_json_out ;

       }

    function manual_tags_in()
    {
        ?><table class="basic fz_normal left">
                    <tr><td>uid</td><td>Уникальный идентификатор сотрудника</td></tr>
                    <tr><td>propusk</td><td>Номер пропуска</td></tr>
                    <tr><td>pass_uid</td><td>UID пропуска сотрудника</td></tr>
                    <tr><td>mo_id</td><td>Id сессии МО</td></tr>
        </table><?
    }

    function manual_tags_out()
    {   $this->view() ; // записи по МО окажуться в $this->list_recs
        ?><table class="basic fz_normal left">
                    <tr><td>time_now</td><td>текущее время сервера</td></tr>
                    <!--<tr><td>time_from</td><td>время, от которого происходил поиск МО</td></tr>-->
                    <tr><td>uid</td><td>UID сотрудника</td></tr>
                    <!--<tr><td>fio</td><td>ФИО сотрудника</td></tr>-->
                    <!--<tr><td>dr</td><td>дата рождения сотрудника</td></tr>
                    <tr><td>terminal_name</td><td>терминал, на котором сотрудник проходил МО</td></tr>-->
                    <tr><td>time_MO</td><td>дата прохождения МО</td></tr>
                    <tr><td>time_dopusk_end</td><td>срок действия допуска</td></tr>
                    <tr><td>cur_dopusk_status</td><td>Статус допуска на момент запроса: 1 - разрешен, 2 - запрещен</td></tr>
                    <tr><td>type</td><td>Тип МО: 1 - предсменный, 2 - послесменный, 3 - межсменный</td></tr>
                    <!--<tr><td>mo_id</td><td>id сессии МО</td></tr>
                    <tr><td>question</td><td>жалобы на состояние здоровья</td></tr>
                    <tr><td>alko</td><td>алкоголь</td></tr>
                    <tr><td>systolic</td><td>систолическое давление</td></tr>
                    <tr><td>diastolic</td><td>диалистическое давление</td></tr>
                    <tr><td>pulse</td><td>пульс</td></tr>
                    <tr><td>temperature</td><td>температура</td></tr>
                    <tr><td>doctor_comment</td><td>комментарий врача</td></tr>
                    <tr><td>mo_result_id</td><td>id результата МО на терминале (1: осмотр окончен, успешно, 2: осмотр окончен, ошибка, 3: осмотр не проводился)</td></tr>
                    <tr><td>mo_result_text</td><td>текстовое описание результата МО</td></tr>-->
                    <tr><td>mo_dopusk_id</td><td>id допуска(1: допуск получен, 2: допуск запрещен)</td></tr>
                    <tr><td>mo_id</td><td>Id сессии МО</td></tr>
                    <tr><td>mo_dopusk_text</td><td>текстовое описание допуска</td></tr>
                    <tr><td>certificate_sn</td><td>Серийный номер сертификата ЭЦП</td></tr>
                    <tr><td>certificate_cn</td><td>Удостоверяющий центр, выдавший сертификат</td></tr>
                    <tr><td>doctor_name</td><td>ФИО фельдшера</td></tr>
                    <tr><td>doctor_uid</td><td>UID фельдшера</td></tr>
                    <tr><td>stamp_image</td><td>Только для предсменных МО:<br><img alt="" src="data:image/png;base64,<?echo $this->list_recs[0]['_sertificate_stamp_base64']?>"></td></tr>
          </table>
        <?
    }
}

?>
