<?
include_once(_DIR_EXT.'/HTML/c_page_XML_AJAX.php');
//include_once('messages.php') ;
class c_page_ajax extends c_page_XML_AJAX
{

    // старт ручного МО со РМВ - надо перевести врача на нужную страницу в новой вкладке
    // внимание!!! пне проверяется, был ли у человека ранее МО и его статус
    function start_hand_mo()
     { $denited_info='' ;
       //$this->add_element('show_modal_window','HTML') ; damp_array($_POST) ;
       // проверяем, что пропуск активен - поулчаем ифнорамцию по работнику
       //$rec_member=PERSONAL()->get_personal_by_propusk($_POST['propusk_id']) ;
       $propusk_id=($_POST['hand_mo']['propusk_id'])? $_POST['hand_mo']['propusk_id']:$_POST['propusk_id'] ;
       $rec_member=PERSONAL()->get_personal(array('propusk'=>$propusk_id)) ;
       if ($rec_member['pkey'])
       { $last_mo_rec=ESMO()->check_active_dopusk($rec_member['pkey']) ;
         if ($last_mo_rec['dopusk']==1 and !$rec_member['demo_access']) $denited_info='Допуск уже получен, действует до '.date('d.m.Y H:i',$last_mo_rec['dopusk_time_end']).', МО ID '.$last_mo_rec['pkey'] ;
         elseif ($last_mo_rec['dopusk']==2 and !$rec_member['demo_access']) $denited_info='Допуск запрещен, запрет до '.date('d.m.Y H:i',$last_mo_rec['dopusk_time_end']).', МО ID '.$last_mo_rec['pkey'] ;
         else
         { ob_start() ;
           ?><script type="text/javascript">window.open("/cab/rmv/hand_mo/<?echo $rec_member['pkey']?>/",'_blank');</script> <?
           $this->add_element('JSCODE',ob_get_clean()) ;

         }
       } else $denited_info='Пропуск "'.$propusk_id.'" не найден' ;

       if ($denited_info)
        { // сообщение для оператора
          $this->add_element('show_notife',$denited_info,array('type'=>'error')) ;
          // сохраняем в логе
          LOGS()->reg_log('Начало ручного медосмотра',$denited_info,array()) ;
        }

         $this->add_element('propusk.HTML','') ;
     }

    // старнт ручного осмотра с карточки МО - показываем модальное окно
      function get_panel_hand_check()
      { $rec_member=PERSONAL()->get_personal_by_id($_POST['member_reffer']) ;
        $rec_mo=ESMO()->check_active_dopusk($rec_member['pkey']) ;
        if (!$rec_mo['dopusk'])
        { include(_DIR_EXT.'/aspmo_rmv/panel_hand_check.php') ;
          panel_hand_check($rec_member) ;
          $this->add_element('show_modal_window','HTML') ;
        }
        else $this->add_element('show_notife','Допуск уже получен',array('type'=>'error')) ;
      }

