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

    function upload_scan_to_personal($options=array())
    { //damp_array($_POST,1,-1);
        $result=[] ;
      if (_sizeof($_POST['upload_files'])) foreach($_POST['upload_files'] as $fname)
      { $abs_upload_fname=DOCS()->upload_scan(_TEMP_DIR.$fname) ; // возвращает абсолютный путь к файлу
        if ($abs_upload_fname!==false)
        {

           $ftype=mime_content_type($abs_upload_fname) ;
           if ($ftype=='application/pdf') DOCS()->convert_PDF_to_JPG2($abs_upload_fname,$result) ;
           else $result['file_name'][]=$abs_upload_fname  ;

           //damp_array($result,1,-1);

           // регистрируем скан в таблице сканов
           if (_sizeof($result['file_name'])) foreach($result['file_name'] as $abs_upload_fname)
               $id=DOCS()->register_file_scan($abs_upload_fname,['personal_id'=>$_POST['personal_id'],
                                                                 'data_work'=>time(),
                                                                 'account_work'=>MEMBER()->id,
                                                                 'status'=>2
                                                                ]) ;
        }

      }
        /*?><button class="button new_window" href="/window/scan/working/<?echo $id?>/">Обработать скан документа</button><?*/
        ?><button class="button v1" href="/cab/personal/person/<?echo $_POST['personal_id']?>/scan/working/<?echo $id?>/">Обработать скан документа</button><?
      $this->add_element('show_modal_window','HTML',array('title'=>'Загрузка скана документа','width'=>'800px'));

    }


    // переводим скан в режим редактирования
    function ScanToEditMode()
    {   DOCS()->scan_update($_POST['scan_id'],array('account_work'=>MEMBER()->id,'status'=>2)) ;
        $this->update_page=1 ;
    }


    function ScanCaptureApply()
     { $rec_scan=DOCS()->get_scan_by_id($_POST['scan_id']) ;
       $options=$_POST ;
       $options['personal_id']=$rec_scan['personal_id'] ;
       if ($rec_scan['doc_id']) $rec_doc=DOCS()->get_doc_by_id($rec_scan['doc_id']) ;
       if (!$rec_scan['doc_type']) $result=array('notife'=>'Не указан тип докумена') ;
       elseif (!$_POST['data_doc']) $result=array('notife'=>'Не указана дата документа') ;
       else
       {$data_doc=($options['data_doc'])? strtotime($options['data_doc']):0 ;
        DOCS()->scan_update($rec_scan['pkey'],array('account_work'=>MEMBER()->id,'data_set'=>time(),'data_doc'=>$data_doc,'status'=>3,'after_block_mo'=>$options['action_after'],'comment'=>$options['comment'])) ;
        // если документ был выдан по мероприятию, необходимо произвести учет документа по правилам мероприятия
        if (isset($rec_doc['source_obj']) and $rec_doc['source_obj']!="") $result=ENGINE()->on_event_obj($rec_doc,'on_scan_doc_apply',$options) ;
        elseif (isset($rec_scan['source_obj']) and $rec_scan['source_obj']!="")  $result=ENGINE()->on_event_obj($rec_scan,'on_scan_doc_apply',$options) ;
        // вызываем стандартный обработчик принятия скана документа
        else $result=DOCS()->on_scan_doc_apply($options) ;
       }



       if ($result['modal_window'])
       {   echo  $result['text'] ;
           $this->add_element('show_modal_window','HTML',array('title'=>$result['modal_window'])) ;
       }
       elseif ($result['notife'])
       {
           $this->add_element('show_notife',$result['notife'],array('color'=>'red')) ;
       }
       // иначе пока раскрываем array('current_window'=>'close','opener_window'=>'reload') ;
       else
       {   if ($_POST['close_page_after_scan_apply']) $this->add_element('JSCODE','<script type="text/javascript">window.opener.location.reload();window.close();</script>') ;
           elseif ($_POST['go_url']) $this->go_url=$_POST['go_url'];
           else if ($_POST['after']=='update_page') $this->update_page=1;
           else $this->update_page=1;
       }

     }


    // 4 - Отклонен
    function ScanCaptureCancel()
    { DOCS()->scan_update($_POST['scan_id'],array('account_work'=>MEMBER()->id,'data_set'=>time(),'status'=>4,'comment'=>$_POST['comment'])) ;
      $this->update_page=1 ;
        if ($_POST['close_page_after_scan_apply']) $this->add_element('JSCODE','<script type="text/javascript">window.opener.location.reload();window.close();</script>') ;
        elseif ($_POST['go_url']) $this->go_url=$_POST['go_url'];
        else if ($_POST['after']=='update_page') $this->update_page=1;
        else $this->update_page=1;
    }


    // окончание распознования. Цель - связать скан с документом, и если не задан сотрудник - то и сотрудником
    function ScanCapture_QRcode_end()
      {  //damp_array($_POST);
         $qrcode=(int)$_POST['qrcode'] ;
         $scan_id=(int)$_POST['scan_id'] ;
         $personal_id=($_POST['personal_id'])? (int)$_POST['personal_id']:0 ;

         $data=['status'=>2, // после окончания распознования статус - в работе
                'doc_id'=>0,
                'error'=>''
               ] ;
         if ($qrcode>0)
         { $data['qrcode']=$qrcode ;
           $rec_doc=DOCS()->get_doc_by_id($qrcode) ;
           if ($rec_doc['pkey'])
           { $this->add_element('show_notife','Результат распознования: '.$qrcode,['color'=>'green']) ;
             if ($scan_id)
             { $data['doc_id']=$rec_doc['pkey'] ;
               $data['doc_type']=$rec_doc['report_code'] ;
               $data['personal_id']=$rec_doc['personal_id'] ;
               // если в параметре $_POST['personal_id'] передае ID сотруднику и документ распознан, то сотрудник документа должен соответствовать сотруднику, в карточке которого загружается скан
               if ($personal_id and $personal_id!=$rec_doc['personal_id'])
               {  $data['error']='Документ скана (ID '.$rec_doc['pkey'].') был сформирован для другого сотрудника, ID '.$rec_doc['personal_id'] ;
                  $data['status']=4 ; // скан отклонен
               }
             }
           }
           else $this->add_element('show_notife','Результат распознования: '.$qrcode.', документ не найден',['color'=>'yellow']) ;
         }
         else
         { $data['qrcode']=-1 ; // qr-код не число, сохраняем -1 как флаг что не уд
           $this->add_element('show_notife','Не удалось распознать QR-код: '.$_POST['qrcode'],['color'=>'red']) ;
         }

         if ($scan_id) DOCS()->scan_update($scan_id,$data) ;
      $this->add_element('update_page',1) ;
//$this->add_element('show_modal_window','HTML',array('title'=>'')) ;
      }


    function ScanCaptureRepeat()
    {  //damp_array($_POST);
       if ($_POST['scan_id'])
       { $data=array('doc_id'=>0,'doc_type'=>'','source_obj'=>'','qrcode'=>0) ;
         if (!$_POST['no_change_personal_id']) $data['personal_id']=0 ;
         DOCS()->scan_update($_POST['scan_id'],$data) ;
         $this->update_page=1 ;
         //  $this->add_element('show_modal_window','HTML',array('title'=>'')) ;
       }
    }

    function search_personal()
    {

        //$this->add_element('show_modal_window','HTML',array('title'=>'')) ;
        ob_start() ;
       //damp_array($_POST,1,-1);

        $cnt_docs=-1 ;
         if ((($_POST['name'] or $_POST['personal_id']) and $_POST['doc_type']) or ($_POST['doc_type'] and $_POST['doc_number']))
         {   ?><form class="sky-form no_box_shadow"><?
              include_once(_DIR_EXT.'/docs/report_docs.php') ;
              $report_obj=new report_docs() ;
              $report_obj->no_view_title=1;
              $report_obj->filter['name']=$_POST['name'];
              if ($_POST['personal_id']) $report_obj->filter['personal_id']=$_POST['personal_id'];
              $report_obj->filter['doc_type']=$_POST['doc_type'];
              $report_obj->filter['doc_number']=$_POST['doc_number'];
              $report_obj->filter['order']='c_data desc';
              ob_start() ;
              $cnt_docs=$report_obj->view_as_HTML(array('check_type'=>'radio','template_name'=>'template_HTML_check')) ;
              $text=ob_get_clean() ;
              if ($cnt_docs) echo $text ;
              ?><div id="panel_buttons"><?
              if ($cnt_docs)
              {  echo '<div style="text-align:center;color:green;font-size:18px;">Укажите документ скана или укажите тип документа для скана</div>' ;
                 ?><button class="button v2" cmd="scan/set_doc_to_scan" scan_id="<?echo $_POST['scan_id']?>">Выбрать отмеченный документ</button><?
              }
              else
              { echo '<div class="alert" style="text-align:center">Сформированных документов типа "'.$_POST['doc_type'].'" у данного сотрудника не найдено</div>' ;
                echo '<div style="text-align:center;color:green;font-size:18px;">Вам необходимо самостоятельно указать тип документа для скана</div>' ;
              }
              ?><button class="button v2" cmd="scan/set_scan_doc_type" scan_id="<?echo $_POST['scan_id']?>" doc_type="<?echo $_POST['doc_type']?>">Задать для скана тип документа "<?echo $_POST['doc_type']?>"</button><?
              ?></div><?

              //else echo '<div class="alert" style="text-align:center;">Документ не найден, будет выполнен поиск по фамилии</div>' ;
              ?></form><br><br><br><?
         }
         //echo '$cnt_docs='.$cnt_docs.'<br>' ;
         //if ($_POST['name'] and (!$_POST['doc_type'] and !$_POST['doc_number'] or !$cnt))
         // если переданы только имя, но не переданы тип и номер документа
         if (!$_POST['personal_id'] and $_POST['name'] and ((!$_POST['doc_type'] and !$_POST['doc_number']) or !$cnt_docs))
         //if (!$_POST['personal_id'] and $_POST['name'])
          {   if ($_POST['doc_type'] and $_POST['doc_number']) echo '<div class="alert" style="text-align:center;">Документ не найден, будет выполнен поиск по фамилии</div>' ;
              ?><form><?
              include_once(_DIR_EXT.'/esmo_setting/report_personals_to_group.php') ;
              $report_obj=new report_personals_to_group() ;
              $report_obj->no_view_title=1;
              $report_obj->filter['name']=$_POST['name'];
              $report_obj->filter['active']=1;
              $report_obj->filter['order']='obj_name';
              $cnt_personals=$report_obj->view_as_HTML(array('check_type'=>'radio','template_name'=>'print_template_HTML_small')) ;
              if ($cnt_personals){?><button class="button v2 left" cmd="scan/set_personal_to_scan" scan_id="<?echo $_POST['scan_id']?>">Выбрать отмеченного сотрудника</button><?}
              ?></form><?
          }
         //if (!$cnt_docs)

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

    }

    function set_personal_to_scan()
    {   $personal_id=0 ;
        if (_sizeof($_POST['_check'])) list($personal_id,$tkey)=explode('.',$_POST['_check'][0]) ;

        if ($personal_id)
        { DOCS()->scan_update($_POST['scan_id'],array('personal_id'=>$personal_id,'status'=>2)) ;
          $this->update_page=1 ;
        }
        else $this->add_element('show_notife','Не выбран сотрудник') ;


    }

    function set_doc_to_scan()
    {   $doc_id=0 ;
        if (_sizeof($_POST['_check'])) list($doc_id,$tkey)=explode('.',$_POST['_check'][0]) ;

        if ($doc_id)
        { $rec_doc=DOCS()->get_doc_by_id($doc_id) ;
          $data=['doc_id'=>$doc_id,
                 'doc_type'=>$rec_doc['report_code'],
                 'personal_id'=>$rec_doc['personal_id'],
                 'status'=>2
                ] ;

            if ($rec_doc['report_code']) switch($rec_doc['report_code'])
            {
                case 'napravlenie': $data['source_obj']='events_docs/i_event_docs' ; break ; // мероприятие - направление по АГ
                case 'zakluchenie': $data['source_obj']='esmo_magnit_pmo/i_event_pmo' ; break ; // мероприятие - ПМО
                case 'napravlenie_pmo': $data['source_obj']='esmo_magnit_pmo/i_event_pmo' ; break ; // мероприятие - ПМО
                default:                $data['source_obj']='' ;
            }

          if ($rec_doc['pkey']) DOCS()->scan_update($_POST['scan_id'],$data) ;
          $this->update_page=1 ;
        }
        else $this->add_element('show_notife','Не выбран документ') ;
    }

    // только задание типа документа
    function set_scan_doc_type()
    {   //damp_array($_POST);
        $data=[] ;
        if ($_POST['doc_type']) $data['doc_type']=$_POST['doc_type'] ;
        //if ($_POST['data_doc']) $data['data_doc']=strtotime($_POST['data_doc']) ;
        if ($_POST['doc_type']) switch($_POST['doc_type'])
        {
            case 'napravlenie': $data['source_obj']='events_docs/i_event_docs' ; break ; // мероприятие - направление по АГ
            case 'zakluchenie': $data['source_obj']='esmo_magnit_pmo/i_event_pmo' ; break ; // мероприятие - ПМО
            case 'napravlenie_pmo': $data['source_obj']='esmo_magnit_pmo/i_event_pmo' ; break ; // мероприятие - ПМО
            default:                $data['source_obj']='' ;
        }

        if (_sizeof($data))
        { update_rec_in_table('obj_site_scan',$data,'pkey='.$_POST['scan_id']) ;
          $this->update_page=1 ;
        }
        else $this->add_element('show_notife','Не выбран тип документа') ;
        //$this->add_element('show_modal_window','HTML',array('title'=>'Загрузка скана документа','width'=>'800px'));
    }

    // сбрасываем сотрудника - и соответственно данные по документу скана если документ привязан к сотруднику
    function scan_personal_clear()
    {
        if ($_POST['scan_id'])
        { if ($_POST['doc_id']) { $data=array('personal_id'=>0,'doc_id'=>0,'doc_type'=>0,'data_doc'=>0,'source_obj'=>'') ; }
          $data['personal_id']=0 ;
          DOCS()->scan_update($_POST['scan_id'],$data) ;
          $this->update_page=1 ;
        }
    }

    // сбрасываем сотрудника - и соответственно данные по документу скана
    function scan_doc_clear()
    {
        if ($_POST['scan_id'])
        { DOCS()->scan_update($_POST['scan_id'],array('doc_id'=>0,'doc_type'=>0,'data_doc'=>0,'source_obj'=>'')) ;
          $this->update_page=1 ;
        }
    }






}
