<?
include_once(_DIR_EXT.'/esmo_gateway/i_personal_import.php') ;
include_once(_DIR_EXT.'/HTML/c_page_XML_AJAX.php') ;
class c_page_ajax extends c_page_XML_AJAX
{
    function send_post_data()
    {  ob_start() ;
        $arr_url=parse_url($_POST['server_url']) ;
        $domain=(function_exists('AD'))? 'localhost':_MAIN_DOMAIN ;
        $comment=(function_exists('AD'))? '<div class=red>обращение к localhost из-за модуля AD</div>':'' ;
        $url=_MAIN_PROTOCOL.$domain.$arr_url['path'] ;

        $result=IO()->doPut_v2(_MAIN_PROTOCOL,$domain,$arr_url['path'],$arr_url['query'],$_POST['cont'],array('timeout'=>10)) ;
      ?><h2>Отправка XML-пакета на шлюз</h2>
        <div id="check_cars_export"><form>
         <table>
             <!--<tr><td>IP отправителя:</td><td><?echo $_POST['client_ip']?></td></tr>-->
             <tr><td>URL шлюза:</td><td><?echo $url.' '.$comment?></td></tr>
             <!--<tr><td>POST DATA:</td><td><textarea class="xml_data" name="cont"><?echo $_POST['cont']?></textarea></td></tr>-->
            <tr><td>Статус ответа:</td><td><?echo $result['status']?></td></tr>
            <tr><td>Содержимое ответа:</td><td><textarea class="xml_data_small" name="cont"><?echo $result['content']?></textarea></td></tr>
         </table>
         </form>
       </div><div id="panel_debug"></div>
       <style type="text/css">
         div#check_cars_export{}
         div#check_cars_export input.server_url{width:700px;font-size:12px;}
         div#check_cars_export textarea.xml_data{width:700px;height:300px;font-size:12px;}
         div#check_cars_export textarea.xml_data_small{width:700px;height:100px;font-size:12px;}
       </style><?

        $res=explode("\n",$result['content']) ;  $arr_result=array() ;
        if (_sizeof($res)) foreach($res as $str)
        { $arr=explode('=',$str)  ;
          if ($arr[0] and $arr[1]) $arr_result[$arr[0]]=$arr[1] ;
        }

        //damp_array($result,1,-1) ;
        if ($arr_result['session_uid'])
        {   ?><h2>Ход импорта</h2><?
            $cont=file_get_contents(_DIR_TO_ROOT.'/logs/import_trace_'.$arr_result['session_uid'].'.html') ;
            echo $cont ;
        }

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

    function emulate_XML_1C_import()
    {
        //damp_array($_POST,1,-1) ;
        //$this->add_element('show_modal_window','HTML',array('title'=>'Регистрация сотрудника на инструктаж','width'=>'800px')) ;
        $arr_name=explode(' ',$_POST['filter']['name'])  ;
        $uid1=($_POST['filter']['uid1'])? $_POST['filter']['uid1']:ENGINE()->generate_UID() ;
        // отправлям информацию только если активен или уволен
        if ($_POST['filter']['status1']==1 or $_POST['filter']['status1']==2)
        // информация по основному месту работы
        $arr[]='<InformationRegisterRecordSet.ТекущиеКадровыеДанныеСотрудников>
 			<Ref>3f1e27b4-b26c-11e7-8105-5cf3fc374db1</Ref>
 			<Сотрудник>'.$uid1.'</Сотрудник>
 			<ТабельныйНомер>TN00-00035</ТабельныйНомер>
 			<ФизическоеЛицо>'.$_POST['filter']['person_uid'].'</ФизическоеЛицо>
 			<КодФЛ>00-0000112</КодФЛ>
 			<ДатаРождения>'.date('Y-m-d',strtotime($_POST['filter']['dr'])).'T00:00:00</ДатаРождения>
 			<Пол>'.(($_POST['filter']['pol'])? 'Женский':'Мужской').'</Пол>
 			<Фамилия>'.$arr_name[0].'</Фамилия>
 			<Имя>'.$arr_name[1].'</Имя>
 			<Отчество>'.$arr_name[2].'</Отчество>
 			<Подразделение>a523d39f-f737-11e6-80cd-42f2e9dc7849</Подразделение>
 			<ПодразделениеНомер>K9CN-0020</ПодразделениеНомер>
 			<ПодразделениеНаименование>'.$_POST['filter']['otdel_id1'].'</ПодразделениеНаименование>
 			<Организация>'.PERSONAL()->get_org_names_by_ids($_POST['filter']['org_id1']).'</Организация>
 			<ДолжностьНаименование>'._IL('IL_works')->recs[$_POST['filter']['working1']]['obj_name'].'</ДолжностьНаименование>
 			<ДатаПриема>2017-10-15T00:00:00</ДатаПриема>
 			<ДатаУвольнения>'.(($_POST['filter']['status1']==2)? date('Y-m-d').'T00:00:00':'0001-01-01T00:00:00').'</ДатаУвольнения>
 			<ВидЗанятости>ОсновноеМестоРаботы</ВидЗанятости>
 			<Состояние>Работа</Состояние>
 		</InformationRegisterRecordSet.ТекущиеКадровыеДанныеСотрудников>' ;
        // информация по совмещению
        $uid2=($_POST['filter']['uid2'])? $_POST['filter']['uid2']:ENGINE()->generate_UID() ;
        if ($_POST['filter']['status2']==1 or $_POST['filter']['status2']==2)
        $arr[]='<InformationRegisterRecordSet.ТекущиеКадровыеДанныеСотрудников>
 			<Ref>3f1e27b4-b26c-11e7-8105-5cf3fc374db1</Ref>
 			<Сотрудник>'.$uid2.'</Сотрудник>
 			<ТабельныйНомер>TN00-00035</ТабельныйНомер>
 			<ФизическоеЛицо>'.$_POST['filter']['person_uid'].'</ФизическоеЛицо>
 			<КодФЛ>00-0000112</КодФЛ>
 			<ДатаРождения>'.date('Y-m-d',strtotime($_POST['filter']['dr'])).'T00:00:00</ДатаРождения>
 			<Пол>'.(($_POST['filter']['pol'])? 'Женский':'Мужской').'</Пол>
 			<Фамилия>'.$arr_name[0].'</Фамилия>
 			<Имя>'.$arr_name[1].'</Имя>
 			<Отчество>'.$arr_name[2].'</Отчество>
 			<Подразделение>a523d39f-f737-11e6-80cd-42f2e9dc7849</Подразделение>
 			<ПодразделениеНомер>K9CN-0020</ПодразделениеНомер>
 			<ПодразделениеНаименование>'.$_POST['filter']['otdel_id2'].'</ПодразделениеНаименование>
 			<Организация>'.PERSONAL()->get_org_names_by_ids($_POST['filter']['org_id2']).'</Организация>
 			<ДолжностьНаименование>'._IL('IL_works')->recs[$_POST['filter']['working2']]['obj_name'].'</ДолжностьНаименование>
 			<ДатаПриема>2017-10-15T00:00:00</ДатаПриема>
 			<ДатаУвольнения>'.(($_POST['filter']['status2']==2)? date('Y-m-d').'T00:00:00':'0001-01-01T00:00:00').'</ДатаУвольнения>
 			<ВидЗанятости>Совмещение</ВидЗанятости>
 			<Состояние>Работа</Состояние>
 		</InformationRegisterRecordSet.ТекущиеКадровыеДанныеСотрудников>' ;
         $XML_cont='<?xml version="1.0" encoding="UTF-8"?><MessageData><MessageNumber>15</MessageNumber><Data>'.implode('',$arr).'</Data></MessageData>' ;
         $xml_fname='XML_test_import_'.MEMBER()->id.'_'.time().'.xml' ;
         file_put_contents(_TEMP_DIR.'/'.$xml_fname,$XML_cont) ;
         // передаем управление на  c_esmo_gateway_upload_personals_test.php->check_import_persons_from_SOAP_local_check
         $this->go_url='/cab/esmo_gateway/upload/personals/test/[data_source='.$_POST['filter']['data_source'].',data_type='.$_POST['filter']['data_type'].',read_only='.$_POST['filter']['read_only'].',personal_id='.$_POST['filter']['person_id'].',xml_fname='.$xml_fname.']/' ;
    }

    function close_fired_pause()
    {  $recs=execSQL('select pkey,is_main,is_second from obj_site_workers where clss=212 and personal_id='.$_POST['personal_id'].' and enabled=1 and fired_data_pause>0') ;
        if (_sizeof($recs)) foreach($recs as $rec)
        {  echo 'Увольняем сотрудника по '.(($rec['is_main'])? 'основной должности':'совмещаемой должности').'<br>' ;
           PERSONAL()->worker_save($rec['pkey'],array('fired'=>1,'close_fired_pause'=>1)) ;
        } else echo 'У сотрудника нет должностей с отложенным увольнением<br>' ;

        PERSONAL_IMPORT()->sync_workings_persons() ;
        $this->add_element('show_modal_window','HTML',array('title'=>'Завершение отложенного увольнения','after_close_update_page'=>1)) ;
        $this->go_url='/cab/esmo_magnit/setting/integration/tests/[action=check_import_persons_from_SOAP_local_check,personal_id='.$_POST['personal_id'].']/' ;
    }

    function remove_work_main()
    {  execSQL_update('delete from obj_site_workers where clss=212 and personal_id='.$_POST['personal_id'].' and is_main=1') ;
       execSQL_update('delete from obj_site_workers where clss=212 and personal_id='.$_POST['personal_id'].' and is_main=0 and is_second=0') ;
       PERSONAL_IMPORT()->sync_workings_persons() ;
       $this->go_url='/cab/esmo_magnit/setting/integration/tests/[action=check_import_persons_from_SOAP_local_check,personal_id='.$_POST['personal_id'].']/' ;
    }

    function remove_work_second()
    {  execSQL_update('delete from obj_site_workers where clss=212 and personal_id='.$_POST['personal_id'].' and is_second=1') ;
       PERSONAL_IMPORT()->sync_workings_persons() ;
       $this->go_url='/cab/esmo_magnit/setting/integration/tests/[action=check_import_persons_from_SOAP_local_check,personal_id='.$_POST['personal_id'].']/' ;
    }

    function set_fields_XLS_ESMO()
    {  $ini_setting_fname='import_XLS_setting_'.MEMBER()->id.'.yaml' ;
       $setting=SETUP()->load_ini_setting('/ini/'.$ini_setting_fname)  ;
       $setting['set'][$_POST['el_name']]=$_POST['el_value'] ;
       SETUP()->save_ini_setting('/ini/'.$ini_setting_fname,$setting)  ;
       // проверяем заполнение необходных полей и показываем/скрываем кнопку импорта
       $cnt_uploads=($setting['temp_table'])? execSQL_value('select count(*) from '.$setting['temp_table']):0 ;
       ob_start() ;
       if (_sizeof($setting['set']) and array_search('uid',$setting['set'])!==false and $cnt_uploads)
       {   ?> <form><button class="button v1" style="float:none;display:inline;" cmd="import_from_temp_XLS">Импортировать данные в базу</button>
                    &nbsp;&nbsp;&nbsp;&nbsp;
                    <input type="checkbox" name=full_update value="1"> Полная выгрузка
                    <input type="checkbox" name=background value="1"> Фоновый режим
              </form>
           <?
       }
       else
       {
           ?><div class="alert">Для импорта данных необходимо сопоставить поля UID</div><?
       }
       $this->add_element('panel_step3.HTML',ob_get_clean()) ;



       $this->add_element('show_notife','Сохранено',array('color'=>'green')) ;
    }

    function clear_ini_XLS_ESMO()
    {   $ini_setting_fname='import_XLS_setting_'.MEMBER()->id.'.yaml' ;
        unlink(_DIR_TO_ROOT.'/ini/'.$ini_setting_fname) ;
        if (file_exists(_DIR_TO_ROOT.'/ini/'.$ini_setting_fname))
        {   echo '<div class=center>' ;
            echo 'Не удалось удалить файл конфигурации импорта XLS. Обратитесь за помощью к системному админстратору.<br><br>' ;
            echo 'Расположение файла: <strong>'._DIR_TO_ROOT.'/ini/'.$ini_setting_fname.'</strong><br><br>' ;
            echo '<button class="cancel">Закрыть</button>' ;
            echo '</div>' ;
            $this->add_element('show_modal_window','HTML',array('title'=>'Удаление файла настроек')) ;
        }
        else $this->update_page=1 ;
    }

    function reset_mo_event_send_status()
    {
        echo 'Отправка всех МО, которые не были отправлены на текущий момент, будет отменена<br>' ;
        echo 'Будут отправляться только МО, произведенные после данной операции<br>' ;
        ?><button class="button cancel">Отмена</button><?
        ?><button class="button v2" cmd="esmo_gateway/reset_mo_event_send_status_apply">Выполнить</button><?
        $this->add_element('show_modal_window','HTML',array('title'=>'Сброс счетчика статуса отправки МО')) ;
    }

    function reset_mo_event_send_status_apply()
    {   ob_start() ;
        ?><strong>Таблица МО </strong><?
        execSQL_update('update obj_site_mo_session set event_send=-1 where event_send=0',['log_result'=>1]) ;
        ?><br><strong>Оперативная таблица МО </strong><?
        execSQL_update('update obj_site_mo_session_now set event_send=-1 where event_send=0',['log_result'=>1]) ;
        $text=ob_get_clean() ;
        echo $text ;
        LOGS()->reg_log('Сброс счетчика статуса отправки',$text) ;
        ?><button class="button cancel">Закрыть</button><?
        $this->add_element('show_modal_window','HTML',array('title'=>'Сброс счетчика статуса отправки МО')) ;

    }
















}