    function check_hand_result()
    {  $rec_personal=PERSONAL()->get_personal_by_id($_POST['personal_id']) ;
       $rules_info=ESMO_RULES()->get_mo_rules_to_personal($rec_personal,array('rmv_mo'=>1,'esmo_group'=>MEMBER()->cur_group_id)) ;

       $alerts=array() ;
       if ($rules_info['_rules_main']['LS_check_sd'] and $rules_info['_rules_krit']['s'] and !$_POST['s']) $alerts[]='Не указано значение систолического давления' ;
       if ($rules_info['_rules_main']['LS_check_sd'] and $rules_info['_rules_krit']['d'] and !$_POST['d']) $alerts[]='Не указано значение дилистического давления' ;
       if ($rules_info['_rules_main']['LS_check_p']  and $rules_info['_rules_krit']['p'] and !$_POST['p']) $alerts[]='Не указано значение пульса' ;
       if ($rules_info['_rules_main']['LS_check_t']  and $rules_info['_rules_krit']['t'] and !$_POST['t']) $alerts[]='Не указано значение температуры' ;
       if (!isset($_POST['a2'])) $alerts[]='Признаки заболевания и пониженной работоспособности: не указано есть/нет' ;
       if ($rules_info['_rules_main']['LS_check_a']  and $rules_info['_rules_krit']['a'] and !isset($_POST['a'])) $alerts[]='Алкоголь: не указано есть/нет' ;
       if ($rules_info['_rules_main']['LS_check_a']  and $rules_info['_rules_krit']['a'] and $_POST['a']==1 and $_POST['alko_value']==0) $alerts[]='Необходимо указать значение алкоголя' ;
       if (!isset($_POST['q'])) $alerts[]='Жалобы: не указано есть/нет' ;
       if ($_POST['q']==1 and !$_POST['qc']) $alerts[]='Необходимо указать жалобы' ;


       ob_start() ;
       //damp_array($_POST,1,-1)  ;
       if (!_sizeof($alerts))
    {  // независимо от reason присланного терминалом, надо оценить результаты измерений
       $arr_result=array() ;
           if (isset($_POST['s']))   $arr_result['s']=($_POST['s'])? $_POST['s']:0 ;
           if (isset($_POST['d']))   $arr_result['d']=($_POST['d'])? $_POST['d']:0 ;
           if (isset($_POST['t']))   $arr_result['t']=($_POST['t'])? $_POST['t']:0 ;
           if (isset($_POST['p']))   $arr_result['p']=($_POST['p'])? $_POST['p']:0 ;
           if (isset($_POST['a']))   $arr_result['a']=($_POST['a'])? $_POST['a']:0 ;
           if (isset($_POST['n']))   $arr_result['n']=($_POST['n'])? $_POST['n']:0 ;
           if (isset($_POST['q']))   $arr_result['q']=($_POST['q'])? $_POST['q']:0 ;
       if ($_POST['a2']==1 and isset($_POST['simptoms']))   $arr_result['simptoms']=$_POST['simptoms'] ;
       $mo_result=ESMO_RULES()->get_mo_result_to_personal($rules_info['_rules'],$arr_result,array('tk'=>$_POST['tk']))  ;
       ob_start() ;
       //damp_array($mo_result) ;
       if ($mo_result['status']==2) {?><button class="v2 button_green" cmd="aspmo_rmv/hand_check_dopusk_allow">Допустить</button>&nbsp;&nbsp;&nbsp;&nbsp;<button class="v2 button_red" cmd="aspmo_rmv/hand_check_dopusk_denited">Запретить</button><?}
       if ($mo_result['status']==3) {?><button class="v2 button_red" cmd="aspmo_rmv/hand_check_dopusk_denited">Запретить</button><?}
       if ($mo_result['comment']) echo '<div id="result_comment"><strong>Причины отказа:</strong><br><br>'.$mo_result['comment'].'</div>' ;

       //damp_array($_POST,1,-1) ;
       //damp_array($mo_result,1,-1) ;
       }
       else
       {   foreach($alerts as $alert) echo '<div class="center red"><i class="fa fa-exclamation-triangle big"></i> '.$alert.'</div>' ;

       }
       $text=ob_get_clean() ;
       $this->add_element('buttons.HTML',$text) ;

    }

    function hand_check_dopusk_allow()
      { if (!$_POST['a']) unset($_POST['alko_value']) ;
        if (!$_POST['a2']) unset($_POST['simptoms']) ;
       // $this->add_element('success','modal_window') ;
        list($mo_id,$mo_url)=ESMO()->fixed_hand_check($_POST,1) ;
        if ($mo_url) $this->add_element('go_url',$mo_url) ;
        //$this->add_element('close_mBox_window') ;
        //$this->add_element('update_page',1) ;
      }

      function hand_check_dopusk_denited()
      { if (!$_POST['a2']) unset($_POST['simptoms']) ;
        //$this->add_element('success','modal_window') ;
        list($mo_id,$mo_url)=ESMO()->fixed_hand_check($_POST,0) ;
        if ($mo_url) $this->add_element('go_url',$mo_url) ;
      }

    function update_panel_rmv_stats()
    {  ob_start() ;
       if (!MEMBER()->id) $this->add_element('update_page',1) ;
       else if (MEMBER()->rol==1) {include_once('panel_stats_admin.php') ; panel_stats_admin() ;}
       else                  { include_once('panel_rmv_stats.php') ; panel_rmv_stats() ;   }

       $this->add_element('panel_rmv_stats.HTML',ob_get_clean()) ;
    }

    function get_mo_by_filter()
    {   ob_start() ;
        //damp_array($_POST,1,-1) ;


        //$this->add_element('success','modal_window') ; damp_array($member,1,-1) ;
         $options=array() ;
        //damp_array(MEMBER()) ;
        $options['group_id']=MEMBER()->cur_group_id ; // только с терминалов своей группы
        if (MEMBER()->info['rol']>1)  $options['doctor_id']=MEMBER()->id ; // для доктора показываем МО только его, для администратора - всех
        //if (MEMBER()->info['rol']>1)  $options['doctor_id_or_any']=MEMBER()->pkey ; // только с терминалов своей группы



        // если опция - показывать текущуюю смену
        $now=getdate(time()) ;
        if ($_POST['cur_smena'])
        {   // для администратора - последние 24 часа
            if (MEMBER()->info['rol']==1) { $options['time_from']=mktime($now['hours']-24,$now['minutes'],0,$now['mon'],$now['mday'],$now['year']); echo '<strong>Режим администратора:</strong> показаны МО  за последние 24 часа<br>' ; }
            // для остальных - с начала смены
            elseif (MEMBER()->info['smena_in']) { $options['time_from']=MEMBER()->info['smena_in'] ; echo '<strong>Режим дежурного врача:</strong> показаны МО с начала смены<br>' ; }
            // если смена не начала - с момента авторизации
            else                            { $options['time_from']=MEMBER()->login_time ; echo '<strong>Режим врача:</strong> показаны МО  с момента авторизации<br>' ; }

        }
        // иначе - последние трое суток
        else  { $options['time_from']=mktime($now['hours']-24*3,$now['minutes'],0,$now['mon'],$now['mday'],$now['year']);
                echo 'Показаны МО  за последние трое суток<br>' ;
              }

        //echo date('d.m.Y H:i',$options['time_from']).'<br>' ;
        //echo date('d.m.Y H:i',time()).'<br>' ;
        //echo date('d.m.Y H:i',mktime($now['hours']-24,$now['minutes'],0,$now['mon'],$now['mday'],$now['year'])).'<br>' ;


        $options['text_info']=$_POST['name'] ;
        $options['only_model']=$_POST['model'] ;
        $options['otkaz_mo']=$_POST['otkaz_mo'] ;
        $options['skoro']=$_POST['skoro'] ;  // оджидаемые на проврку врачем
        if ($options['skoro'])
        {
            // начало смены или авторизация пользователя
            $now=getdate(time()) ;
            // для администратора - последние 24 часа
            if (MEMBER()->info['rol']==1) { $options['smena_from']=mktime($now['hours']-24,$now['minutes'],0,$now['mon'],$now['mday'],$now['year']); echo '<strong>Режим администратора:</strong> показаны МО  за последние 24 часа<br>' ; }
            // для остальных - с начала смены
            elseif (MEMBER()->info['smena_in']) { $options['smena_from']=MEMBER()->info['smena_in'] ; echo '<strong>Режим дежурного врача:</strong> показаны МО с начала смены<br>' ; }
            // если смена не начала - с момента авторизации
            else  { $options['smena_from']=MEMBER()->login_time ; echo '<strong>Режим врача:</strong> показаны МО  с момента авторизации<br>' ; }


        }


        //$options['denited_auto']=($_POST['denited_auto'])? 1:0 ; // только записи с алкоголем
        //$options['denited_hand']=($_POST['denited_hand'])? 1:0 ; // только записи с алкоголем

        $options['res_stat']['a']=($_POST['alco'])? 1:0 ; // только записи с алкоголем
        $options['res_stat']['q']=($_POST['question'])? 1:0 ; // только записи с вопросами
        $options['res_stat']['e_dev']=($_POST['otkaz_dev'])? 1:0 ; // только записи с отказами оборудования


        //$options['handmade']=($_POST['handmade'])? 1:0 ; // прошедшие ручную проверку


        //$options['debug']=1 ; // только с терминалов своей группы
        //$options['only_model']='all' ;
        if ($_POST['skoro']) $options['order']='pkey asc' ;

        //damp_array($options,1,-1) ;
        list($recs,$stats)=ESMO()->get_mo_recs($options) ;
        //damp_array($stats) ;

        echo 'Найдено <strong>'.$stats['cnt'].'</strong> МО' ;
        if ($stats['cnt']>0)  echo ' c <strong>'.date('d.m.Y H:i',$stats['time_from']).'</strong> по <strong>'.date('d.m.Y H:i',$stats['time_to']).'</strong>' ;
        echo '<br>' ;

        //print_template($recs,'aspmo/list_mo_sessions',array('id'=>'panel_last_mo','base_dir'=>'','no_reverse_indx'=>$_POST['skoro'])) ;

        $this->add_element('panel_filter_result.HTML',ob_get_clean()) ;

    }

    //------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
      //
      // создание запис по МО в результате ручного осмотра
      //
      //------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

  function rmv_admin_backgroup_upload_stats()
  {
        $list_group=execSQL('select t1.pkey,t1.obj_name,t2.obj_name as doctor_name,t2.smena_in 
                                  from obj_site_account t1 
                                  left join obj_site_account t2 on t2.group_id=t1.pkey and t2.smena=1 
                                  where t1.clss=206 and t1.enabled=1 and t1.pkey!=1 
                                  order by t1.obj_name') ;

           if (_sizeof($list_group)) foreach($list_group as $rec)
           {  $usl_based='c_data>='.$rec['smena_in'].' and group_id='.$rec['pkey'].' ' ;

               if ($rec['smena_in'])
               { $stats=execSQL_row('select dopusk,count(DISTINCT(member_id)) from '.ESMO()->table_mo_sessions_now.' where '.$usl_based.' and member_id>0  group by dopusk order by dopusk desc') ;
                 $count_personal=execSQL_value('select count(DISTINCT(member_id)) from '.ESMO()->table_mo_sessions_now.' where '.$usl_based.' and status in (1,2,3)') ;
                 $now=getdate() ;
                 $start_check=mktime($now['hours']-$GLOBALS['LS_mo_session_lenght'],$now['minutes'],$now['seconds'],$now['mon'],$now['mday'],$now['year']);
                 $count_to_check=execSQL_value('select count(DISTINCT(member_id)) from '.ESMO()->table_mo_sessions_now.' where c_data>='.$start_check.' and group_id='.$rec['pkey'].' and (status=3 or (status=4 and (reason="nonRule" or reason="failedMO"))) and (dopusk is null or dopusk=0) and tk in ('.$GLOBALS['LS_mo_doctor_use_tk'].') and not member_id in (select distinct(member_id) from obj_site_mo_session where c_data>='.$start_check.' and dopusk in (1,2))') ;
               }
               else
               { $stats=array() ;
                 $count_personal=0 ;
                 $count_to_check=0 ;
               }
               //execSQL('select DISTINCT(member_id) as member_id,(select obj_name from obj_site_personals where pkey=member_id) as member_name from '.ESMO()->table_mo_sessions_now.' where c_data>='.MEMBER()->info['smena_in'].' and status=3  and (dopusk is null or dopusk=0) and  tk=0',2,-1) ;
               $s2=$stats[1] ; if (!$s2) $s2=0 ;
               $s3=$stats[2] ; if (!$s3) $s3=0 ;
               $s1=$s2+$s3 ;
               $this->add_element('stats_count_personal_'.$rec['pkey'].'.HTML',(($count_personal)? $count_personal:'-'))  ;
               $this->add_element('stats_count_to_check_'.$rec['pkey'].'.HTML',(($count_to_check)? $count_to_check:'-'))  ;
               $this->add_element('stats_s1_'.$rec['pkey'].'.HTML',(($s1)? $s1:'-'))  ;
               $this->add_element('stats_s2_'.$rec['pkey'].'.HTML',(($s2)? $s2:'-'))  ;
               $this->add_element('stats_s3_'.$rec['pkey'].'.HTML',(($s3)? $s3:'-'))  ;
        }
  }

  function rmv_doctor_backgroup_upload_stats()
  {
           $from=(MEMBER()->info['smena_in']>0)? MEMBER()->info['smena_in']:0 ;
           if (!$from) $from=0 ;

           // переводим условие на работу с группами, а не терминалами
           $usl_based='c_data>='.$from.' and group_id in ('.MEMBER()->cur_groups_visible.')' ;
           // только для доктора
           // // заремирован отбор по доктору, так как фельдщера должны видеть все МО в пределах своей группы
           if (MEMBER()->rol==2) $usl_based.='and ((doctor_id='.MEMBER()->id.' or dopusk_user_id='.MEMBER()->id.' or hand_check_user_id='.MEMBER()->id.') or doctor_id is null)' ;

           $stats=execSQL_row('select dopusk,count(DISTINCT(member_id)) from '.ESMO()->table_mo_sessions_now.' where '.$usl_based.' and member_id>0  group by dopusk order by  dopusk desc') ;
           //damp_array($stats) ;
           $count_personal=execSQL_value('select count(DISTINCT(member_id)) from '.ESMO()->table_mo_sessions_now.' where '.$usl_based.' and status in (1,2,3)') ;
           $now=getdate() ;
           $start_check=mktime($now['hours']-$GLOBALS['LS_mo_session_lenght'],$now['minutes'],$now['seconds'],$now['mon'],$now['mday'],$now['year']);
           $count_to_check=execSQL_value('select count(DISTINCT(member_id)) 
                                          from '.ESMO()->table_mo_sessions_now.' 
                                          where c_data>='.$start_check.' and group_id in ('.MEMBER()->cur_groups_visible.') 
                                                and ((model=2 or model=4)
                                                      or 
                                                      (reason like "intrusion" and status=2 and dopusk=0) 
                                                      )
            ') ;

           //execSQL('select DISTINCT(member_id) as member_id,(select obj_name from obj_site_personals where pkey=member_id) as member_name from '.ESMO()->table_mo_sessions_now.' where c_data>='.MEMBER()->info['smena_in'].' and status=3  and (dopusk is null or dopusk=0) and  tk=0',2,-1) ;
           $s2=$stats[1] ; if (!$s2) $s2=0 ;
           $s3=$stats[2] ; if (!$s3) $s3=0 ;
           $s1=$s2+$s3 ;

           $this->add_element('stats_count_personal'.'.HTML',(($count_personal)? $count_personal:'-'))  ;
           $this->add_element('stats_count_to_check'.'.HTML',(($count_to_check)? $count_to_check:'-'))  ;
           $this->add_element('stats_s1'.'.HTML',(($s1)? $s1:'-'))  ;
           $this->add_element('stats_s2'.'.HTML',(($s2)? $s2:'-'))  ;
           $this->add_element('stats_s3'.'.HTML',(($s3)? $s3:'-'))  ;
  }


}
